> > > And the content is: > $ rpm -qpl softether-vpnserver-5.1.9660-1.x86_64.rpm > /lib > /lib/systemd > /lib/systemd/system > /lib/systemd/system/softether-vpnserver.service > /usr/libexec > /usr/libexec/softether > /usr/libexec/softether/vpnserver > /usr/libexec/softether/vpnserver/hamcore.se2 > /usr/libexec/softether/vpnserver/vpnserver > /usr/local > /usr/local/bin > /usr/local/bin/vpnserver > > the content of the .deb is similar: > $ dpkg-deb -c softether-vpnserver_5.1.9660_amd64.deb > drwxr-xr-x root/root 0 2018-10-20 14:45 ./lib/ > drwxr-xr-x root/root 0 2018-10-20 14:45 ./lib/systemd/ > drwxr-xr-x root/root 0 2018-10-20 14:45 ./lib/systemd/system/ > -rw-r--r-- root/root 700 2018-10-20 14:45 > ./lib/systemd/system/softether-vpnserver.service > drwxr-xr-x root/root 0 2018-10-20 14:45 ./usr/ > drwxr-xr-x root/root 0 2018-10-20 14:45 ./usr/libexec/ > drwxr-xr-x root/root 0 2018-10-20 14:45 ./usr/libexec/softether/ > drwxr-xr-x root/root 0 2018-10-20 14:45 > ./usr/libexec/softether/vpnserver/ > -rw-r--r-- root/root 1770716 2018-10-20 14:45 > ./usr/libexec/softether/vpnserver/hamcore.se2 > -rwxr-xr-x root/root 2088960 2018-10-20 14:45 > ./usr/libexec/softether/vpnserver/vpnserver > drwxr-xr-x root/root 0 2018-10-20 14:45 ./usr/local/ > drwxr-xr-x root/root 0 2018-10-20 14:45 ./usr/local/bin/ > -rwxr-xr-x root/root 72 2018-10-20 14:45 ./usr/local/bin/vpnserver > > The main question is, what filesystem layout do you expect for those files? > > Now I think I get it. IN vpnserver CMakeLists.txt you do:
install_systemd_service("vpnserver" "${CMAKE_SOURCE_DIR}/systemd/softether-vpnserver.service" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnserver/vpnserver") So at this point (during CMake config step) "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnserver/vpnserver" is /usr/local/softether/vpnserver/vpnserver In your install_systemd_service CMake macro wrapper you do: macro(install_systemd_service component file_path binary_path) get_filename_component(file_name ${file_path} NAME) get_filename_component(binary_directory ${binary_path} DIRECTORY) file(READ ${file_path} FILE_CONTENT) string(REPLACE "[DIRECTORY]" ${binary_directory} FILE_CONTENT ${FILE_CONTENT}) string(REPLACE "[BINARY]" ${binary_path} FILE_CONTENT ${FILE_CONTENT}) file(WRITE ${CMAKE_SOURCE_DIR}/tmp/systemd/${file_name} ${FILE_CONTENT}) ... So you generate a systemd service file which contains /usr/local prefix because this is the one which is know during "CMake configuration step". You cannot do that this way with .deb or .rpm because you don't know the "actual" prefix that will be in the package because it is controlby CPACK_PACKAGING_INSTALL_PREFIX "at CPack time", i.e. when CPack runs. It's even worse because .deb or .rpm may be relocated see e.g.: https://www.cyberciti.biz/faq/howto-install-rpm-package-into-another-directory/ When you want to install script that should know where things get installed you have 3 options: 1) Assume the binary executable is installed in the path thus call the executable as-is "vpnserver" without absolute path 2) Put a pre- or post- install script that will compute the appropriate path **during package installation** when you are sure what the real path will be. Have a look at CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA in https://cmake.org/cmake/help/latest/cpack_gen/deb.html or https://cmake.org/cmake/help/latest/cpack_gen/rpm.html#variable:CPACK_RPM_SPEC_MORE_DEFINE 3) Ensure that you generate package with CMAKE_INSTALL_PREFIX == CPACK_PACKAGING_INSTALL_PREFIX This is ok but will break if the installation of the package is relocated. 1) may be ok. 2) need a little work but is the more robust 3) may be enough but prevent relocatable install -- Eric
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake