1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-23 01:49:53 +03:00

Merge pull request #1161 from ronisaacson/master

Fix three issues when building RPM packages
This commit is contained in:
Ilya Shipitsin 2020-07-01 13:00:19 +05:00 committed by GitHub
commit b60844e276
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 66 additions and 48 deletions

View File

@ -37,7 +37,6 @@ endif()
if(UNIX) if(UNIX)
include(GNUInstallDirs) include(GNUInstallDirs)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
include(CheckIncludeFile) include(CheckIncludeFile)
Check_Include_File(sys/auxv.h HAVE_SYS_AUXV) Check_Include_File(sys/auxv.h HAVE_SYS_AUXV)
@ -59,8 +58,6 @@ string(TIMESTAMP TIME_SECOND "%S" UTC)
message(STATUS "Build date: ${DATE_DAY}/${DATE_MONTH}/${DATE_YEAR}") message(STATUS "Build date: ${DATE_DAY}/${DATE_MONTH}/${DATE_YEAR}")
message(STATUS "Build time: ${TIME_HOUR}:${TIME_MINUTE}:${TIME_SECOND}") message(STATUS "Build time: ${TIME_HOUR}:${TIME_MINUTE}:${TIME_SECOND}")
set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
add_subdirectory(src) add_subdirectory(src)
if(UNIX) if(UNIX)
@ -90,5 +87,14 @@ if(UNIX)
set(CPACK_RPM_PACKAGE_GROUP "Applications/Internet") set(CPACK_RPM_PACKAGE_GROUP "Applications/Internet")
set(CPACK_RPM_PACKAGE_LICENSE "ASL 2.0") set(CPACK_RPM_PACKAGE_LICENSE "ASL 2.0")
# Exclude system directories
if(CPACK_GENERATOR STREQUAL "RPM")
execute_process(
COMMAND rpm -ql filesystem
COMMAND tr \n \;
OUTPUT_VARIABLE CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
ERROR_QUIET)
endif()
include(CPack) include(CPack)
endif() endif()

View File

@ -1,19 +1,46 @@
if(UNIX) if(UNIX)
# Creates wrapper scripts and installs them in the user's binaries directory, which is usually "/usr/local/bin". # Creates wrapper scripts and installs them in the user's binaries directory, which is usually "/usr/local/bin".
# This is required because symlinks use the folder they are in as working directory. # This is required because symlinks use the folder they are in as working directory.
macro(install_wrapper_script component target) #
get_filename_component(file_name ${target} NAME) # The actual wrapper script needs to be generated at install time, not build time, because it depends on the
# installation prefix. This is especially important when generating packages (rpm/deb) where the prefix is
# changed from /usr to /usr/local for the install step.
#
# The placeholder is needed to satisfy the "install" dependency scanner which runs early.
#
macro(install_wrapper_script component)
file(GENERATE OUTPUT ${BUILD_DIRECTORY}/${component}.sh
CONTENT "# placeholder\n"
)
file(WRITE ${TOP_DIRECTORY}/tmp/script/${file_name} "#!/bin/sh\n") install(CODE "file(WRITE ${BUILD_DIRECTORY}/${component}.sh \"#!/bin/sh\nexec \${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}/softether/${component}/${component} \\\"$@\\\"\n\")"
file(APPEND ${TOP_DIRECTORY}/tmp/script/${file_name} "${target} \"$@\"\n")
file(APPEND ${TOP_DIRECTORY}/tmp/script/${file_name} "exit $?\n")
install(FILES ${TOP_DIRECTORY}/tmp/script/${file_name}
COMPONENT ${component} COMPONENT ${component}
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} )
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
install(PROGRAMS ${BUILD_DIRECTORY}/${component}.sh
COMPONENT ${component}
DESTINATION bin
RENAME ${component}
) )
endmacro(install_wrapper_script) endmacro(install_wrapper_script)
# Same approach for systemd unit files
#
macro(install_unit_file component)
file(GENERATE OUTPUT ${BUILD_DIRECTORY}/softether-${component}.service
CONTENT "# placeholder\n"
)
install(CODE "set(DIR \"\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}\")\nconfigure_file(${TOP_DIRECTORY}/systemd/softether-${component}.service ${BUILD_DIRECTORY}/softether-${component}.service)"
COMPONENT ${component}
)
install(FILES ${BUILD_DIRECTORY}/softether-${component}.service
COMPONENT ${component}
DESTINATION ${CMAKE_INSTALL_SYSTEMD_UNITDIR}
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endmacro(install_unit_file)
endif() endif()
if(BUILD_TYPE STREQUAL "Debug") if(BUILD_TYPE STREQUAL "Debug")

View File

@ -39,13 +39,8 @@ if(UNIX)
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
) )
install_wrapper_script("vpnbridge" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnbridge/vpnbridge") install_wrapper_script("vpnbridge")
if(NOT "${CMAKE_INSTALL_SYSTEMD_UNITDIR}" STREQUAL "") if(NOT "${CMAKE_INSTALL_SYSTEMD_UNITDIR}" STREQUAL "")
configure_file(${TOP_DIRECTORY}/systemd/softether-vpnbridge.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnbridge.service) install_unit_file("vpnbridge")
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnbridge.service
COMPONENT "vpnbridge"
DESTINATION ${CMAKE_INSTALL_SYSTEMD_UNITDIR}
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endif() endif()
endif() endif()

View File

@ -39,13 +39,8 @@ if(UNIX)
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
) )
install_wrapper_script("vpnclient" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnclient/vpnclient") install_wrapper_script("vpnclient")
if(NOT "${CMAKE_INSTALL_SYSTEMD_UNITDIR}" STREQUAL "") if(NOT "${CMAKE_INSTALL_SYSTEMD_UNITDIR}" STREQUAL "")
configure_file(${TOP_DIRECTORY}/systemd/softether-vpnclient.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnclient.service) install_unit_file("vpnclient")
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnclient.service
COMPONENT "vpnclient"
DESTINATION ${CMAKE_INSTALL_SYSTEMD_UNITDIR}
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endif() endif()
endif() endif()

View File

@ -39,5 +39,5 @@ if(UNIX)
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
) )
install_wrapper_script("vpncmd" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpncmd/vpncmd") install_wrapper_script("vpncmd")
endif() endif()

View File

@ -39,13 +39,8 @@ if(UNIX)
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
) )
install_wrapper_script("vpnserver" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnserver/vpnserver") install_wrapper_script("vpnserver")
if(NOT "${CMAKE_INSTALL_SYSTEMD_UNITDIR}" STREQUAL "") if(NOT "${CMAKE_INSTALL_SYSTEMD_UNITDIR}" STREQUAL "")
configure_file(${TOP_DIRECTORY}/systemd/softether-vpnserver.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnserver.service) install_unit_file("vpnserver")
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnserver.service
COMPONENT "vpnserver"
DESTINATION ${CMAKE_INSTALL_SYSTEMD_UNITDIR}
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endif() endif()
endif() endif()

View File

@ -1,13 +1,13 @@
[Unit] [Unit]
Description=SoftEther VPN Bridge Description=SoftEther VPN Bridge
After=network.target auditd.service After=network.target auditd.service
ConditionPathExists=!${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnbridge/do_not_run ConditionPathExists=!@DIR@/softether/vpnbridge/do_not_run
[Service] [Service]
Type=forking Type=forking
EnvironmentFile=-${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnbridge EnvironmentFile=-@DIR@/softether/vpnbridge
ExecStart=${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnbridge/vpnbridge start ExecStart=@DIR@/softether/vpnbridge/vpnbridge start
ExecStop=${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnbridge/vpnbridge stop ExecStop=@DIR@/softether/vpnbridge/vpnbridge stop
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
@ -16,7 +16,7 @@ PrivateTmp=yes
ProtectHome=yes ProtectHome=yes
ProtectSystem=full ProtectSystem=full
ReadOnlyDirectories=/ ReadOnlyDirectories=/
ReadWriteDirectories=-${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnbridge ReadWriteDirectories=-@DIR@/softether/vpnbridge
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYSLOG CAP_SETUID CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYSLOG CAP_SETUID
[Install] [Install]

View File

@ -1,13 +1,13 @@
[Unit] [Unit]
Description=SoftEther VPN Client Description=SoftEther VPN Client
After=network.target auditd.service After=network.target auditd.service
ConditionPathExists=!${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnclient/do_not_run ConditionPathExists=!@DIR@/softether/vpnclient/do_not_run
[Service] [Service]
Type=forking Type=forking
EnvironmentFile=-${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnclient EnvironmentFile=-@DIR@/softether/vpnclient
ExecStart=${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnclient/vpnclient start ExecStart=@DIR@/softether/vpnclient/vpnclient start
ExecStop=${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnclient/vpnclient stop ExecStop=@DIR@/softether/vpnclient/vpnclient stop
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
@ -16,7 +16,7 @@ PrivateTmp=yes
ProtectHome=yes ProtectHome=yes
ProtectSystem=full ProtectSystem=full
ReadOnlyDirectories=/ ReadOnlyDirectories=/
ReadWriteDirectories=-${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnclient ReadWriteDirectories=-@DIR@/softether/vpnclient
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYSLOG CAP_SETUID CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYSLOG CAP_SETUID
[Install] [Install]

View File

@ -1,14 +1,14 @@
[Unit] [Unit]
Description=SoftEther VPN Server Description=SoftEther VPN Server
After=network.target auditd.service After=network.target auditd.service
ConditionPathExists=!${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnserver/do_not_run ConditionPathExists=!@DIR@/softether/vpnserver/do_not_run
[Service] [Service]
Type=forking Type=forking
TasksMax=16777216 TasksMax=16777216
EnvironmentFile=-${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnserver EnvironmentFile=-@DIR@/softether/vpnserver
ExecStart=${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnserver/vpnserver start ExecStart=@DIR@/softether/vpnserver/vpnserver start
ExecStop=${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnserver/vpnserver stop ExecStop=@DIR@/softether/vpnserver/vpnserver stop
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
@ -17,7 +17,7 @@ PrivateTmp=yes
ProtectHome=yes ProtectHome=yes
ProtectSystem=full ProtectSystem=full
ReadOnlyDirectories=/ ReadOnlyDirectories=/
ReadWriteDirectories=-${CPACK_PACKAGING_INSTALL_PREFIX}/libexec/softether/vpnserver ReadWriteDirectories=-@DIR@/softether/vpnserver
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYSLOG CAP_SETUID CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYSLOG CAP_SETUID
[Install] [Install]