Lokathor / fermium

An easy to build and use set of SDL2 bindings.
https://docs.rs/fermium
60 stars 14 forks source link

Build Crashes on PopOS #85

Open BlidDev opened 2 years ago

BlidDev commented 2 years ago

Hi, I recently wanted to use Fermium in my project, it compiled without any problem on Windows but when I tried to compile the same Rust project on PopOS the build crashed due to a CMake error. It seems that it might have some dependencies missing but I'm honestly not good with CMake so some help figuring out the cause of the crash would be much appreciated.

(I also have build-essential installed if it's relevant)

Here's the output of an isolated Rust project that only has fermium = "20016.1.1" in it's Cargo.toml.

$cargo build --release
   Compiling fermium v20016.1.1
error: failed to run custom build command for `fermium v20016.1.1`

Caused by:
  process didn't exit successfully: `/home/blid/fer/target/release/build/fermium-a6aecb6d2a9c9f0a/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-changed=build.rs
  target:x86_64-unknown-linux-gnu
  out_dir:/home/blid/fer/target/release/build/fermium-0a20cbe7ae94275e/out
  cargo_manifest_dir:/home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1
  dll_from:/home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2.dll
  dll_to:/home/blid/fer/target/release/build/fermium-0a20cbe7ae94275e/out/SDL2.dll
  CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-gnu = None
  CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-unknown-linux-gnu = None
  CMAKE_GENERATOR_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  CMAKE_PREFIX_PATH_x86_64-unknown-linux-gnu = None
  CMAKE_PREFIX_PATH_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-unknown-linux-gnu = None
  CMAKE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE = None
  CMAKE = None
  running: "cmake" "/home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16" "-DSDL_SHARED=ON" "-DSDL_STATIC=ON" "-DHIDAPI=ON" "-DCMAKE_INSTALL_PREFIX=/home/blid/fer/target/release/build/fermium-0a20cbe7ae94275e/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/cc" "-DCMAKE_BUILD_TYPE=Release"
  -- dynamic libasound -> libasound.so.2
  -- dynamic libjack -> libjack.so
  -- dynamic libpipewire-0.3 -> libpipewire-0.3.so
  -- dynamic libpulse-simple -> libpulse-simple.so.0
  -- Checking for module 'esound'
  --   No package 'esound' found
  -- dynamic libsndio -> libsndio.so.7
  -- Checking for modules 'bcm_host;brcmegl'
  --   No package 'bcm_host' found
  --   No package 'brcmegl' found
  -- dynamic libX11 -> libX11.so.6
  -- dynamic libXext -> libXext.so.6
  -- dynamic libXcursor -> libXcursor.so.1
  -- dynamic libXinerama -> libXinerama.so.1
  -- dynamic libXi -> libXi.so.6
  -- dynamic libXrandr -> libXrandr.so.2
  -- dynamic libXrender -> libXrender.so.1
  -- dynamic libXss -> libXss.so.1
  -- dynamic libXxf86vm -> libXxf86vm.so.1
  -- Checking for modules 'libdrm;gbm;egl'
  --   No package 'libdrm' found
  --   No package 'gbm' found
  -- dynamic libwayland-client -> libwayland-client.so.0
  -- dynamic libwayland-egl -> libwayland-egl.so.1
  -- dynamic libwayland-cursor -> libwayland-cursor.so.0
  -- dynamic libxkbcommon -> libxkbcommon.so.0
  -- Checking for module 'libdecor-0'
  --   No package 'libdecor-0' found
  -- Checking for module 'libusb-1.0'
  --   No package 'libusb-1.0' found
  -- 
  -- SDL2 was configured with the following options:
  -- 
  -- Platform: Linux-5.17.15-76051715-generic
  -- 64-bit:   TRUE
  -- Compiler: /usr/bin/cc
  -- 
  -- Subsystems:
  --   Atomic:  ON
  --   Audio:   ON
  --   Video:   ON
  --   Render:  ON
  --   Events:  ON
  --   Joystick:    ON
  --   Haptic:  ON
  --   Power:   ON
  --   Threads: ON
  --   Timers:  ON
  --   File:    ON
  --   Loadso:  ON
  --   CPUinfo: ON
  --   Filesystem:  ON
  --   Dlopen:  ON
  --   Sensor:  ON
  --   Locale:  ON
  -- 
  -- Options:
  --   3DNOW                  (Wanted: ON): ON
  --   ALSA                   (Wanted: ON): ON
  --   ALSA_SHARED            (Wanted: ON): ON
  --   ALTIVEC                (Wanted: ON): OFF
  --   ARMNEON                (Wanted: OFF): OFF
  --   ARMSIMD                (Wanted: OFF): OFF
  --   ARTS                   (Wanted: ON): OFF
  --   ARTS_SHARED            (Wanted: ON): OFF
  --   ASAN                   (Wanted: OFF): OFF
  --   ASSEMBLY               (Wanted: ON): ON
  --   ASSERTIONS             (Wanted: auto): auto
  --   BACKGROUNDING_SIGNAL   (Wanted: OFF): OFF
  --   CLOCK_GETTIME          (Wanted: OFF): OFF
  --   DIRECTFB_SHARED        (Wanted: OFF): OFF
  --   DIRECTX                (Wanted: OFF): OFF
  --   DISKAUDIO              (Wanted: ON): ON
  --   DUMMYAUDIO             (Wanted: ON): ON
  --   ESD                    (Wanted: ON): OFF
  --   ESD_SHARED             (Wanted: ON): OFF
  --   FOREGROUNDING_SIGNAL   (Wanted: OFF): OFF
  --   FUSIONSOUND            (Wanted: OFF): OFF
  --   FUSIONSOUND_SHARED     (Wanted: OFF): OFF
  --   GCC_ATOMICS            (Wanted: ON): ON
  --   HIDAPI                 (Wanted: ON): OFF
  --   JACK                   (Wanted: ON): ON
  --   JACK_SHARED            (Wanted: ON): ON
  --   JOYSTICK_VIRTUAL       (Wanted: ON): OFF
  --   KMSDRM_SHARED          (Wanted: ON): OFF
  --   LIBC                   (Wanted: ON): ON
  --   LIBDECOR_SHARED        (Wanted: ON): OFF
  --   LIBSAMPLERATE          (Wanted: ON): OFF
  --   LIBSAMPLERATE_SHARED   (Wanted: ON): OFF
  --   MMX                    (Wanted: ON): ON
  --   NAS                    (Wanted: ON): OFF
  --   NAS_SHARED             (Wanted: ON): OFF
  --   OSS                    (Wanted: ON): ON
  --   PIPEWIRE               (Wanted: ON): ON
  --   PIPEWIRE_SHARED        (Wanted: ON): ON
  --   PTHREADS               (Wanted: ON): ON
  --   PTHREADS_SEM           (Wanted: ON): ON
  --   PULSEAUDIO             (Wanted: ON): ON
  --   PULSEAUDIO_SHARED      (Wanted: ON): ON
  --   RENDER_D3D             (Wanted: OFF): OFF
  --   RENDER_METAL           (Wanted: OFF): OFF
  --   RPATH                  (Wanted: ON): ON
  --   SDL_DLOPEN             (Wanted: ON): ON
  --   SDL_STATIC_PIC         (Wanted: OFF): OFF
  --   SDL_TEST               (Wanted: OFF): OFF
  --   SNDIO                  (Wanted: ON): ON
  --   SNDIO_SHARED           (Wanted: ON): ON
  --   SSE                    (Wanted: ON): ON
  --   SSE2                   (Wanted: ON): ON
  --   SSE3                   (Wanted: ON): ON
  --   SSEMATH                (Wanted: ON): OFF
  --   VIDEO_COCOA            (Wanted: OFF): OFF
  --   VIDEO_DIRECTFB         (Wanted: OFF): OFF
  --   VIDEO_DUMMY            (Wanted: ON): ON
  --   VIDEO_KMSDRM           (Wanted: ON): OFF
  --   VIDEO_METAL            (Wanted: OFF): OFF
  --   VIDEO_OFFSCREEN        (Wanted: OFF): OFF
  --   VIDEO_OPENGL           (Wanted: ON): ON
  --   VIDEO_OPENGLES         (Wanted: ON): ON
  --   VIDEO_RPI              (Wanted: ON): OFF
  --   VIDEO_VIVANTE          (Wanted: ON): OFF
  --   VIDEO_VULKAN           (Wanted: ON): ON
  --   VIDEO_WAYLAND          (Wanted: ON): ON
  --   VIDEO_WAYLAND_QT_TOUCH (Wanted: ON): ON
  --   VIDEO_X11              (Wanted: ON): ON
  --   VIDEO_X11_XCURSOR      (Wanted: ON): ON
  --   VIDEO_X11_XINERAMA     (Wanted: ON): ON
  --   VIDEO_X11_XINPUT       (Wanted: ON): ON
  --   VIDEO_X11_XRANDR       (Wanted: ON): ON
  --   VIDEO_X11_XSCRNSAVER   (Wanted: ON): ON
  --   VIDEO_X11_XSHAPE       (Wanted: ON): ON
  --   VIDEO_X11_XVM          (Wanted: ON): ON
  --   WASAPI                 (Wanted: OFF): OFF
  --   WAYLAND_LIBDECOR       (Wanted: ON): OFF
  --   WAYLAND_SHARED         (Wanted: ON): ON
  --   X11_SHARED             (Wanted: ON): ON
  --   XINPUT                 (Wanted: OFF): OFF
  -- 
  --  CFLAGS:         -ffunction-sections -fdata-sections -fPIC -m64 -idirafter "/home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/video/khronos" -DHAVE_LINUX_VERSION_H
  --  EXTRA_CFLAGS:  -I/usr/include -I/usr/include/spa-0.2 -I/usr/include/pipewire-0.3 -D_REENTRANT -msse3 -msse2 -msse -m3dnow -mmmx -Wshadow -fvisibility=hidden -Wdeclaration-after-statement -Werror=declaration-after-statement -fno-strict-aliasing -Wall 
  --  EXTRA_LDFLAGS: -Wl,--no-undefined;-pthread
  --  EXTRA_LIBS:    m;dbus-1;ibus-1.0;gio-2.0;gobject-2.0;glib-2.0
  -- 
  --  Build Shared Library: ON
  --  Build Static Library: ON
  --  Build Static Library with Position Independent Code: OFF
  -- 
  -- If something was not detected, although the libraries
  -- were installed, then make sure you have set the
  -- CFLAGS and LDFLAGS environment variables correctly.
  -- 
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /home/blid/fer/target/release/build/fermium-0a20cbe7ae94275e/out/build
  running: "cmake" "--build" "." "--target" "install" "--config" "Release" "--parallel" "8"
  Consolidate compiler generated dependencies of target SDL2main
  [  1%] Built target SDL2main
  Consolidate compiler generated dependencies of target SDL2-static
  Consolidate compiler generated dependencies of target SDL2
  [  2%] Building C object CMakeFiles/SDL2-static.dir/src/audio/jack/SDL_jackaudio.c.o
  [  2%] Building C object CMakeFiles/SDL2-static.dir/src/audio/pipewire/SDL_pipewire.c.o
  [  2%] Building C object CMakeFiles/SDL2-static.dir/src/audio/pulseaudio/SDL_pulseaudio.c.o
  [  2%] Building C object CMakeFiles/SDL2.dir/src/audio/jack/SDL_jackaudio.c.o
  [  3%] Building C object CMakeFiles/SDL2-static.dir/src/video/x11/SDL_x11clipboard.c.o
  [  3%] Building C object CMakeFiles/SDL2.dir/src/audio/pipewire/SDL_pipewire.c.o
  [  4%] Building C object CMakeFiles/SDL2.dir/src/audio/sndio/SDL_sndioaudio.c.o
  [  4%] Building C object CMakeFiles/SDL2-static.dir/src/audio/sndio/SDL_sndioaudio.c.o
  [  4%] Building C object CMakeFiles/SDL2.dir/src/video/x11/SDL_x11dyn.c.o
  [  4%] Building C object CMakeFiles/SDL2.dir/src/video/x11/SDL_x11clipboard.c.o

  --- stderr
  gmake: warning: -j8 forced in submake: resetting jobserver mode.
  In file included from /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/audio/jack/SDL_jackaudio.c:28:
  /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/audio/jack/SDL_jackaudio.h:24:10: fatal error: jack/jack.h: No such file or directory
     24 | #include <jack/jack.h>
        |          ^~~~~~~~~~~~~
  compilation terminated.
  In file included from /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/audio/pipewire/SDL_pipewire.c:29:
  /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/audio/pipewire/SDL_pipewire.h:28:10: fatal error: pipewire/pipewire.h: No such file or directory
     28 | #include <pipewire/pipewire.h>
        |          ^~~~~~~~~~~~~~~~~~~~~
  compilation terminated.
  In file included from /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/audio/pipewire/SDL_pipewire.c:29:
  /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/audio/pipewire/SDL_pipewire.h:28:10: fatal error: pipewire/pipewire.h: No such file or directory
     28 | #include <pipewire/pipewire.h>
        |          ^~~~~~~~~~~~~~~~~~~~~
  compilation terminated.
  gmake[2]: *** [CMakeFiles/SDL2-static.dir/build.make:1814: CMakeFiles/SDL2-static.dir/src/audio/pipewire/SDL_pipewire.c.o] Error 1
  gmake[2]: *** Waiting for unfinished jobs....
  gmake[2]: *** [CMakeFiles/SDL2-static.dir/build.make:1800: CMakeFiles/SDL2-static.dir/src/audio/jack/SDL_jackaudio.c.o] Error 1
  gmake[2]: *** [CMakeFiles/SDL2.dir/build.make:1814: CMakeFiles/SDL2.dir/src/audio/pipewire/SDL_pipewire.c.o] Error 1
  gmake[2]: *** Waiting for unfinished jobs....
  In file included from /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/audio/jack/SDL_jackaudio.c:28:
  /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/fermium-20016.1.1/SDL2-2.0.16/src/audio/jack/SDL_jackaudio.h:24:10: fatal error: jack/jack.h: No such file or directory
     24 | #include <jack/jack.h>
        |          ^~~~~~~~~~~~~
  compilation terminated.
  gmake[2]: *** [CMakeFiles/SDL2.dir/build.make:1800: CMakeFiles/SDL2.dir/src/audio/jack/SDL_jackaudio.c.o] Error 1
  gmake[1]: *** [CMakeFiles/Makefile2:140: CMakeFiles/SDL2-static.dir/all] Error 2
  gmake[1]: *** Waiting for unfinished jobs....
  gmake[1]: *** [CMakeFiles/Makefile2:114: CMakeFiles/SDL2.dir/all] Error 2
  gmake: *** [Makefile:136: all] Error 2
  thread 'main' panicked at '
  command did not execute successfully, got: exit status: 2

  build script failed, must exit now', /home/blid/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.48/src/lib.rs:975:5
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Thanks in advance! :D

Lokathor commented 2 years ago

It seems to want to include code from directories that don't exist (jack and pipewire). As far as I can recall I didn't remove any folders from the source code when I unzipped it into the repository, so this is puzzling.

You might need to ask the SDL2 folks how to build SDL2 for your distro, if they're trying to include files that are assumed to be installed, or something like that. Those names seem like audio library names, you might be able to set some flags to disable audio support?