فهرست منبع

non-static build debian packages

Grant Limberg 5 سال پیش
والد
کامیت
b126bf727a

+ 22 - 1
CMakeLists.txt

@@ -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()

+ 7 - 4
Jenkinsfile

@@ -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}"
-                    // 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
                     cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
                 }
                 }
             }
             }

+ 1 - 1
controller/CMakeLists.txt

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

+ 1 - 1
core/CMakeLists.txt

@@ -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(

+ 1 - 1
osdep/CMakeLists.txt

@@ -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 - 0
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. <[email protected]>")
+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 - 0
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#

+ 49 - 0
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

+ 12 - 0
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

+ 15 - 0
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)

+ 1 - 1
serviceiocore/CMakeLists.txt

@@ -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