diasurgical / devilutionX

Diablo build for modern operating systems
Other
8.03k stars 790 forks source link

[Issue Report]: discord_game_sdk.so not found after 1.5.3 rpm install (not in lib64) #7470

Open Espionage724 opened 5 days ago

Espionage724 commented 5 days ago

Operating System

DevilutionX version

Describe

Launching devilutionx as-is:

devilutionx: error while loading shared libraries: discord_game_sdk.so: cannot open shared object file: No such file or directory

/usr/lib/discord_game_sdk.so exists but maybe should be in /usr/lib64?

To Reproduce

  1. Download https://github.com/diasurgical/devilutionX/releases/download/1.5.3/devilutionx-linux-x86_64.tar.xz
  2. Extract
  3. sudo dnf install devilutionx.rpm
  4. devilutionx
  5. devilutionx: error while loading shared libraries: discord_game_sdk.so: cannot open shared object file: No such file or directory

Expected Behavior

Additional context

glebm commented 5 days ago

It's currently hardcoded to "lib" here:

https://github.com/diasurgical/devilutionX/blob/d6c81898d6a82459d2ec3a8345fc3b4f4efb10c8/CMakeLists.txt#L629-L631

I'm guessing we should use some kind of variable instead but I'm not sure which one.

We can try "${CMAKE_INSTALL_LIBDIR}".

glebm commented 5 days ago

Looks like we somehow need to tell the CPack RPM generator to use RPM's %{_libdir} macro but I haven't figured out a way to do this.

Command to build RPM and list the contents:

cmake -S. -Bbuild-rel -DCMAKE_BUILD_TYPE=Release -DDISCORD_INTEGRATION=ON
cmake --build build-rel -j --target package && rpm -qlp build-rel/devilutionx-1.6.0-1.x86_64.rpm

rpmlint results:

rpmlint build-rel/devilutionx-1.6.0-1.x86_64.rpm
devilutionx.x86_64: W: unstripped-binary-or-object /usr/lib/discord_game_sdk.so
devilutionx.x86_64: E: standard-dir-owned-by-package /usr/share/icons
devilutionx.x86_64: E: shared-library-not-executable /usr/lib/discord_game_sdk.so
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/lib/.build-id
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/applications
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/applications/devilutionx-hellfire.desktop
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/applications/devilutionx.desktop
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/diasurgical
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/diasurgical/devilutionx
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/diasurgical/devilutionx/README.txt
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/diasurgical/devilutionx/devilutionx.mpq
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/icons
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/icons/hicolor
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/metainfo
devilutionx.x86_64: E: non-versioned-file-in-library-package /usr/share/metainfo/devilutionx.metainfo.xml
devilutionx.x86_64: E: non-standard-dir-perm /usr/share/applications 775
devilutionx.x86_64: E: non-standard-dir-perm /usr/share/diasurgical 775
devilutionx.x86_64: E: non-standard-dir-perm /usr/share/diasurgical/devilutionx 775
devilutionx.x86_64: E: non-standard-dir-perm /usr/share/icons 775
devilutionx.x86_64: E: non-standard-dir-perm /usr/share/icons/hicolor 775
devilutionx.x86_64: E: non-standard-dir-perm /usr/share/icons/hicolor/512x512 775
devilutionx.x86_64: E: non-standard-dir-perm /usr/share/icons/hicolor/512x512/apps 775
devilutionx.x86_64: E: non-standard-dir-perm /usr/share/metainfo 775
devilutionx.x86_64: W: no-url-tag
devilutionx.x86_64: W: no-soname /usr/lib/discord_game_sdk.so
devilutionx.x86_64: E: no-signature
devilutionx.x86_64: E: no-packager-tag
devilutionx.x86_64: W: no-manual-page-for-binary devilutionx
devilutionx.x86_64: W: no-documentation
devilutionx.x86_64: W: name-repeated-in-summary DevilutionX
devilutionx.x86_64: E: missing-hash-section /usr/lib/discord_game_sdk.so
devilutionx.x86_64: W: invalid-license unknown
devilutionx.x86_64: E: executable-in-library-package /usr/bin/devilutionx
devilutionx.x86_64: E: description-line-too-long This is an installer created using CPack (https://cmake.org). No additional installation instructions provided.

I think one way to resolve this might be to manually write an RPM spec file, as described in this blog post https://schneide.blog/2013/02/11/build-a-rpm-package-using-cmake/

Contributions welcome!