I have a question on reported ‘Source RPM’ value and CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE usage.
I have the following files:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.17.5)
project(main VERSION 1.0.0)
set(CMAKE_CXX_STANDARD 11)
add_library(foo foo.cpp)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} foo)
include(GNUInstallDirs)
install(FILES
foo.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/foo
COMPONENT devel)
# Install foo.so symbolic link for devel RPM
install(TARGETS foo
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT foo
NAMELINK_COMPONENT devel)
set(CPACK_COMPONENTS_ALL devel ${PROJECT_NAME})
set(CPACK_GENERATOR RPM)
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION})
set(CPACK_RPM_COMPONENT_INSTALL ON)
set(CPACK_RPM_CONFIG_DEFAULT_GROUP ${PROJ-ECT_NAME})
set(CPACK_RPM_CONFIG_DEFAULT_USER ${PROJECT_NAME})
# Enable generation of debuginfo RPM package(s)
set(CPACK_RPM_DEBUGINFO_PACKAGE ON)
# Create a single debuginfo package even if components packaging is set
# TODO - FIXME! If enabled, foo-devel RPM metadata has 'Source RPM : foo-devel-3.5.5-5.el7.src.rpm',
# if disabled, foo-devel RPM metadata has 'Source RPM : foo-3.5.5-5.el7.src.rpm', expected or bug?
#set(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE ON)
set(CPACK_RPM_FILE_NAME RPM-DEFAULT)
set(CPACK_RPM_MAIN_COMPONENT ${PROJECT_NAME})
set(CPACK_RPM_PACKAGE_RELEASE 1)
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
include(CPack)
foo.h:
#ifndef FOO_H
#define FOO_H
void foo();
#endif // FOO_H
foo.cpp:
#include "foo.h"
#include <cstdlib>
void foo()
{
system("cmake3 --version");
}
main.cpp:
#include "foo.h"
int main()
{
foo();
}
$ cmake3 --version
cmake3 version 3.17.5
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
$ uname -r
3.10.0-1160.15.2.el7.x86_64
With #set(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE ON)
disabled, the devel RPM’s metadata reports a Source RPM
value of main-devel-1.0.0-1.el7.src.rpm
:
build]$ rm -rf * && cmake3 .. && make package && rpm -qip *devel*.rpm | grep 'Source RPM'
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
...
CPackRPM: Will use GENERATED spec file: /.../CMakeCPackBug/build/_CPack_Packages/Linux/RPM/SPECS/main.spec
CPack3: - package: /.../CMakeCPackBug/build/main-1.0.0-1.el7.x86_64.rpm generated.
CPack3: - package: /.../CMakeCPackBug/build/main-devel-1.0.0-1.el7.x86_64.rpm generated.
Source RPM : main-devel-1.0.0-1.el7.src.rpm
build]$
With set(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE ON)
enabled, the devel RPM’s metadata reports a Source RPM
value of main-1.0.0-1.el7.src.rpm
:
build]$ rm -rf * && cmake3 .. && make package && rpm -qip *devel*.rpm | grep 'Source RPM'
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
...
CPackRPM: Will use GENERATED spec file: /.../CMakeCPackBug/build/_CPack_Packages/Linux/RPM/SPECS/main.spec
CPack3: - package: /.../CMakeCPackBug/build/main-1.0.0-1.el7.x86_64.rpm generated.
CPack3: - package: /.../CMakeCPackBug/build/main-devel-1.0.0-1.el7.x86_64.rpm generated.
Source RPM : main-1.0.0-1.el7.src.rpm
build]$
It does not seem correct that whether or not CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE is enabled should be changing the RPM metadata Source RPM
field as neither the SRPM nor the devel RPM are debuginfo related. Is this a bug or expected behavior?
Thanks,
masdaq