We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 4615

Summary: RPM Build fails due to unpackaged files
Product: SDL Reporter: devbeer <hn9dnd+893p3nczh05m4>
Component: buildAssignee: Sam Lantinga <slouken>
Status: WAITING --- QA Contact: Sam Lantinga <slouken>
Severity: normal    
Priority: P2    
Version: HG 2.1   
Hardware: x86_64   
OS: Linux   

Description devbeer 2019-04-29 06:40:40 UTC
Not entirely sure when this broke. Going by some comments in CMakefile I gather RPM is not tested much it at all.

The current SDL2.spec fails to build with:

Checking for unpackaged file(s): /usr/lib/rpm/check-files /tmp/build/rpmbuild/BUILDROOT/SDL2-2.0.9-2.x86_64
error: Installed (but unpackaged) file(s) found:
   /usr/lib64/cmake/SDL2/sdl2-config.cmake


RPM build errors:
    Installed (but unpackaged) file(s) found:
   /usr/lib64/cmake/SDL2/sdl2-config.cmake


As I don't see any reference to cmake in the template for this file (SDL2.spec.in), I gather it's been like that for a while.


I don't know the history behind why both autotools and cmake exist in such an out of sync state so ignoring autotools and going the cmake route which can generate RPM target files automagically results in a successful build.


These should be further refined however tenatively adding them to CMakeFiles.txt will do:


if(UNIX AND NOT APPLE)
        set(CPACK_GENERATOR ${CPACK_GENERATOR};DEB;RPM)
endif(UNIX AND NOT APPLE)
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SDL2")
set(CPACK_PACKAGE_VENDOR "Cornholio")
set(CPACK_PACKAGE_CONTACT "build@localhost")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.txt")
set(CPACK_PACKAGE_VERSION_MAJOR ${SDL_MAJOR_VERSION})
set(CPACK_PACKAGE_VERSION_MINOR ${SDL_MINOR_VERSION})
set(CPACK_PACKAGE_VERSION_PATCH ${SDL_MICRO_VERSION})
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)


set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME}{VERSION_MAJOR}.${VERSION_MINOR})
include(CPack)


SDL2 as distributed by Fedora ships witih it's own spec file wherein they have added cmake and pkgconf plumbing.  This all started because their implementation as it stands now is borken for 32bit builds.

```
# Rename SDL_config.h to SDL_config-<arch>.h to avoid file conflicts on
# multilib systems and install SDL_config.h wrapper
mv %{buildroot}%{_includedir}/SDL2/SDL_config.h %{buildroot}%{_includedir}/SDL2/SDL_config-%{_arch}.h
install -p -m 644 %{SOURCE1} %{buildroot}%{_includedir}/SDL2/SDL_config.h
```

SDL_config-i386.h is not provided by any RPM I could find.   I'm adding this here because I can't for the life of me figure out how the hell this happened to such a critical project.  And how should it be resolved.
Comment 1 Sam Lantinga 2019-06-12 02:58:41 UTC
Can you check to see if this fixes it, with no other local changes?
https://hg.libsdl.org/SDL/rev/1b94a9e6746e

Thanks!