From b126bf727a53a3064902fb3b5a8aad9fe65682e3 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 15:33:08 -0700 Subject: [PATCH] non-static build debian packages --- CMakeLists.txt | 23 ++++++++++++++- Jenkinsfile | 11 ++++--- controller/CMakeLists.txt | 2 +- core/CMakeLists.txt | 2 +- osdep/CMakeLists.txt | 2 +- packaging/debian.cmake | 45 ++++++++++++++++++++++++++++ packaging/debian/postinst | 11 +++++++ packaging/debian/zerotier.init | 49 +++++++++++++++++++++++++++++++ packaging/debian/zerotier.service | 12 ++++++++ packaging/rpm.cmake | 15 ++++++++++ serviceiocore/CMakeLists.txt | 2 +- 11 files changed, 165 insertions(+), 9 deletions(-) create mode 100644 packaging/debian.cmake create mode 100644 packaging/debian/postinst create mode 100644 packaging/debian/zerotier.init create mode 100644 packaging/debian/zerotier.service create mode 100644 packaging/rpm.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b9119941..158e69c3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,23 @@ 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_MINOR 9 CACHE INTERNAL "") set(ZEROTIER_VERSION_REVISION 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) cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) else() @@ -222,3 +234,12 @@ add_custom_target( COMMENT "Compiling Go Code..." ) 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() diff --git a/Jenkinsfile b/Jenkinsfile index 401f9abcc..8a35bbc04 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -377,11 +377,14 @@ def buildDebianNative() { sh 'whoami' dir("build") { - sh "${cmakeFlags} make -j4" + sh "${cmakeFlags} make setup" + dir("build") { + sh "make package" + } } - // sh "mkdir -p ${distro}" - // sh "mv *.deb ${distro}" - // archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true + sh "mkdir -p ${distro}" + sh "mv build/build/*.deb ${distro}" + archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } } diff --git a/controller/CMakeLists.txt b/controller/CMakeLists.txt index dc1cd0671..7f0d533fe 100644 --- a/controller/CMakeLists.txt +++ b/controller/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.0) project(zt_controller) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 219d3988d..df7c50c5e 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.8) +cmake_minimum_required (VERSION 3.0) project(zt_core) configure_file( diff --git a/osdep/CMakeLists.txt b/osdep/CMakeLists.txt index 8411a2df9..5921cf65b 100644 --- a/osdep/CMakeLists.txt +++ b/osdep/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.0) project(zt_osdep) set(src diff --git a/packaging/debian.cmake b/packaging/debian.cmake new file mode 100644 index 000000000..9ebd37d85 --- /dev/null +++ b/packaging/debian.cmake @@ -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. ") +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) diff --git a/packaging/debian/postinst b/packaging/debian/postinst new file mode 100644 index 000000000..a409d66fb --- /dev/null +++ b/packaging/debian/postinst @@ -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# diff --git a/packaging/debian/zerotier.init b/packaging/debian/zerotier.init new file mode 100644 index 000000000..dd7ed7b45 --- /dev/null +++ b/packaging/debian/zerotier.init @@ -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 diff --git a/packaging/debian/zerotier.service b/packaging/debian/zerotier.service new file mode 100644 index 000000000..85c15b4a2 --- /dev/null +++ b/packaging/debian/zerotier.service @@ -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 diff --git a/packaging/rpm.cmake b/packaging/rpm.cmake new file mode 100644 index 000000000..6bafede3d --- /dev/null +++ b/packaging/rpm.cmake @@ -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) diff --git a/serviceiocore/CMakeLists.txt b/serviceiocore/CMakeLists.txt index 8e30b57f6..c7db87c9e 100644 --- a/serviceiocore/CMakeLists.txt +++ b/serviceiocore/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.0) project(zt_service_io_core) set(src