Open Espionage724 opened 5 days ago
It's currently hardcoded to "lib" here:
I'm guessing we should use some kind of variable instead but I'm not sure which one.
We can try "${CMAKE_INSTALL_LIBDIR}"
.
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!
Operating System
DevilutionX version
Describe
Launching
devilutionx
as-is:/usr/lib/discord_game_sdk.so
exists but maybe should be in/usr/lib64
?To Reproduce
sudo dnf install devilutionx.rpm
devilutionx
devilutionx: error while loading shared libraries: discord_game_sdk.so: cannot open shared object file: No such file or directory
Expected Behavior
Additional context
devilutionx.sh
from extracted tar works withdiscord_game_sdk.so
in the folderln -s /usr/lib/discord_game_sdk.so /usr/lib64/discord_game_sdk.so
anddevilutionx
works