non-static build debian packages

This commit is contained in:
Grant Limberg 2020-06-19 15:33:08 -07:00
parent 0477e16860
commit b126bf727a
No known key found for this signature in database
GPG key ID: 2BA62CCABBB4095A
11 changed files with 165 additions and 9 deletions

View file

@ -1,11 +1,23 @@
cmake_minimum_required (VERSION 3.8) cmake_minimum_required (VERSION 3.8)
project(zerotier DESCRIPTION "ZeroTier Network Hypervisor" LANGUAGES CXX C)
cmake_policy(SET CMP0048 NEW)
if(${CMAKE_VERSION} VERSION_LESS 3.15)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
else()
cmake_policy(VERSION 3.15)
endif()
set(ZEROTIER_VERSION_MAJOR 1 CACHE INTERNAL "") set(ZEROTIER_VERSION_MAJOR 1 CACHE INTERNAL "")
set(ZEROTIER_VERSION_MINOR 9 CACHE INTERNAL "") set(ZEROTIER_VERSION_MINOR 9 CACHE INTERNAL "")
set(ZEROTIER_VERSION_REVISION 0 CACHE INTERNAL "") set(ZEROTIER_VERSION_REVISION 0 CACHE INTERNAL "")
set(ZEROTIER_VERSION_BUILD 0 CACHE INTERNAL "") set(ZEROTIER_VERSION_BUILD 0 CACHE INTERNAL "")
project(zerotier
VERSION ${ZEROTIER_VERSION_MAJOR}.${ZEROTIER_VERSION_MINOR}.${ZEROTIER_VERSION_REVISION}.${ZEROTIER_VERSION_BUILD}
DESCRIPTION "ZeroTier Network Hypervisor"
LANGUAGES CXX C)
if(${CMAKE_VERSION} VERSION_LESS 3.15) if(${CMAKE_VERSION} VERSION_LESS 3.15)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
else() else()
@ -222,3 +234,12 @@ add_custom_target(
COMMENT "Compiling Go Code..." COMMENT "Compiling Go Code..."
) )
add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core) add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core)
if("${ZT_PACKAGE_FORMAT}" MATCHES "DEB")
include(packaging/debian.cmake)
elseif("${ZT_PACKAGE_FORMAT}" MATCHES "RPM")
else()
endif()

11
Jenkinsfile vendored
View file

@ -377,11 +377,14 @@ def buildDebianNative() {
sh 'whoami' sh 'whoami'
dir("build") { dir("build") {
sh "${cmakeFlags} make -j4" sh "${cmakeFlags} make setup"
dir("build") {
sh "make package"
} }
// sh "mkdir -p ${distro}" }
// sh "mv *.deb ${distro}" sh "mkdir -p ${distro}"
// archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true sh "mv build/build/*.deb ${distro}"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
} }
} }

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 3.0)
project(zt_controller) project(zt_controller)

View file

@ -1,4 +1,4 @@
cmake_minimum_required (VERSION 2.8) cmake_minimum_required (VERSION 3.0)
project(zt_core) project(zt_core)
configure_file( configure_file(

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 3.0)
project(zt_osdep) project(zt_osdep)
set(src set(src

45
packaging/debian.cmake Normal file
View file

@ -0,0 +1,45 @@
set(CPACK_PACKAGE_VENDOR "ZeroTier, Inc.")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ZeroTier network virtualization service
ZeroTier One lets you join ZeroTier virtual networks and
have them appear as tun/tap ports on your system. See
https://www.zerotier.com/ for instructions and
documentation.")
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_RELEASE ${PROJECT_VERSION_RELEASE})
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_GENERATOR "DEB")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "ZeroTier, Inc. <support@zerotier.com>")
set(CPACK_DEBIAN_PACKAGE_SECTION "net")
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://www.zerotier.com")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "iproute2, adduser")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
set(CPACK_DEBIAN_PACKAGE_REPLACES "zerotier-one")
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/postinst")
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin)
if(IS_DIRECTORY /lib/systemd/system)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.service
DESTINATION /lib/systemd/system
)
elseif(IS_DIRECTORY /usr/lib/systemd/system)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.service
DESTINATION /usr/lib/systemd/system
)
else()
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.init
DESTINATION /etc/init.d
)
endif()
include(CPack)

11
packaging/debian/postinst Normal file
View file

@ -0,0 +1,11 @@
#!/bin/sh -e
case "$1" in
configure)
if ! id zerotier >>/dev/null 2>&1; then
useradd --system --user-group --home-dir /var/lib/zerotier --no-create-home zerotier
fi
;;
esac
#DEBHELPER#

View file

@ -0,0 +1,49 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: zerotier
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: ZeroTier One network virtualization service
### END INIT INFO
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DESC="zerotier daemon"
NAME=zerotier
DAEMON=/usr/sbin/zerotier
PIDFILE=/var/lib/zerotier/zerotier.pid
SCRIPTNAME=/etc/init.d/"$NAME"
EXTRA_OPTS=service -d
test -f $DAEMON || exit 0
. /lib/lsb/init-functions
case "$1" in
start) log_daemon_msg "Starting ZeroTier One" "zerotier-one"
start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
log_end_msg $?
;;
stop) log_daemon_msg "Stopping ZeroTier One" "zerotier-one"
killproc -p $PIDFILE $DAEMON
RETVAL=$?
[ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
log_end_msg $RETVAL
;;
restart) log_daemon_msg "Restarting ZeroTier One" "zerotier-one"
$0 stop
$0 start
;;
reload|force-reload) log_daemon_msg "Reloading ZeroTier One" "zerotier-one"
log_end_msg 0
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*) log_action_msg "Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}"
exit 2
;;
esac
exit 0

View file

@ -0,0 +1,12 @@
[Unit]
Description=ZeroTier One
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/sbin/zerotier service
Restart=always
KillMode=process
[Install]
WantedBy=multi-user.target

15
packaging/rpm.cmake Normal file
View file

@ -0,0 +1,15 @@
set(CPACK_PACKAGE_VENDOR "ZeroTier, Inc.")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "zerotier")
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_RELEASE ${PROJECT_VERSION_RELEASE})
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_GENERATOR "RPM")
# set(CPACK_DEBIAN_PACKAGE_MAINTAINER "ZeroTier, Inc.")
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin)
include(CPack)

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 3.0)
project(zt_service_io_core) project(zt_service_io_core)
set(src set(src