Cytopia icon indicating copy to clipboard operation
Cytopia copied to clipboard

Linking CXX executable ../Cytopia fails on Debian 10 GNU/Linux and Ubuntu WSL due to conan sdl2 not finding libsdlio

Open omsai opened this issue 3 years ago • 5 comments

Steps to reproduce

  1. Download or git clone version 1c150858dd1a908eafa9314dbb0b27bd8edb5279 into a directory assumed to be ~/src/Cytopia
  2. Create a fresh build directory and configure it with:
    SUDO_ASKPASS=/usr/bin/ssh-askpass cmake ~/src/Cytopia/
    
  3. Run make

Result

Build fails with:

[ 40%] Building CXX object src/CMakeFiles/Cytopia.dir/util/desktop/Filesystem.cxx.o
[ 41%] Building CXX object src/CMakeFiles/Cytopia.dir/engine/audio/Soundtrack.cxx.o
[ 41%] Building CXX object src/CMakeFiles/Cytopia.dir/services/AudioMixer.cxx.o
[ 42%] Building CXX object src/CMakeFiles/Cytopia.dir/__/external/as_add_on/scriptbuilder/scriptbuilder.cpp.o
[ 42%] Building CXX object src/CMakeFiles/Cytopia.dir/__/external/as_add_on/scriptstdstring/scriptstdstring.cpp.o
[ 43%] Building CXX object src/CMakeFiles/Cytopia.dir/Scripting/ScriptEngine.cxx.o
[ 44%] Linking CXX executable ../Cytopia
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/lib/libSDL2.a(SDL_sndioaudio.c.o): in function `load_sndio_syms':
/home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:95: undefined reference to `sio_open'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:96: undefined reference to `sio_close'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:97: undefined reference to `sio_setpar'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:98: undefined reference to `sio_getpar'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:99: undefined reference to `sio_start'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:100: undefined reference to `sio_stop'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:101: undefined reference to `sio_read'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:102: undefined reference to `sio_write'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:103: undefined reference to `sio_nfds'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:104: undefined reference to `sio_pollfd'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:105: undefined reference to `sio_revents'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:106: undefined reference to `sio_eof'
/usr/bin/ld: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/build/4bc2407ba09adb83863bd29bb122bfdb75e17b97/source_subfolder/src/audio/sndio/SDL_sndioaudio.c:107: undefined reference to `sio_initpar'
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/Cytopia.dir/build.make:1235: Cytopia] Error 1
make[1]: *** [CMakeFiles/Makefile2:1026: src/CMakeFiles/Cytopia.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

More information

The build error shows that conan's libSDL2 fails to link to libsndio. This may be due to conan's packaging of sdl2 itself or its dependencies, because libsndio-dev is locally installed and linking to it the full path /usr/lib/x86_64-linux-gnu/libsndio.so is preferred by conan by pkg-config sdl2.pc and sdl2-config:

$ apt search libsndio-dev  # system wide sndio
Sorting... Done
Full Text Search... Done
libsndio-dev/amber,now 1.5.0-3 amd64 [installed,automatic]
  Small audio and MIDI framework from OpenBSD, development files
$ sdl2-config --static-libs  # system wide use of sndio
-lSDL2 -Wl,--no-undefined -lm -ldl -lasound -lm -ldl -lpthread -lpulse-simple -lpulse -lsndio -lX11 -lXext -lXcursor -lXinerama -lXi -lXrandr -lXss -lXxf86vm -lwayland-egl -lwayland-client -lwayland-cursor -lxkbcommon -lpthread -lrt
$ find ~/.conan/ -name sdl2-config -executable  # conan's bundled sdl2-config
/home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/bin/sdl2-config
$ find ~/.conan/ -name sdl2-config -executable -exec {} --static-libs \;  # conan uses system sndio, specifically /usr/lib/x86_64-linux-gnu/libsndio.so
-L/home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/lib -Wl,-rpath,/home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/lib -Wl,--enable-new-dtags -lglib-2.0 -lgobject-2.0 -lgio-2.0 -libus-1.0 -ldbus-1 -l/usr/lib/x86_64-linux-gnu/libsndio.so -ldl -lm -Wl,--no-undefined -pthread -lSDL2
$ cat /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/lib/pkgconfig/sdl2.pc
# sdl pkg-config source file

prefix=/home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: sdl2
Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
Version: 2.0.9
Requires:
Conflicts:
Libs: -L${libdir} -Wl,-rpath,${libdir} -Wl,--enable-new-dtags -pthread -lSDL2 
Libs.private: -lglib-2.0 -lgobject-2.0 -lgio-2.0 -libus-1.0 -ldbus-1 -l/usr/lib/x86_64-linux-gnu/libsndio.so -ldl -lm  -Wl,--no-undefined -pthread -lSDL2 
Cflags: -I${includedir}/SDL2  -D_REENTRANT
$ readelf -a /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/lib/libSDL2.a | grep sio_
000000000007  00290000002a R_X86_64_REX_GOTP 0000000000000000 sio_open - 4
000000000015  002a0000002a R_X86_64_REX_GOTP 0000000000000000 sio_close - 4
000000000023  002b0000002a R_X86_64_REX_GOTP 0000000000000000 sio_setpar - 4
000000000031  002c0000002a R_X86_64_REX_GOTP 0000000000000000 sio_getpar - 4
00000000003f  002d0000002a R_X86_64_REX_GOTP 0000000000000000 sio_start - 4
00000000004d  002e0000002a R_X86_64_REX_GOTP 0000000000000000 sio_stop - 4
00000000005b  002f0000002a R_X86_64_REX_GOTP 0000000000000000 sio_read - 4
000000000069  00300000002a R_X86_64_REX_GOTP 0000000000000000 sio_write - 4
000000000077  00310000002a R_X86_64_REX_GOTP 0000000000000000 sio_nfds - 4
000000000085  00320000002a R_X86_64_REX_GOTP 0000000000000000 sio_pollfd - 4
000000000093  00330000002a R_X86_64_REX_GOTP 0000000000000000 sio_revents - 4
0000000000a1  00340000002a R_X86_64_REX_GOTP 0000000000000000 sio_eof - 4
0000000000af  00350000002a R_X86_64_REX_GOTP 0000000000000000 sio_initpar - 4
  5: 0000000000000000     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_open
  6: 0000000000000008     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_close
  7: 0000000000000010     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_setpar
  8: 0000000000000018     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_getpar
  9: 0000000000000020     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_start
 10: 0000000000000028     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_stop
 11: 0000000000000030     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_read
 12: 0000000000000038     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_write
 13: 0000000000000040     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_nfds
 14: 0000000000000048     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_pollfd
 15: 0000000000000050     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_revents
 16: 0000000000000058     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_eof
 17: 0000000000000060     8 OBJECT  LOCAL  DEFAULT    4 SNDIO_sio_initpar
 41: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_open
 42: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_close
 43: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_setpar
 44: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_getpar
 45: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_start
 46: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_stop
 47: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_read
 48: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_write
 49: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_nfds
 50: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_pollfd
 51: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_revents
 52: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_eof
 53: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND sio_initpar

So it's not clear why conan's libSDL2.a fails to link to sndio.

omsai avatar Jan 31 '21 14:01 omsai

I think that at this point, we should simply disable it. We are not using SDL for playing audio anyway. As far as I know, sndio is also used by openal, so we still support but just not through SDL. It seems that other people have encountered this issue before:

  • with openal
  • with sdl2 1 2 As you said it's likely to be an issue with the conanfile that we are using from bincrafters. My guess is adding -DSNDIO_SHARED=ON as cmake option for debian/ubuntu builds would resolve this issue. However I do not know if the conanfile we are using is even being maintained anymore (I couldn't find any tags or branches in the directory). This might be a hint that we should fork it and maintain it ourselves in conan-packages, but if we are able to just disable it for now, this is too low priority

ghost avatar Jan 31 '21 17:01 ghost

For what it's worth, it looks like CMake doesn't recognize that particular SNDIO_SHARED option indicated by "Manually-specified variables were not used by the project" in the output below, and so the build still fails in the same way. Though quite possibly I'm specifying the option at the wrong place and it's not propagating to the conan subproject?

$ SUDO_ASKPASS=/usr/bin/ssh-askpass cmake -DSNDIO_SHARED=ON ../Cytopia-1c150858dd1a908eafa9314dbb0b27bd8edb5279/
-- The CXX compiler identification is GNU 8.3.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- [pmm] Found Conan: /home/omsai/.local/bin/./conan
-- [pmm] [warn   ] Conan version 1.33.0 is newer than the maximum supported version 1.30.99
-- [pmm] Conan version: 1.33.0
-- [pmm] WARNING: CMAKE_BUILD_TYPE was not set explicitly. We'll install your dependencies as 'Debug'
-- [pmm] Installing Conan requirements from /tmp/Cytopia-1c150858dd1a908eafa9314dbb0b27bd8edb5279/conanfile.txt
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Debug
compiler=gcc
compiler.libcxx=libstdc++11
compiler.version=8
os=Linux
os_build=Linux
[options]
[build_requires]
[env]
CXX=/usr/bin/c++
conanfile.txt: Installing package
Requirements
    AngelScript/2.33@anotherfoxguy/stable from 'ror-dependencies' - Cache
    Catch2/2.9.2@catchorg/stable from 'conan-center' - Cache
    bzip2/1.0.8@conan/stable from 'conan-center' - Cache
    freetype/2.10.0@bincrafters/stable from 'conan-center' - Cache
    jbig/20160605 from 'conan-center' - Cache
    libalsa/1.2.4 from 'conan-center' - Cache
    libjpeg/9c from 'conan-center' - Cache
    libnoise/1.0.1@anotherfoxguy/stable from 'AFG' - Cache
    libpng/1.6.37 from 'conan-center' - Cache
    libtiff/4.0.9 from 'conan-center' - Cache
    libwebp/1.0.3 from 'conan-center' - Cache
    ogg/1.3.4 from 'conan-center' - Cache
    openal/1.21.0 from 'conan-center' - Cache
    sdl2/2.0.9@bincrafters/stable from 'bincrafters' - Cache
    sdl2_image/2.0.5@bincrafters/stable from 'bincrafters' - Cache
    sdl2_ttf/2.0.15@bincrafters/stable from 'bincrafters' - Cache
    vorbis/1.3.6@bincrafters/stable from 'conan-center' - Cache
    xz_utils/5.2.5 from 'conan-center' - Cache
    zlib/1.2.11 from 'conan-center' - Cache
Packages
    AngelScript/2.33@anotherfoxguy/stable:af0fbc5eb7376a4b9749db37a5c402b36d452909 - Cache
    Catch2/2.9.2@catchorg/stable:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache
    bzip2/1.0.8@conan/stable:d666801fbcdc3fd37cf8b2a827d72e84b1878ff5 - Cache
    freetype/2.10.0@bincrafters/stable:ff441545227373e6cdb1ad421ac0c816c2580ee5 - Cache
    jbig/20160605:c153c14be825fc968669d2c91e77cfef164395a2 - Cache
    libalsa/1.2.4:7f9261d3c826036e159503334080dec93f6f0bcb - Cache
    libjpeg/9c:761432f3453a17c960259b5b2605153e3bcffd7d - Cache
    libnoise/1.0.1@anotherfoxguy/stable:af0fbc5eb7376a4b9749db37a5c402b36d452909 - Cache
    libpng/1.6.37:3cea63dcd75faf305bb387fd56132f0eabf927e4 - Cache
    libtiff/4.0.9:6487f05c53bb018e20444f81b5b97c1cf9116c7c - Cache
    libwebp/1.0.3:9cb84c66d3f950b57b3b86cf56808eb02a5f27d8 - Cache
    ogg/1.3.4:761432f3453a17c960259b5b2605153e3bcffd7d - Cache
    openal/1.21.0:075f11f99e524884a68ab3dce8be7580c3f78a7e - Cache
    sdl2/2.0.9@bincrafters/stable:4bc2407ba09adb83863bd29bb122bfdb75e17b97 - Cache
    sdl2_image/2.0.5@bincrafters/stable:109a0a6c226a880e31f8f8b3426c553f398291a9 - Cache
    sdl2_ttf/2.0.15@bincrafters/stable:493101f71c56baf5f887b20b856bcc2fcfac3bff - Cache
    vorbis/1.3.6@bincrafters/stable:63a5297238197cc6005c7e824fd0974bf5a976d3 - Cache
    xz_utils/5.2.5:761432f3453a17c960259b5b2605153e3bcffd7d - Cache
    zlib/1.2.11:761432f3453a17c960259b5b2605153e3bcffd7d - Cache

Installing (downloading, building) binaries...
AngelScript/2.33@anotherfoxguy/stable: Already installed!
Catch2/2.9.2@catchorg/stable: Already installed!
bzip2/1.0.8@conan/stable: Already installed!
jbig/20160605: Already installed!
jbig/20160605: Appending PATH environment variable: /home/omsai/.conan/data/jbig/20160605/_/_/package/c153c14be825fc968669d2c91e77cfef164395a2/bin
libalsa/1.2.4: Already installed!
libjpeg/9c: Already installed!
libnoise/1.0.1@anotherfoxguy/stable: Already installed!
libwebp/1.0.3: Already installed!
ogg/1.3.4: Already installed!
sdl2/2.0.9@bincrafters/stable: Already installed!
sdl2/2.0.9@bincrafters/stable: Creating SDL2_CONFIG environment variable: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/bin/sdl2-config
sdl2/2.0.9@bincrafters/stable: Creating SDL_CONFIG environment variable: /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/bin/sdl2-config
xz_utils/5.2.5: Already installed!
zlib/1.2.11: Already installed!
libpng/1.6.37: Already installed!
libtiff/4.0.9: Already installed!
openal/1.21.0: Already installed!
vorbis/1.3.6@bincrafters/stable: Already installed!
freetype/2.10.0@bincrafters/stable: Already installed!
sdl2_image/2.0.5@bincrafters/stable: Already installed!
sdl2_ttf/2.0.15@bincrafters/stable: Already installed!
conanfile.txt: Generator txt created conanbuildinfo.txt
conanfile.txt: Generator cmake created conanbuildinfo.cmake
conanfile.txt: Generated conaninfo.txt
conanfile.txt: Generated graphinfo
WARN: sdl2_ttf/2.0.15@bincrafters/stable: requirement freetype/2.9.1@bincrafters/stable overridden by your conanfile to freetype/2.10.0@bincrafters/stable 
WARN: freetype/2.10.0@bincrafters/stable: requirement libpng/1.6.37@bincrafters/stable overridden by sdl2_ttf/2.0.15@bincrafters/stable to libpng/1.6.37 
WARN: freetype/2.10.0@bincrafters/stable: requirement zlib/1.2.11@conan/stable overridden by sdl2_ttf/2.0.15@bincrafters/stable to zlib/1.2.11 
WARN: sdl2_image/2.0.5@bincrafters/stable: requirement sdl2/2.0.10@bincrafters/stable overridden by your conanfile to sdl2/2.0.9@bincrafters/stable 
WARN: libtiff/4.0.9: requirement libjpeg/9d overridden by sdl2_image/2.0.5@bincrafters/stable to libjpeg/9c 
openal/1.21.0: WARN: Unknown compiler. Assuming your compiler supports c++14
-- Library angelscript found /home/omsai/.conan/data/AngelScript/2.33/anotherfoxguy/stable/package/af0fbc5eb7376a4b9749db37a5c402b36d452909/lib/libangelscript.a
-- Library SDL2_ttf found /home/omsai/.conan/data/sdl2_ttf/2.0.15/bincrafters/stable/package/493101f71c56baf5f887b20b856bcc2fcfac3bff/lib/libSDL2_ttf.a
-- Library SDL2_image found /home/omsai/.conan/data/sdl2_image/2.0.5/bincrafters/stable/package/109a0a6c226a880e31f8f8b3426c553f398291a9/lib/libSDL2_image.a
-- Library vorbisfile found /home/omsai/.conan/data/vorbis/1.3.6/bincrafters/stable/package/63a5297238197cc6005c7e824fd0974bf5a976d3/lib/libvorbisfile.a
-- Library vorbisenc found /home/omsai/.conan/data/vorbis/1.3.6/bincrafters/stable/package/63a5297238197cc6005c7e824fd0974bf5a976d3/lib/libvorbisenc.a
-- Library vorbis found /home/omsai/.conan/data/vorbis/1.3.6/bincrafters/stable/package/63a5297238197cc6005c7e824fd0974bf5a976d3/lib/libvorbis.a
-- Library m not found in package, might be system one
-- Library noise found /home/omsai/.conan/data/libnoise/1.0.1/anotherfoxguy/stable/package/af0fbc5eb7376a4b9749db37a5c402b36d452909/lib/libnoise.a
-- Library noiseutils found /home/omsai/.conan/data/libnoise/1.0.1/anotherfoxguy/stable/package/af0fbc5eb7376a4b9749db37a5c402b36d452909/lib/libnoiseutils.a
-- Library openal found /home/omsai/.conan/data/openal/1.21.0/_/_/package/075f11f99e524884a68ab3dce8be7580c3f78a7e/lib/libopenal.a
-- Library SDL2 found /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/lib/libSDL2.a
-- Library SDL2main found /home/omsai/.conan/data/sdl2/2.0.9/bincrafters/stable/package/4bc2407ba09adb83863bd29bb122bfdb75e17b97/lib/libSDL2main.a
-- Library dl not found in package, might be system one
-- Library rt not found in package, might be system one
-- Library pthread not found in package, might be system one
-- Library asound not found in package, might be system one
-- Library m not found in package, might be system one
-- Library dl not found in package, might be system one
-- Library pthread not found in package, might be system one
-- Library rt not found in package, might be system one
-- Library jack not found in package, might be system one
-- Library pthread not found in package, might be system one
-- Library pulse not found in package, might be system one
-- Library freetyped found /home/omsai/.conan/data/freetype/2.10.0/bincrafters/stable/package/ff441545227373e6cdb1ad421ac0c816c2580ee5/lib/libfreetyped.a
-- Library m not found in package, might be system one
-- Library tiffxx found /home/omsai/.conan/data/libtiff/4.0.9/_/_/package/6487f05c53bb018e20444f81b5b97c1cf9116c7c/lib/libtiffxx.a
-- Library tiff found /home/omsai/.conan/data/libtiff/4.0.9/_/_/package/6487f05c53bb018e20444f81b5b97c1cf9116c7c/lib/libtiff.a
-- Library webpdecoder found /home/omsai/.conan/data/libwebp/1.0.3/_/_/package/9cb84c66d3f950b57b3b86cf56808eb02a5f27d8/lib/libwebpdecoder.a
-- Library webpdemux found /home/omsai/.conan/data/libwebp/1.0.3/_/_/package/9cb84c66d3f950b57b3b86cf56808eb02a5f27d8/lib/libwebpdemux.a
-- Library webpmux found /home/omsai/.conan/data/libwebp/1.0.3/_/_/package/9cb84c66d3f950b57b3b86cf56808eb02a5f27d8/lib/libwebpmux.a
-- Library webp found /home/omsai/.conan/data/libwebp/1.0.3/_/_/package/9cb84c66d3f950b57b3b86cf56808eb02a5f27d8/lib/libwebp.a
-- Library ogg found /home/omsai/.conan/data/ogg/1.3.4/_/_/package/761432f3453a17c960259b5b2605153e3bcffd7d/lib/libogg.a
-- Library asound found /home/omsai/.conan/data/libalsa/1.2.4/_/_/package/7f9261d3c826036e159503334080dec93f6f0bcb/lib/libasound.a
-- Library png16d found /home/omsai/.conan/data/libpng/1.6.37/_/_/package/3cea63dcd75faf305bb387fd56132f0eabf927e4/lib/libpng16d.a
-- Library bz2 found /home/omsai/.conan/data/bzip2/1.0.8/conan/stable/package/d666801fbcdc3fd37cf8b2a827d72e84b1878ff5/lib/libbz2.a
-- Library lzma found /home/omsai/.conan/data/xz_utils/5.2.5/_/_/package/761432f3453a17c960259b5b2605153e3bcffd7d/lib/liblzma.a
-- Library jpeg found /home/omsai/.conan/data/libjpeg/9c/_/_/package/761432f3453a17c960259b5b2605153e3bcffd7d/lib/libjpeg.a
-- Library jbig found /home/omsai/.conan/data/jbig/20160605/_/_/package/c153c14be825fc968669d2c91e77cfef164395a2/lib/libjbig.a
-- Library z found /home/omsai/.conan/data/zlib/1.2.11/_/_/package/761432f3453a17c960259b5b2605153e3bcffd7d/lib/libz.a
-- Building Project:  Cytopia
-- Build configuration: 
-- Downloading catch.hpp from https://github.com/catchorg/Catch2/
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- The following REQUIRED packages have been found:

 * Catch2

-- The following OPTIONAL packages have not been found:

 * Doxygen

-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    SNDIO_SHARED


-- Build files have been written to: /tmp/build-cytopia

Dumping all the variables:

$ cmake -LAH ../Cytopia-1c150858dd1a908eafa9314dbb0b27bd8edb5279
...
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/build-cytopia
-- Cache values
// Crossbuild to Android
BUILD_ANDROID:BOOL=OFF

// Build Cytopia Tests
BUILD_TEST:BOOL=ON

// Build the testing tree.
BUILD_TESTING:BOOL=ON

// Path to a program.
BZRCOMMAND:FILEPATH=BZRCOMMAND-NOTFOUND

// Path to a program.
CCACHE_PROGRAM:FILEPATH=CCACHE_PROGRAM-NOTFOUND

// Path to a program.
CMAKE_AR:FILEPATH=/usr/bin/ar

// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=

// Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON

// CXX compiler
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++

// A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler
CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-8

// A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-8

// Flags used by the CXX compiler during all build types.
CMAKE_CXX_FLAGS:STRING=

// Flags used by the CXX compiler during DEBUG builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=-g

// Flags used by the CXX compiler during MINSIZEREL builds.
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG

// Flags used by the CXX compiler during RELEASE builds.
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG

// Flags used by the CXX compiler during RELWITHDEBINFO builds.
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG

// Flags used by the linker during all build types.
CMAKE_EXE_LINKER_FLAGS:STRING=

// Flags used by the linker during DEBUG builds.
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=

// Flags used by the linker during MINSIZEREL builds.
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=

// Flags used by the linker during RELEASE builds.
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=

// Flags used by the linker during RELWITHDEBINFO builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=

// Enable/Disable output of compile commands during generation.
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF

// Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local

// Path to a program.
CMAKE_LINKER:FILEPATH=/usr/bin/ld

// Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make

// Flags used by the linker during the creation of modules during all build types.
CMAKE_MODULE_LINKER_FLAGS:STRING=

// Flags used by the linker during the creation of modules during DEBUG builds.
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=

// Flags used by the linker during the creation of modules during MINSIZEREL builds.
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=

// Flags used by the linker during the creation of modules during RELEASE builds.
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=

// Flags used by the linker during the creation of modules during RELWITHDEBINFO builds.
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=

// Path to a program.
CMAKE_NM:FILEPATH=/usr/bin/nm

// Path to a program.
CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy

// Path to a program.
CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump

// Path to a program.
CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib

// Flags used by the linker during the creation of shared libraries during all build types.
CMAKE_SHARED_LINKER_FLAGS:STRING=

// Flags used by the linker during the creation of shared libraries during DEBUG builds.
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=

// Flags used by the linker during the creation of shared libraries during MINSIZEREL builds.
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=

// Flags used by the linker during the creation of shared libraries during RELEASE builds.
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=

// Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds.
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=

// If set, runtime paths are not added when installing shared libraries, but are added when building.
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO

// If set, runtime paths are not added when using shared libraries.
CMAKE_SKIP_RPATH:BOOL=NO

// Flags used by the linker during the creation of static libraries during all build types.
CMAKE_STATIC_LINKER_FLAGS:STRING=

// Flags used by the linker during the creation of static libraries during DEBUG builds.
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=

// Flags used by the linker during the creation of static libraries during MINSIZEREL builds.
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=

// Flags used by the linker during the creation of static libraries during RELEASE builds.
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=

// Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds.
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=

// Path to a program.
CMAKE_STRIP:FILEPATH=/usr/bin/strip

// If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE

// 
CMCM_LOCAL_RESOLVE_URL:STRING=https://AnotherFoxGuy.com/CMakeCM

// 
CMCM_MODULE_DIR:STRING=/home/omsai/.local/share/pmm/1.9.5/cmcm-eaddce/modules

// Path to the coverage program that CTest uses for performing coverage inspection
COVERAGE_COMMAND:FILEPATH=/usr/bin/gcov

// Extra command line flags to pass to the coverage tool
COVERAGE_EXTRA_FLAGS:STRING=-l

// Enable to build RPM source packages
CPACK_SOURCE_RPM:BOOL=OFF

// Enable to build TBZ2 source packages
CPACK_SOURCE_TBZ2:BOOL=ON

// Enable to build TGZ source packages
CPACK_SOURCE_TGZ:BOOL=ON

// Enable to build TXZ source packages
CPACK_SOURCE_TXZ:BOOL=ON

// Enable to build TZ source packages
CPACK_SOURCE_TZ:BOOL=ON

// Enable to build ZIP source packages
CPACK_SOURCE_ZIP:BOOL=OFF

// How many times to retry timed-out CTest submissions.
CTEST_SUBMIT_RETRY_COUNT:STRING=3

// How long to wait between timed-out CTest submissions.
CTEST_SUBMIT_RETRY_DELAY:STRING=5

// Path to a program.
CVSCOMMAND:FILEPATH=CVSCOMMAND-NOTFOUND

// Options passed to the cvs update command.
CVS_UPDATE_OPTIONS:STRING=-d -A -P

// Maximum time allowed before CTest will kill the test.
DART_TESTING_TIMEOUT:STRING=1500

// Dot tool for use with Doxygen
DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot

// Doxygen documentation generation tool (http://www.doxygen.org)
DOXYGEN_EXECUTABLE:FILEPATH=DOXYGEN_EXECUTABLE-NOTFOUND

// Enable AngelScript
ENABLE_ANGELSCRIPT:BOOL=ON

// Enable Audio
ENABLE_AUDIO:BOOL=ON

// Enable coverage build.
ENABLE_COVERAGE:BOOL=OFF

// Enable Debug (asserts and logs)
ENABLE_DEBUG:BOOL=OFF

// Enable microprofile
ENABLE_MICROPROFILE:BOOL=OFF

// Enable Vulkan
ENABLE_VULKAN:BOOL=OFF

// Path to a program.
GITCOMMAND:FILEPATH=/usr/bin/git

// Path to a program.
HGCOMMAND:FILEPATH=HGCOMMAND-NOTFOUND

// Command to build the project
MAKECOMMAND:STRING=/usr/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}"

// Path to the memory checking command, used for memory error detection.
MEMORYCHECK_COMMAND:FILEPATH=/usr/bin/valgrind

// File that contains suppressions for the memory checker
MEMORYCHECK_SUPPRESSIONS_FILE:FILEPATH=

// Path to a program.
P4COMMAND:FILEPATH=P4COMMAND-NOTFOUND

// Use conan for managing packages
PACKAGE_MANAGER:STRING=conan

// Use the cmake_multi generator for Conan
PMM_CMAKE_MULTI:BOOL=ON

// Path to Conan executable
PMM_CONAN_EXECUTABLE:FILEPATH=/home/omsai/.local/bin/./conan

// Previous version of PMM in the source tree
PMM_PRIOR_VERSION:STRING=1.9.5

// Path to a program.
SCCACHE_PROGRAM:FILEPATH=SCCACHE_PROGRAM-NOTFOUND

// Path to scp command, used by CTest for submitting results to a Dart server
SCPCOMMAND:FILEPATH=/usr/bin/scp

// Name of the computer/site where compile is being run
SITE:STRING=xm2

// Path to the SLURM sbatch executable
SLURM_SBATCH_COMMAND:FILEPATH=SLURM_SBATCH_COMMAND-NOTFOUND

// Path to the SLURM srun executable
SLURM_SRUN_COMMAND:FILEPATH=SLURM_SRUN_COMMAND-NOTFOUND

// Path to a program.
SVNCOMMAND:FILEPATH=SVNCOMMAND-NOTFOUND

// Treat all warnings as errors
TREAT_WARNINGS_AS_ERRORS:BOOL=ON

omsai avatar Jan 31 '21 22:01 omsai

Oh I meant the SNDIO_SHARED option should be passed to CMake while building SDL2. Cytopia doesn't support that directly. We would need a conan option and add it to /conanfile-linux.txt.in. I think this option was added for a later version than we are using (SDL 2.0.14) and it not really supported for earlier versions. We would have to update SDL in Cytopia but we've encountered other issues while trying that in the past. Perhaps this is proof that we can no longer rely on bincrafters as a source for SDL

ghost avatar Feb 01 '21 22:02 ghost

I have tried with the following conan options to see if it would automatically remove the dependency on sndio and I upgraded to 2.0.14, but it didn't work for me.

sdl2:nas=False
sdl2:alsa=False
sdl2:jack=False
sdl2:pulse=False
sdl2:esd=False
*** Could not run SDL test program, checking why...
*** The test program compiled, but did not run. This usually means
*** that the run-time linker is not finding SDL or finding the wrong
*** version of SDL. If it is not finding SDL, you'll need to set your
*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point
*** to the installed location  Also, make sure you have run ldconfig if that
*** is required on your system
***
*** If you have an old version installed, it is best to remove it, although
*** you may also be able to get things to work by modifying LD_LIBRARY_PATH

ghost avatar Feb 01 '21 22:02 ghost

It should still be possible to build on debian without conan at this point by using the -DPACKAGE_MANAGER=pkgconfig given you have pkgconfig installed and all the dependencies are present. Or you could also use -DPACKAGE_MANAGER=none but you will need to add a bunch of cache variables (either through CMake GUI or editing CMakeCache.txt manually) to point to where your dependencies are. However, we should definitely fix the conan build for debian

ghost avatar Feb 01 '21 22:02 ghost