CPACK/RPM: Relative symlink become absolute if "+" occurs in CPACK_PACKAGE_VERSION
Configuration for RPM should allow to add "+" character in version, or at least throw meaningful error instead of converting relative symlinks to absolute. As you can see in log below such behaviour cause rpmbuild errors.
How to reproduce: Get cpack_symlink_issue.tar.gz
tar xvf cpack_symlink_issue.tar.gz
cd cpack_symlink_issue/build/
cmake -DCPACK_GENERATOR=RPM ..
make package
log:
Run CPack packaging tool...
CPack: Create package using RPM
CPack: Install projects
CPack: - Run preinstall target for: foo
CPack: - Install project: foo
CPack: Create package
-- CPackRPM:Debug: Using CPACK_RPM_ROOTDIR=/tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM
CMake Warning (dev) at /usr/share/cmake/Modules/Internal/CPack/CPackRPM.cmake:502 (message):
CPackRPM:Warning: Symbolic link '/usr/lib/libfoo.so' points to location
that is outside packaging path! Link will possibly not be relocatable.
Call Stack (most recent call first):
/usr/share/cmake/Modules/Internal/CPack/CPackRPM.cmake:1411 (cpack_rpm_prepare_install_files)
/usr/share/cmake/Modules/Internal/CPack/CPackRPM.cmake:1870 (cpack_rpm_generate_package)
This warning is for project developers. Use -Wno-dev to suppress it.
CPackRPM: Will use GENERATED spec file: /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/SPECS/foo.spec
CPackRPM:Debug: You may consult rpmbuild logs in:
CPackRPM:Debug: - /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/rpmbuildfoo.err
CPackRPM:Debug: *** + umask 022
+ cd /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/BUILD
+ mv /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/tmpBBroot
+ exit 0
+ umask 022
+ cd /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/BUILD
+ '[' /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux '!=' / ']'
+ rm -rf /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux
++ dirname /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux
+ mkdir -p /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM
+ mkdir /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux
+ '[' -e /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux ']'
+ rm -rf /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux
+ mv /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/tmpBBroot /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-ldconfig
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip /usr/bin/strip
+ /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 0
+ /usr/lib/rpm/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-mangle-shebangs
error: Symlink points to BuildRoot: /usr/lib/libfoo.so -> /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux/usr/lib/libfoo.so.1
Symlink points to BuildRoot: /usr/lib/libfoo.so -> /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/foo-1.0+-Linux/usr/lib/libfoo.so.1
***
CPackRPM:Debug: - /tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM/rpmbuildfoo.out
CPackRPM:Debug: *** Building target platforms: x86_64
Building for target x86_64
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.0n7Hn9
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.Dm2Q7A
Processing files: foo-1.0+-1.x86_64
RPM build errors:
***
CMake Error at /usr/share/cmake/Modules/Internal/CPack/CPackRPM.cmake:1799 (message):
RPM package was not generated!
/tmp/cpack_symlink_issue/build/_CPack_Packages/Linux/RPM
Call Stack (most recent call first):
/usr/share/cmake/Modules/Internal/CPack/CPackRPM.cmake:1870 (cpack_rpm_generate_package)
CPack Error: Error while execution CPackRPM.cmake
CPack Error: Problem compressing the directory
CPack Error: Error when generating package: foo
make: *** [Makefile:86: package] Error 1