From cea297b69d691cce8ef133bf7dc1cb3ebb1fa15d Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 17 Jun 2020 12:04:29 -0700 Subject: [PATCH 01/52] enable windows builds --- Jenkinsfile | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 4f1d4b39a..284190202 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -22,6 +22,7 @@ pipeline { tasks << buildDebianNative() tasks << buildCentosNative() tasks << buildMacOS() + tasks << buildWindows() parallel tasks } @@ -54,6 +55,30 @@ def buildMacOS() { return tasks } +def buildWindows() { + def tasks = [:] + tasks << getTasks(['windows'], ['amd64'], { unused1, unused2 -> + def myNode = { + node ('windows') { + dir ("build") { + checkout scm + dir ("build") { + bat """ + CALL C:\\MinGW\\set_distro_paths.bat + cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .. + make -j8 + """ + } + cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true + } + } + } + return myNode + }) + + return tasks +} + def buildStaticBinaries() { def tasks = [:] def dist = ["alpine"] From a7fee6b02f6c9a2f53b60dedb59a3dd69f909e0a Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 17 Jun 2020 12:14:50 -0700 Subject: [PATCH 02/52] playing with paths --- Jenkinsfile | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 284190202..9b4ef6cd2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,9 +7,6 @@ pipeline { parameters { booleanParam(name: "BUILD_ALL", defaultValue: false, description: "Build all supported platform/architecture combos. Defaults to x86/x64 only") } - environment { - PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" - } agent none @@ -42,6 +39,7 @@ def buildMacOS() { def tasks = [:] tasks << getTasks(['mac'],['amd64'], {unused1, unused2 -> def myNode = { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" node ('mac') { dir("build") { checkout scm @@ -92,6 +90,7 @@ def buildStaticBinaries() { tasks << getTasks(dist, archs, { distro, platform -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -140,6 +139,7 @@ def packageStatic() { tasks << getTasks(centos6, centos6Arch, { distro, arch -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -165,6 +165,7 @@ def packageStatic() { tasks << getTasks(centos7, centos7Arch, { distro, arch -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -191,6 +192,7 @@ def packageStatic() { tasks << getTasks(clefos7, clefos7Arch, { distro, arch -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -222,6 +224,7 @@ def packageStatic() { tasks << getTasks(debianJessie, debianJessieArch, { distro, arch -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -256,6 +259,7 @@ def packageStatic() { tasks << getTasks(ubuntuTrusty, ubuntuTrustyArch, { distro, arch -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -290,6 +294,7 @@ def packageStatic() { tasks << getTasks(debianJessie, debianJessieArch, { distro, arch -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -328,6 +333,7 @@ def buildDebianNative() { def build = { distro, arch -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -395,6 +401,7 @@ def buildCentosNative() { def build = { distro, arch -> def myNode = { node ('linux-build') { + env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } From 27b14aefcd726100bdb292211a400ce92cf6b3bb Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 17 Jun 2020 12:19:06 -0700 Subject: [PATCH 03/52] help it find cmd.exe --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 9b4ef6cd2..58ae2d9df 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,6 +58,7 @@ def buildWindows() { tasks << getTasks(['windows'], ['amd64'], { unused1, unused2 -> def myNode = { node ('windows') { + env.PATH = env.PATH + ";C:\\Windows\\system32" dir ("build") { checkout scm dir ("build") { From 992d1471b82c5e0102e3392ca9817ae274efa4ab Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 17 Jun 2020 12:28:48 -0700 Subject: [PATCH 04/52] add CMake and Go to Windows PATH --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 58ae2d9df..90f648574 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ def buildWindows() { tasks << getTasks(['windows'], ['amd64'], { unused1, unused2 -> def myNode = { node ('windows') { - env.PATH = env.PATH + ";C:\\Windows\\system32" + env.PATH = env.PATH + ';C:\\Windows\\system32;C:\\Program Files\\CMake\\bin;C:\\Go\\bin' dir ("build") { checkout scm dir ("build") { From d8c83dbb08e4e274c00f50c7eaa2ce2e2e25d2aa Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 17 Jun 2020 13:18:01 -0700 Subject: [PATCH 05/52] pita --- Jenkinsfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 90f648574..a5b3fac61 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,12 +58,13 @@ def buildWindows() { tasks << getTasks(['windows'], ['amd64'], { unused1, unused2 -> def myNode = { node ('windows') { - env.PATH = env.PATH + ';C:\\Windows\\system32;C:\\Program Files\\CMake\\bin;C:\\Go\\bin' + env.PATH = env.PATH + ';C:\\MinGW\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\Program Files\\CMake\\bin;C:\\Go\\bin' + env.C_PLUS_PLUS_INCLUDE_PATH = 'C:\\MinGW\\include;C:\\MinGW\\include\freetype2' + env.C_INCLUDE_PATH = 'C:\\MinGW\\include;C:\\MinGW\\include\freetype2' dir ("build") { checkout scm dir ("build") { bat """ - CALL C:\\MinGW\\set_distro_paths.bat cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .. make -j8 """ From 620fa9ab54ec083f114c9f2e9b84d47547c9b7f2 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 17 Jun 2020 13:26:36 -0700 Subject: [PATCH 06/52] =?UTF-8?q?=F0=9F=A4=B7=E2=80=8D=E2=99=82=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a5b3fac61..950202668 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -64,10 +64,8 @@ def buildWindows() { dir ("build") { checkout scm dir ("build") { - bat """ - cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .. - make -j8 - """ + bat 'cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ..' + bat 'make' } cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } From f21384e499a3b4b7fe60bed72ba4650cb0d5b5b6 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 10:54:31 -0700 Subject: [PATCH 07/52] windows fun --- Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 950202668..8ae9f0c66 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,14 +58,14 @@ def buildWindows() { tasks << getTasks(['windows'], ['amd64'], { unused1, unused2 -> def myNode = { node ('windows') { - env.PATH = env.PATH + ';C:\\MinGW\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\Program Files\\CMake\\bin;C:\\Go\\bin' - env.C_PLUS_PLUS_INCLUDE_PATH = 'C:\\MinGW\\include;C:\\MinGW\\include\freetype2' - env.C_INCLUDE_PATH = 'C:\\MinGW\\include;C:\\MinGW\\include\freetype2' + env.PATH = env.PATH + ';C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\Program Files\\CMake\\bin;C:\\Go\\bin' dir ("build") { checkout scm dir ("build") { - bat 'cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ..' - bat 'make' + bat """ + cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .. + mingw32-make + """ } cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } From b094278b6418c6d68ba4808ec68d9caa8774c6f4 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 10:59:46 -0700 Subject: [PATCH 08/52] explicitly set SHELL environment variable --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 8ae9f0c66..7d6eb1493 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,6 +58,7 @@ def buildWindows() { tasks << getTasks(['windows'], ['amd64'], { unused1, unused2 -> def myNode = { node ('windows') { + env.SHELL = 'C:/Windows/System32/cmd.exe' env.PATH = env.PATH + ';C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\Program Files\\CMake\\bin;C:\\Go\\bin' dir ("build") { checkout scm From 6ea60bc4290d402f175963400eaf03e2c2b03d21 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 11:26:57 -0700 Subject: [PATCH 09/52] let's see if paths with no spaces works --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7d6eb1493..123251ef8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ def buildWindows() { def myNode = { node ('windows') { env.SHELL = 'C:/Windows/System32/cmd.exe' - env.PATH = env.PATH + ';C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\Program Files\\CMake\\bin;C:\\Go\\bin' + env.PATH = 'C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\CMake\\bin;C:\\Go\\bin' dir ("build") { checkout scm dir ("build") { From ea5bb43cf9c91b6c5f7547602062b082a0237d66 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 11:58:00 -0700 Subject: [PATCH 10/52] windows 32bit builds --- CMakeLists.txt | 11 +++++++++++ Jenkinsfile | 10 ++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d2620512f..3615bb0a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,17 @@ if(WIN32) -trimpath ) + option(BUILD_32BIT "Force building as 32-bit binary" OFF) + + if(BUILD_32BIT) + set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags") + set(GOARCH "GOARCH=386" CACHE STRING "go architecture") + add_compile_options( + -m32 + ) + endif(BUILD_32BIT) else(WIN32) set(GOFLAGS diff --git a/Jenkinsfile b/Jenkinsfile index 123251ef8..45724c366 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -55,16 +55,22 @@ def buildMacOS() { def buildWindows() { def tasks = [:] - tasks << getTasks(['windows'], ['amd64'], { unused1, unused2 -> + tasks << getTasks(['windows'], ['amd64', 'i386'], { unused1, platform -> def myNode = { node ('windows') { env.SHELL = 'C:/Windows/System32/cmd.exe' env.PATH = 'C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\CMake\\bin;C:\\Go\\bin' dir ("build") { checkout scm + + dir ("build") { + def cmakeFlags = "" + if (platform == "i386") { + cmakeFlags = '-DBUILD_32BIT=1' + } bat """ - cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .. + cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ${cmakeFlags} .. mingw32-make """ } From b369d4b9a1c8ffc04246dc67d0642bec6285e7f5 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 13:01:05 -0700 Subject: [PATCH 11/52] fix 32-bit windows build --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3615bb0a3..6b9119941 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,9 @@ if(WIN32) add_compile_options( -m32 ) + add_link_options( + -m32 + ) endif(BUILD_32BIT) else(WIN32) From 7ae9c6d55c04c489fd72aad4293a2f6e1969cb85 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 13:19:30 -0700 Subject: [PATCH 12/52] . --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 45724c366..bb94c5ef5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -97,7 +97,7 @@ def buildStaticBinaries() { tasks << getTasks(dist, archs, { distro, platform -> def myNode = { node ('linux-build') { - env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" + env.PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } @@ -340,7 +340,7 @@ def buildDebianNative() { def build = { distro, arch -> def myNode = { node ('linux-build') { - env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" + env.PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" dir ("build") { checkout scm } From fa4ecea09584fe818426cd3905e575f8a26b45c8 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 13:34:01 -0700 Subject: [PATCH 13/52] wtf --- Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index bb94c5ef5..fb25fe037 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,6 +7,9 @@ pipeline { parameters { booleanParam(name: "BUILD_ALL", defaultValue: false, description: "Build all supported platform/architecture combos. Defaults to x86/x64 only") } + environment { + PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" + } agent none From ade8373c0cc3d7715124e3d6c7cba29999571acb Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 13:44:19 -0700 Subject: [PATCH 14/52] because reasons --- Jenkinsfile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index fb25fe037..94d5da27b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,20 +62,20 @@ def buildWindows() { def myNode = { node ('windows') { env.SHELL = 'C:/Windows/System32/cmd.exe' - env.PATH = 'C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\CMake\\bin;C:\\Go\\bin' dir ("build") { checkout scm - dir ("build") { - def cmakeFlags = "" - if (platform == "i386") { - cmakeFlags = '-DBUILD_32BIT=1' + withEnv(["PATH=C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\CMake\\bin;C:\\Go\\bin"]) { + def cmakeFlags = "" + if (platform == "i386") { + cmakeFlags = '-DBUILD_32BIT=1' + } + bat """ + cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ${cmakeFlags} .. + mingw32-make + """ } - bat """ - cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ${cmakeFlags} .. - mingw32-make - """ } cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } From f989758159dd14b8fae9663268dfc071e5998d98 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 13:46:57 -0700 Subject: [PATCH 15/52] parallelize windows build --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 94d5da27b..2a9ffcaf7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -73,7 +73,7 @@ def buildWindows() { } bat """ cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ${cmakeFlags} .. - mingw32-make + mingw32-make -j8 """ } } From a66b4a6f5e035dff9a9b2d744fca8822dc0df837 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 15:26:29 -0700 Subject: [PATCH 16/52] add freebsd build target --- Jenkinsfile | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2a9ffcaf7..2c12dd59e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -23,6 +23,7 @@ pipeline { tasks << buildCentosNative() tasks << buildMacOS() tasks << buildWindows() + tasks << buildFreeBSD() parallel tasks } @@ -47,8 +48,8 @@ def buildMacOS() { dir("build") { checkout scm sh 'make' - cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } + cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } } return myNode @@ -87,6 +88,23 @@ def buildWindows() { return tasks } +def buildFreeBSD() { + def tasks = [:] + tasks << getTasks(['freebsd12'], ['amd64'], { unused, unused -> + def myNode = { + node ('freebsd12') { + dir('build') { + checkout scm + sh 'make' + } + cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true + } + } + return myNode + }) + return tasks +} + def buildStaticBinaries() { def tasks = [:] def dist = ["alpine"] From cc13bf10493983d4c9a0858f1ec1bb6f5bd531b8 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 15:35:35 -0700 Subject: [PATCH 17/52] fix jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2c12dd59e..d86df2ba1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -90,7 +90,7 @@ def buildWindows() { def buildFreeBSD() { def tasks = [:] - tasks << getTasks(['freebsd12'], ['amd64'], { unused, unused -> + tasks << getTasks(['freebsd12'], ['amd64'], { unused1, unused2 -> def myNode = { node ('freebsd12') { dir('build') { From 0477e168604c4662065a0bd3eaaedb8436a02845 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 18 Jun 2020 16:31:15 -0700 Subject: [PATCH 18/52] freebsd doesn't like the root makefile --- Jenkinsfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d86df2ba1..401f9abcc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -95,7 +95,10 @@ def buildFreeBSD() { node ('freebsd12') { dir('build') { checkout scm - sh 'make' + sh 'make setup' + dir('build') { + sh 'make -j4' + } } cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } From b126bf727a53a3064902fb3b5a8aad9fe65682e3 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 15:33:08 -0700 Subject: [PATCH 19/52] 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 From 517a171a6ca4d64da0c54e793170b16aac258f1f Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 15:35:42 -0700 Subject: [PATCH 20/52] dont split debian description over multiple lines --- packaging/debian.cmake | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packaging/debian.cmake b/packaging/debian.cmake index 9ebd37d85..9e8dc4a6d 100644 --- a/packaging/debian.cmake +++ b/packaging/debian.cmake @@ -1,9 +1,5 @@ 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_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}) From 1b8703db952de98db12b2948cb7a2da90d755c2e Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 15:40:48 -0700 Subject: [PATCH 21/52] add cmake package args --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8a35bbc04..2df8cfddc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -370,9 +370,9 @@ def buildDebianNative() { } def runtime = docker.image("ztbuild/${distro}-${arch}:latest") runtime.inside { - def cmakeFlags = "" + def cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB"' if (arch == "i386") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB"' } sh 'whoami' From 1abcb5adf5f146126a2750a5a1853163ec4989b0 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 15:42:33 -0700 Subject: [PATCH 22/52] parallelize make --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2df8cfddc..363919d82 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -379,7 +379,7 @@ def buildDebianNative() { dir("build") { sh "${cmakeFlags} make setup" dir("build") { - sh "make package" + sh "make package -j4" } } sh "mkdir -p ${distro}" From 02493d473fb79b83085601849e81b9edd7fc4954 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 16:21:47 -0700 Subject: [PATCH 23/52] basic RPM package still needs systemd/init scripts --- CMakeLists.txt | 2 +- packaging/rpm.cmake | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 158e69c3c..3d0b33ef6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -239,7 +239,7 @@ 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") - + include(packaging/rpm.cmake) else() endif() diff --git a/packaging/rpm.cmake b/packaging/rpm.cmake index 6bafede3d..d5ebffadc 100644 --- a/packaging/rpm.cmake +++ b/packaging/rpm.cmake @@ -7,8 +7,13 @@ 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.") - +set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") +set(CPACK_RPM_PACKAGE_RELEASE_DIST "%{dist}") +set(CPACK_RPM_PACKAGE_VENDOR "ZeroTier, Inc.") +set(CPACK_RPM_PACKAGE_AUTOREQ 1) +set(CPACK_RPM_PACKAGE_REQUIRES "systemd, iproute, libstdc++") +set(CPACK_RPM_PACKAGE_REQUIRES_PRE "/usr/sbin/useradd, /usr/bin/getent") +set(CPACK_RPM_PACKAGE_OBSOLETES "zerotier-one") install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin) From fb559434b6f8af77e73e318e000c7c4a2308080b Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 16:24:32 -0700 Subject: [PATCH 24/52] jenkins builds rpms --- Jenkinsfile | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 363919d82..f7070fe48 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -443,15 +443,17 @@ def buildCentosNative() { runtime.inside { dir("build") { if (distro == 'centos7' && arch == 'amd64') { - sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && make' + sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && CMAKE_ARGS="-DZT_PACKAGE_FORMAT=RPM" make setup' } else { - sh 'make' + sh 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=RPM" make setup' + } + dir ("build") { + sh 'make package -j4' } - // sh 'make redhat' - // sh "mkdir -p ${distro}" - // sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/" - // archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true } + sh "mkdir -p ${distro}" + sh "cp -av build/build/*.rpm` ${distro}/" + archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } From 4cafc1b776eaabbf0d76546a38f85ba68e2665c6 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 16:32:43 -0700 Subject: [PATCH 25/52] extraneous ` in rpm building --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index f7070fe48..fd7eb5215 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -452,7 +452,7 @@ def buildCentosNative() { } } sh "mkdir -p ${distro}" - sh "cp -av build/build/*.rpm` ${distro}/" + sh "cp -av build/build/*.rpm ${distro}/" archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true From 05cc4ea36a4474cce8d11efd37ebd3853201b4ad Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 16:36:04 -0700 Subject: [PATCH 26/52] dont use __has_include --- core/Constants.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/Constants.hpp b/core/Constants.hpp index f8e1a562d..693ba02d8 100644 --- a/core/Constants.hpp +++ b/core/Constants.hpp @@ -17,9 +17,7 @@ #include "zerotier.h" #include "OS.hpp" -#if __has_include("version.h") #include "version.h" -#endif /** * Version bit packed into four 16-bit fields in a 64-bit unsigned integer. From 050615f2d22d06c90a2707480e2eb91bd75142c2 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2020 16:50:42 -0700 Subject: [PATCH 27/52] fix centos7 x64 --- Jenkinsfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index fd7eb5215..b75a3bec3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -448,7 +448,11 @@ def buildCentosNative() { sh 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=RPM" make setup' } dir ("build") { - sh 'make package -j4' + if (distro == 'centos7' && arch == 'amd64') { + sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && make package -j4' + } else { + sh 'make package -j4' + } } } sh "mkdir -p ${distro}" From 930bd91598396aa7261c458360c1b8efae2baf66 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 22 Jun 2020 09:49:25 -0700 Subject: [PATCH 28/52] finish up rpm generation --- packaging/rpm.cmake | 24 ++++++++++++++++++++++++ packaging/rpm/rpm.changelog | 2 ++ packaging/rpm/rpm.post | 17 +++++++++++++++++ packaging/rpm/rpm.postun | 6 ++++++ packaging/rpm/rpm.pre | 6 ++++++ packaging/rpm/rpm.preun | 18 ++++++++++++++++++ 6 files changed, 73 insertions(+) create mode 100644 packaging/rpm/rpm.changelog create mode 100644 packaging/rpm/rpm.post create mode 100644 packaging/rpm/rpm.postun create mode 100644 packaging/rpm/rpm.pre create mode 100644 packaging/rpm/rpm.preun diff --git a/packaging/rpm.cmake b/packaging/rpm.cmake index d5ebffadc..9e684552d 100644 --- a/packaging/rpm.cmake +++ b/packaging/rpm.cmake @@ -4,6 +4,7 @@ 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_RPM_PACKAGE_DESCRIPTION "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_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") set(CPACK_GENERATOR "RPM") @@ -14,7 +15,30 @@ set(CPACK_RPM_PACKAGE_AUTOREQ 1) set(CPACK_RPM_PACKAGE_REQUIRES "systemd, iproute, libstdc++") set(CPACK_RPM_PACKAGE_REQUIRES_PRE "/usr/sbin/useradd, /usr/bin/getent") set(CPACK_RPM_PACKAGE_OBSOLETES "zerotier-one") +set(CPACK_PACKAGE_RELOCATABLE FALSE) + +set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.pre") +set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.post") +set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.postun") +set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.preun") +set(CPACK_RPM_CHANGELOG_FILE" ${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.changelog") 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/rpm/rpm.changelog b/packaging/rpm/rpm.changelog new file mode 100644 index 000000000..9d1429ca0 --- /dev/null +++ b/packaging/rpm/rpm.changelog @@ -0,0 +1,2 @@ +* Mon Jun 22, 2020 ZeroTier, Inc. - 1.9.0-0 +- see https://github.com/zerotier/ZeroTierOne for release notes diff --git a/packaging/rpm/rpm.post b/packaging/rpm/rpm.post new file mode 100644 index 000000000..6b54239e0 --- /dev/null +++ b/packaging/rpm/rpm.post @@ -0,0 +1,17 @@ +%if 0%{?rhel} >= 7 +%systemd_post zerotier-one.service +%endif +%if 0%{?fedora} >= 21 +%systemd_post zerotier-one.service +%endif +%if 0%{?rhel} <= 6 +case "$1" in + 1) + chkconfig --add zerotier-one + ;; + 2) + chkconfig --del zerotier-one + chkconfig --add zerotier-one + ;; +esac +%endif diff --git a/packaging/rpm/rpm.postun b/packaging/rpm/rpm.postun new file mode 100644 index 000000000..714bad0a6 --- /dev/null +++ b/packaging/rpm/rpm.postun @@ -0,0 +1,6 @@ +%if 0%{?rhel} >= 7 +%systemd_postun_with_restart zerotier-one.service +%endif +%if 0%{?fedora} >= 21 +%systemd_postun_with_restart zerotier-one.service +%endif diff --git a/packaging/rpm/rpm.pre b/packaging/rpm/rpm.pre new file mode 100644 index 000000000..f1c474d7d --- /dev/null +++ b/packaging/rpm/rpm.pre @@ -0,0 +1,6 @@ +%if 0%{?rhel} >= 7 +/usr/bin/getent passwd zerotier-one || /usr/sbin/useradd -r -d /var/lib/zerotier-one -s /sbin/nologin zerotier-one +%endif +%if 0%{?fedora} >= 21 +/usr/bin/getent passwd zerotier-one || /usr/sbin/useradd -r -d /var/lib/zerotier-one -s /sbin/nologin zerotier-one +%endif diff --git a/packaging/rpm/rpm.preun b/packaging/rpm/rpm.preun new file mode 100644 index 000000000..ee4a5cda1 --- /dev/null +++ b/packaging/rpm/rpm.preun @@ -0,0 +1,18 @@ +%if 0%{?rhel} >= 7 +%systemd_preun zerotier-one.service +%endif +%if 0%{?fedora} >= 21 +%systemd_preun zerotier-one.service +%endif +%if 0%{?rhel} <= 6 +case "$1" in + 0) + service zerotier-one stop + chkconfig --del zerotier-one + ;; + 1) + # This is an upgrade. + : + ;; +esac +%endif From 7c6f5e2c3793767e352d12c3534d8fec29a2311b Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 22 Jun 2020 11:00:48 -0700 Subject: [PATCH 29/52] make install works on Linux --- CMakeLists.txt | 19 +++++++++++++++++++ packaging/debian.cmake | 19 ------------------- packaging/rpm.cmake | 18 ------------------ 3 files changed, 19 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d0b33ef6..33cbae4e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,6 +235,25 @@ add_custom_target( ) add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core) +install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin) +if("${CMAKE_SYSTEM_NAME}" EQUAL "Linux") + 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() +endif() if("${ZT_PACKAGE_FORMAT}" MATCHES "DEB") include(packaging/debian.cmake) diff --git a/packaging/debian.cmake b/packaging/debian.cmake index 9e8dc4a6d..4e7d17c8c 100644 --- a/packaging/debian.cmake +++ b/packaging/debian.cmake @@ -19,23 +19,4 @@ set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/packaging/de 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/rpm.cmake b/packaging/rpm.cmake index 9e684552d..bb47ea393 100644 --- a/packaging/rpm.cmake +++ b/packaging/rpm.cmake @@ -23,22 +23,4 @@ set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/ set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.preun") set(CPACK_RPM_CHANGELOG_FILE" ${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.changelog") -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) From 09a8b66d3b4f783a4ff0873f8799b6f0cc9551ef Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 22 Jun 2020 13:50:35 -0700 Subject: [PATCH 30/52] enable -DPACKAGE_STATIC=1 builds Only configures the project for packaging of the statically built binary placed in build/ --- CMakeLists.txt | 356 +++++++++++++++++++++++++------------------------ 1 file changed, 182 insertions(+), 174 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 33cbae4e3..900b6237e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,143 +17,72 @@ project(zerotier DESCRIPTION "ZeroTier Network Hypervisor" LANGUAGES CXX C) - if(${CMAKE_VERSION} VERSION_LESS 3.15) cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) else() cmake_policy(VERSION 3.15) endif() -find_program( - GO go - HINTS "/usr/local/go/bin" "C:/go/bin" -) - -if(NOT GO) - message(FATAL_ERROR "Golang not found") -else(NOT GO) - message(STATUS "Found Golang at ${GO}") -endif(NOT GO) - -set(CMAKE_CXX_STANDARD 11) -set(default_build_type "Release") - -if(WIN32) - set(CMAKE_SYSTEM_VERSION "7" CACHE STRING INTERNAL FORCE) -endif(WIN32) - -set(CMAKE_OSX_DEPLOYMENT_TARGET "10.12" CACHE STRING "Minimum OS X Deployment Version") - -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - message(STATUS "Setting build type to '${default_build_type}' as none was specified.") - set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") -endif() - -option(BUILD_CENTRAL_CONTROLLER "Build ZeroTier Central Controller" OFF) -if(BUILD_CENTRAL_CONTROLLER) - find_package(PkgConfig REQUIRED) - if(APPLE) - set(CMAKE_PREFIX_PATH - ${CMAKE_PREFIX_PATH} - /usr/local/opt/libpq - /usr/local/lib - ) - endif(APPLE) - find_package(PostgreSQL REQUIRED) - - pkg_check_modules(hiredis REQUIRED IMPORTED_TARGET hiredis) - - add_subdirectory(controller/thirdparty/redis-plus-plus-1.1.1) - set(redispp_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/controller/thirdparty/redis-plus-plus-1.1.1/src/sw) - set(redispp_STATIC_LIB redispp_static) -endif(BUILD_CENTRAL_CONTROLLER) - -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - add_definitions(-DZT_DEBUG) -endif(CMAKE_BUILD_TYPE STREQUAL "Debug") - -if(WIN32) - - message("++ Setting Windows Compiler Flags ${CMAKE_BUILD_TYPE}") - add_definitions(-DNOMINMAX) - - set(GOFLAGS - -trimpath +if(NOT PACKAGE_STATIC) + find_program( + GO go + HINTS "/usr/local/go/bin" "C:/go/bin" ) - option(BUILD_32BIT "Force building as 32-bit binary" OFF) + if(NOT GO) + message(FATAL_ERROR "Golang not found") + else(NOT GO) + message(STATUS "Found Golang at ${GO}") + endif(NOT GO) - if(BUILD_32BIT) - set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags") - set(GOARCH "GOARCH=386" CACHE STRING "go architecture") - add_compile_options( - -m32 - ) - add_link_options( - -m32 - ) - endif(BUILD_32BIT) -else(WIN32) + set(CMAKE_CXX_STANDARD 11) + set(default_build_type "Release") - set(GOFLAGS - -trimpath - -buildmode=pie - ) + if(WIN32) + set(CMAKE_SYSTEM_VERSION "7" CACHE STRING INTERNAL FORCE) + endif(WIN32) - if(APPLE) + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.12" CACHE STRING "Minimum OS X Deployment Version") - message("++ Setting MacOS Compiler Flags ${CMAKE_BUILD_TYPE}") + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "Setting build type to '${default_build_type}' as none was specified.") + set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") + endif() - add_compile_options( - -Wall - -Wno-deprecated - -Wno-unused-function - -mmacosx-version-min=10.12 - $<$:-g> - $<$:-O0> - $<$:-Ofast> - $<$:-ffast-math> - $<$:-fPIE> - $<$:-flto> - $<$:-O1> - $<$:-fPIE> - $<$:-g> - ) + option(BUILD_CENTRAL_CONTROLLER "Build ZeroTier Central Controller" OFF) + if(BUILD_CENTRAL_CONTROLLER) + find_package(PkgConfig REQUIRED) + if(APPLE) + set(CMAKE_PREFIX_PATH + ${CMAKE_PREFIX_PATH} + /usr/local/opt/libpq + /usr/local/lib + ) + endif(APPLE) + find_package(PostgreSQL REQUIRED) + + pkg_check_modules(hiredis REQUIRED IMPORTED_TARGET hiredis) + + add_subdirectory(controller/thirdparty/redis-plus-plus-1.1.1) + set(redispp_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/controller/thirdparty/redis-plus-plus-1.1.1/src/sw) + set(redispp_STATIC_LIB redispp_static) + endif(BUILD_CENTRAL_CONTROLLER) - add_link_options( - -mmacosx-version-min=10.12 - $<$:-flto> - ) + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(-DZT_DEBUG) + endif(CMAKE_BUILD_TYPE STREQUAL "Debug") + + if(WIN32) + + message("++ Setting Windows Compiler Flags ${CMAKE_BUILD_TYPE}") + add_definitions(-DNOMINMAX) set(GOFLAGS - ${GOFLAGS} - -a - -ldflags '-w -extldflags \"-Wl,-undefined -Wl,dynamic_lookup\"' - ) - - else(APPLE) - - message("++ Setting Linux/BSD/Posix Compiler Flags (${CMAKE_BUILD_TYPE})") - add_compile_options( - -Wall - -Wno-deprecated - -Wno-unused-function - -Wno-format - $<$:-g> - $<$:-O0> - $<$:-O3> - $<$:-ffast-math> - $<$:-fPIE> - $<$:-O3> - $<$:-fPIE> - $<$:-g> + -trimpath ) option(BUILD_32BIT "Force building as 32-bit binary" OFF) - option(BUILD_STATIC "Build statically linked executable" OFF) if(BUILD_32BIT) set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor") @@ -163,79 +92,158 @@ else(WIN32) add_compile_options( -m32 ) - endif(BUILD_32BIT) - - if(BUILD_STATIC) add_link_options( - -static + -m32 ) - set(CMAKE_EXE_LINKER_FLAGS "-static ${CMAKE_EXE_LINKER_FLAGS}") - set(GOFLAGS - ${GOFLAGS} - -a - -tags netgo - -ldflags '-w -extldflags \"-static -Wl,-unresolved-symbols=ignore-all\"' + endif(BUILD_32BIT) + else(WIN32) + + set(GOFLAGS + -trimpath + -buildmode=pie + ) + + if(APPLE) + + message("++ Setting MacOS Compiler Flags ${CMAKE_BUILD_TYPE}") + + add_compile_options( + -Wall + -Wno-deprecated + -Wno-unused-function + -mmacosx-version-min=10.12 + $<$:-g> + $<$:-O0> + $<$:-Ofast> + $<$:-ffast-math> + $<$:-fPIE> + $<$:-flto> + $<$:-O1> + $<$:-fPIE> + $<$:-g> ) - else(BUILD_STATIC) + + add_link_options( + -mmacosx-version-min=10.12 + $<$:-flto> + ) + set(GOFLAGS ${GOFLAGS} -a - -tags netgo - -ldflags '-w -extldflags \"-Wl,-unresolved-symbols=ignore-all\"' + -ldflags '-w -extldflags \"-Wl,-undefined -Wl,dynamic_lookup\"' ) - endif(BUILD_STATIC) - endif(APPLE) -endif(WIN32) + else(APPLE) -if ( - CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR - CMAKE_SYSTEM_PROCESSOR MATCHES "amd64" OR - CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64" -) - message("++ Adding flags for processor ${CMAKE_SYSTEM_PROCESSOR}") - add_compile_options(-maes -mrdrnd -mpclmul -msse -msse2 -mssse3) -endif() + message("++ Setting Linux/BSD/Posix Compiler Flags (${CMAKE_BUILD_TYPE})") + add_compile_options( + -Wall + -Wno-deprecated + -Wno-unused-function + -Wno-format + $<$:-g> + $<$:-O0> + $<$:-O3> + $<$:-ffast-math> + $<$:-fPIE> + $<$:-O3> + $<$:-fPIE> + $<$:-g> + ) -set(GO_BUILD_TAGS) + option(BUILD_32BIT "Force building as 32-bit binary" OFF) + option(BUILD_STATIC "Build statically linked executable" OFF) -if(BUILD_CENTRAL_CONTROLLER) - add_definitions(-DZT_CONTROLLER_USE_LIBPQ=1) - set(GO_BUILD_TAGS -tags central) -endif(BUILD_CENTRAL_CONTROLLER) + if(BUILD_32BIT) + set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags") + set(GOARCH "GOARCH=386" CACHE STRING "go architecture") + add_compile_options( + -m32 + ) + endif(BUILD_32BIT) -add_subdirectory(core) -add_subdirectory(controller) -add_subdirectory(osdep) -add_subdirectory(serviceiocore) + if(BUILD_STATIC) + add_link_options( + -static + ) + set(CMAKE_EXE_LINKER_FLAGS "-static ${CMAKE_EXE_LINKER_FLAGS}") + set(GOFLAGS + ${GOFLAGS} + -a + -tags netgo + -ldflags '-w -extldflags \"-static -Wl,-unresolved-symbols=ignore-all\"' + ) + else(BUILD_STATIC) + set(GOFLAGS + ${GOFLAGS} + -a + -tags netgo + -ldflags '-w -extldflags \"-Wl,-unresolved-symbols=ignore-all\"' + ) + endif(BUILD_STATIC) -file(GLOB go_src - ${CMAKE_SOURCE_DIR}/cmd/*.go - ${CMAKE_SOURCE_DIR}/cmd/cmd/*.go - ${CMAKE_SOURCE_DIR}/pkg/zerotier/*.go) + endif(APPLE) + endif(WIN32) -if(WIN32) - set(GO_EXE_NAME "zerotier.exe") - set(GO_EXTRA_LIBRARIES "-lstdc++ -lwsock32 -lws2_32 -liphlpapi -lole32 -loleaut32 -lrpcrt4 -luuid") -else(WIN32) - set(GO_EXE_NAME "zerotier") - if(CMAKE_SYSTEM_NAME MATCHES "Linux") - set(GO_EXTRA_LIBRARIES "-lstdc++") - else() - set(GO_EXTRA_LIBRARIES "-lc++") + if ( + CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "amd64" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64" + ) + message("++ Adding flags for processor ${CMAKE_SYSTEM_PROCESSOR}") + add_compile_options(-maes -mrdrnd -mpclmul -msse -msse2 -mssse3) endif() -endif(WIN32) -add_custom_target( - zerotier ALL - BYPRODUCTS ${CMAKE_BINARY_DIR}/zerotier - SOURCES ${go_src} - COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$ $ $ $ ${GO_EXTRA_LIBRARIES}\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_EXE_NAME} ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go - COMMENT "Compiling Go Code..." -) -add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core) + set(GO_BUILD_TAGS) + + if(BUILD_CENTRAL_CONTROLLER) + add_definitions(-DZT_CONTROLLER_USE_LIBPQ=1) + set(GO_BUILD_TAGS -tags central) + endif(BUILD_CENTRAL_CONTROLLER) + + add_subdirectory(core) + add_subdirectory(controller) + add_subdirectory(osdep) + add_subdirectory(serviceiocore) + + file(GLOB go_src + ${CMAKE_SOURCE_DIR}/cmd/*.go + ${CMAKE_SOURCE_DIR}/cmd/cmd/*.go + ${CMAKE_SOURCE_DIR}/pkg/zerotier/*.go) + + if(WIN32) + set(GO_EXE_NAME "zerotier.exe") + set(GO_EXTRA_LIBRARIES "-lstdc++ -lwsock32 -lws2_32 -liphlpapi -lole32 -loleaut32 -lrpcrt4 -luuid") + else(WIN32) + set(GO_EXE_NAME "zerotier") + if(CMAKE_SYSTEM_NAME MATCHES "Linux") + set(GO_EXTRA_LIBRARIES "-lstdc++") + else() + set(GO_EXTRA_LIBRARIES "-lc++") + endif() + endif(WIN32) + + add_custom_target( + zerotier ALL + BYPRODUCTS ${CMAKE_BINARY_DIR}/zerotier + SOURCES ${go_src} + COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$ $ $ $ ${GO_EXTRA_LIBRARIES}\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_EXE_NAME} ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go + COMMENT "Compiling Go Code..." + ) + add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin) +else(NOT PACKAGE_STATIC) + set(STATIC_BINARY ${CMAKE_BINARY_DIR}/zerotier) + set(IMPORTED_LOCATION ${CMAKE_BINARY_DIR}) + add_executable(zerotier IMPORTED GLOBAL) + install(PROGRAMS ${STATIC_BINARY} DESTINATION bin) +endif(NOT PACKAGE_STATIC) + + -install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin) if("${CMAKE_SYSTEM_NAME}" EQUAL "Linux") if(IS_DIRECTORY /lib/systemd/system) install( From 9009a864ab1c425462ddb9805b5800ad76f4d077 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 22 Jun 2020 14:03:27 -0700 Subject: [PATCH 31/52] re-enable static build packaging with updates --- Jenkinsfile | 96 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 41 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b75a3bec3..f26b676c8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -29,13 +29,13 @@ pipeline { } } } - // stage ("Package Static") { - // steps { - // script { - // parallel packageStatic() - // } - // } - // } + stage ("Package Static") { + steps { + script { + parallel packageStatic() + } + } + } } } @@ -178,10 +178,14 @@ def packageStatic() { runtime.inside { dir("build") { unstash "static-${arch}" - sh "mv zerotier-static-${arch} zerotier && chmod +x zerotier" - sh "make redhat" + sh "mkdir -p build" + sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" + sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup' + dir("build") { + sh 'make package' + } sh "mkdir -p ${distro}" - sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/" + sh "cp -av build/*.rpm ${distro}/" archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true } } @@ -204,10 +208,14 @@ def packageStatic() { runtime.inside { dir("build") { unstash "static-${arch}" - sh "mv zerotier-static-${arch} zerotier && chmod +x zerotier" - sh "make redhat" + sh "mkdir -p build" + sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" + sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup' + dir("build") { + sh 'make package' + } sh "mkdir -p ${distro}" - sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/" + sh "cp -av build/*.rpm ${distro}/" archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true } } @@ -231,10 +239,14 @@ def packageStatic() { runtime.inside { dir("build/") { unstash "static-${arch}" - sh "mv zerotier-static-${arch} zerotier && chmod +x zerotier" - sh "make redhat" + sh "mkdir -p build" + sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" + sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup' + dir("build") { + sh 'make package' + } sh "mkdir -p ${distro}" - sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/" + sh "cp -av build/*.rpm ${distro}/" archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true } } @@ -261,18 +273,18 @@ def packageStatic() { } def runtime = docker.image("ztbuild/${distro}-${arch}:latest") runtime.inside { - sh "ls -la ." dir('build/') { - sh "ls -la ." unstash "static-${arch}" - sh "pwd" - sh "mv zerotier-static-${arch} zerotier && chmod +x zerotier && file ./zerotier" - sh "mv -f debian/rules.static debian/rules" - sh "make debian" + sh "mkdir -p build" + sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" + sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB" make setup' + dir("build") { + sh 'make package' + } + sh "mkdir -p ${distro}" + sh "cp -av build/*.deb ${distro}/" + archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true } - sh "mkdir -p ${distro}" - sh "mv *.deb ${distro}" - archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true } cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } @@ -296,18 +308,18 @@ def packageStatic() { } def runtime = docker.image("ztbuild/${distro}-${arch}:latest") runtime.inside { - sh "ls -la ." dir('build/') { - sh "ls -la ." unstash "static-${arch}" - sh "pwd" - sh "mv zerotier-static-${arch} zerotier && chmod +x zerotier && file ./zerotier" - sh "mv -f debian/rules.static debian/rules" - sh "make debian" + sh "mkdir -p build" + sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" + sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB" make setup' + dir("build") { + sh 'make package' + } + sh "mkdir -p ${distro}" + sh "cp -av build/*.deb ${distro}/" + archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true } - sh "mkdir -p ${distro}" - sh "mv *.deb ${distro}" - archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true } cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } @@ -333,14 +345,16 @@ def packageStatic() { runtime.inside { dir('build/') { unstash "static-${arch}" - sh "mv zerotier-static-${arch} zerotier && chmod +x zerotier && file ./zerotier" - sh "mv -f debian/rules.wheezy.static debian/rules" - sh "mv -f debian/control.wheezy debian/control" - sh "make debian" + sh "mkdir -p build" + sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" + sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB" make setup' + dir("build") { + sh 'make package' + } + sh "mkdir -p ${distro}" + sh "cp -av build/*.deb ${distro}/" + archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true } - sh "mkdir -p ${distro}" - sh "mv *.deb ${distro}" - archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true } cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true } From 52b619b38f344b3388dc71b289f5fb737c76e321 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 22 Jun 2020 14:34:23 -0700 Subject: [PATCH 32/52] temporarily disable builds of Debian Stretch, FreeBSD, Ubuntu Bionic AMD64, and Ubuntu Xenial --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f26b676c8..d7de2ef55 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -23,7 +23,7 @@ pipeline { tasks << buildCentosNative() tasks << buildMacOS() tasks << buildWindows() - tasks << buildFreeBSD() + // tasks << buildFreeBSD() parallel tasks } @@ -367,7 +367,7 @@ def packageStatic() { def buildDebianNative() { def tasks = [:] - def buster = ["debian-buster", "debian-stretch", "debian-bullseye", "debian-sid"] + def buster = ["debian-buster", /*"debian-stretch",*/ "debian-bullseye", "debian-sid"] def busterArchs = [] if (params.BUILD_ALL) { busterArchs = ["s390x", "ppc64le", "i386", "armhf", "armel", "arm64", "amd64"] @@ -416,14 +416,14 @@ def buildDebianNative() { } else { xenialArchs = ["i386", "amd64"] } - tasks << getTasks(xenial, xenialArchs, build) + //tasks << getTasks(xenial, xenialArchs, build) def ubuntu = ["ubuntu-bionic", "ubuntu-eoan"] def ubuntuArchs = [] if (params.BUILD_ALL == true) { ubuntuArchs = ["i386", "amd64", "armhf", "arm64", "ppc64le", "s390x"] } else { - ubuntuArchs = ["i386", "amd64"] + ubuntuArchs = ["i386" /*, "amd64"*/] } tasks << getTasks(ubuntu, ubuntuArchs, build) From 34692489cb7b8b4bc7fa73a45f3a408dffe3a083 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 22 Jun 2020 15:04:45 -0700 Subject: [PATCH 33/52] RIP Centos 6 --- dockerbuild/Dockerfile.centos6 | 20 -------------------- dockerbuild/Dockerfile.centos6-i386 | 21 --------------------- dockerbuild/Dockerfile.centos7-i386 | 7 +++++-- dockerbuild/Makefile | 2 -- 4 files changed, 5 insertions(+), 45 deletions(-) delete mode 100644 dockerbuild/Dockerfile.centos6 delete mode 100644 dockerbuild/Dockerfile.centos6-i386 diff --git a/dockerbuild/Dockerfile.centos6 b/dockerbuild/Dockerfile.centos6 deleted file mode 100644 index 6b8f023ed..000000000 --- a/dockerbuild/Dockerfile.centos6 +++ /dev/null @@ -1,20 +0,0 @@ -FROM centos:6 - -ARG go_pkg_url - -RUN yum update -y -RUN yum install -y curl git wget openssh-server sudo make rpmdevtools && yum clean all - -RUN curl -s $go_pkg_url -o go.tar.gz && \ - tar -C /usr/local -xzf go.tar.gz && \ - rm go.tar.gz - -RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build - -RUN echo $'\n\ - export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin\n'\ - >> ~/.bash_profile - -RUN mkdir /rpmbuild && chmod 777 /rpmbuild - -CMD ["/usr/sbin/sshd", "-D"] diff --git a/dockerbuild/Dockerfile.centos6-i386 b/dockerbuild/Dockerfile.centos6-i386 deleted file mode 100644 index c6a47072b..000000000 --- a/dockerbuild/Dockerfile.centos6-i386 +++ /dev/null @@ -1,21 +0,0 @@ -FROM i386/centos:6 - -ARG go_pkg_url - -RUN echo i386 > /etc/yum/vars/basearch && echo i686 > /etc/yum/vars/arch - -RUN yum install -y curl git wget openssh-server sudo make rpmdevtools && yum clean all - -RUN curl -s $go_pkg_url -o go.tar.gz && \ - tar -C /usr/local -xzf go.tar.gz && \ - rm go.tar.gz - -RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build - -RUN echo $'\n\ - export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin\n'\ - >> ~/.bash_profile - -RUN mkdir /rpmbuild && chmod 777 /rpmbuild - -CMD ["/usr/sbin/sshd", "-D"] diff --git a/dockerbuild/Dockerfile.centos7-i386 b/dockerbuild/Dockerfile.centos7-i386 index f7ee9a0c4..4d0a28023 100644 --- a/dockerbuild/Dockerfile.centos7-i386 +++ b/dockerbuild/Dockerfile.centos7-i386 @@ -2,8 +2,11 @@ FROM centos:7 ARG go_pkg_url -RUN yum install -y curl git wget openssh-server sudo make development-tools rpmdevtools clang gcc-c++ ruby ruby-devel && yum clean all - +RUN yum install -y curl git wget openssh-server sudo make development-tools rpmdevtools clang gcc-c++ ruby ruby-devel ssl-devel && yum clean all +RUN curl -s -k -L https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz -o cmake-3.17.3.tar.gz && tar -xzf cmake-3.17.3.tar.gz +WORKDIR /cmake-3.17.3 +RUN ./bootstrap && make -j8 && make install +WORKDIR / RUN curl -s $go_pkg_url -o go.tar.gz && \ tar -C /usr/local -xzf go.tar.gz && \ rm go.tar.gz diff --git a/dockerbuild/Makefile b/dockerbuild/Makefile index cb54f9bc6..596f271c5 100644 --- a/dockerbuild/Makefile +++ b/dockerbuild/Makefile @@ -16,8 +16,6 @@ alpine: centos: @docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.centos7 . -t ztbuild/centos7-amd64 --load @docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go${GO_VERSION}.linux-386.tar.gz" --platform linux/386 -f Dockerfile.centos7-i386 . -t ztbuild/centos7-i386 --load - @docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.centos6 . -t ztbuild/centos6-amd64 --load - @docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go${GO_VERSION}.linux-386.tar.gz" --platform linux/386 -f Dockerfile.centos6-i386 . -t ztbuild/centos6-i386 --load @docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.centos8 . -t ztbuild/centos8-amd64 --load @docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go${GO_VERSION}.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.centos8 . -t ztbuild/centos8-arm64 --load @docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go${GO_VERSION}.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.centos8 . -t ztbuild/centos8-ppc64le --load From 0c5d1a793c4d9a969d68e0e69b9806ec2e974142 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 22 Jun 2020 15:58:49 -0700 Subject: [PATCH 34/52] fix docker images for static targets --- dockerbuild/Dockerfile.centos7-i386 | 2 +- dockerbuild/Dockerfile.debian-jessie | 6 +++++- dockerbuild/Dockerfile.ubuntu-trusty | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/dockerbuild/Dockerfile.centos7-i386 b/dockerbuild/Dockerfile.centos7-i386 index 4d0a28023..182aa7699 100644 --- a/dockerbuild/Dockerfile.centos7-i386 +++ b/dockerbuild/Dockerfile.centos7-i386 @@ -2,7 +2,7 @@ FROM centos:7 ARG go_pkg_url -RUN yum install -y curl git wget openssh-server sudo make development-tools rpmdevtools clang gcc-c++ ruby ruby-devel ssl-devel && yum clean all +RUN yum install -y curl git wget openssh-server sudo make development-tools rpmdevtools clang gcc-c++ ruby ruby-devel openssl openssl-devel && yum clean all RUN curl -s -k -L https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz -o cmake-3.17.3.tar.gz && tar -xzf cmake-3.17.3.tar.gz WORKDIR /cmake-3.17.3 RUN ./bootstrap && make -j8 && make install diff --git a/dockerbuild/Dockerfile.debian-jessie b/dockerbuild/Dockerfile.debian-jessie index 66ddf6f1c..7dbbfc52f 100644 --- a/dockerbuild/Dockerfile.debian-jessie +++ b/dockerbuild/Dockerfile.debian-jessie @@ -2,7 +2,11 @@ FROM debian:jessie-20191224 ARG go_pkg_url -RUN apt-get update && apt-get -y install build-essential curl cmake ca-certificates devscripts dh-systemd +RUN apt-get update && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd libssl-dev +RUN curl -s -k -L https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz -o cmake-3.17.3.tar.gz && tar -xzf cmake-3.17.3.tar.gz +WORKDIR /cmake-3.17.3 +RUN ./bootstrap && make -j8 && make install +WORKDIR / RUN curl -s -k $go_pkg_url -o go.tar.gz && \ tar -C /usr/local -xzf go.tar.gz && \ diff --git a/dockerbuild/Dockerfile.ubuntu-trusty b/dockerbuild/Dockerfile.ubuntu-trusty index a434d6892..778eb02a3 100644 --- a/dockerbuild/Dockerfile.ubuntu-trusty +++ b/dockerbuild/Dockerfile.ubuntu-trusty @@ -2,7 +2,11 @@ FROM ubuntu:trusty-20191217 ARG go_pkg_url -RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl cmake ca-certificates devscripts dh-systemd +RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl cmake ca-certificates devscripts dh-systemd libssl-dev +RUN curl -s -k -L https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz -o cmake-3.17.3.tar.gz && tar -xzf cmake-3.17.3.tar.gz +WORKDIR /cmake-3.17.3 +RUN ./bootstrap && make -j8 && make install +WORKDIR / RUN curl -s -k $go_pkg_url -o go.tar.gz && \ tar -C /usr/local -xzf go.tar.gz && \ From 8bb0753f6223d6b5e8217e764e07a149193371e3 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 22 Jun 2020 16:23:34 -0700 Subject: [PATCH 35/52] get cmake from yum for centos8 --- dockerbuild/Dockerfile.centos8 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dockerbuild/Dockerfile.centos8 b/dockerbuild/Dockerfile.centos8 index 0f612347f..6387e2fb6 100644 --- a/dockerbuild/Dockerfile.centos8 +++ b/dockerbuild/Dockerfile.centos8 @@ -3,14 +3,12 @@ FROM centos:8 ARG go_pkg_url RUN yum install -y epel-release -RUN yum install -y curl git wget openssh-server sudo make rpmdevtools clang gcc-c++ ruby ruby-devel && yum clean all +RUN yum install -y curl git wget openssh-server sudo make cmake rpmdevtools clang gcc-c++ ruby ruby-devel && yum clean all RUN curl -s $go_pkg_url -o go.tar.gz && \ tar -C /usr/local -xzf go.tar.gz && \ rm go.tar.gz -RUN wget -qO- "https://cmake.org/files/v3.15/cmake-3.15.1-Linux-x86_64.tar.gz" | tar --strip-components=1 -xz -C /usr/local - RUN /usr/bin/ssh-keygen -A RUN useradd jenkins-build From 78b18f2bdb32568c4bb0e798350b4bc44dd46956 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 08:40:24 -0700 Subject: [PATCH 36/52] remove centos6 from jenkinsfile --- Jenkinsfile | 32 +------------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d7de2ef55..106b3cbc2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -164,37 +164,7 @@ def getTasks(axisDistro, axisPlatform, task) { def packageStatic() { def tasks = [:] - - def centos6 = ["centos6"] - def centos6Arch = ["i386", "amd64"] - tasks << getTasks(centos6, centos6Arch, { distro, arch -> - def myNode = { - node ('linux-build') { - env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin" - dir ("build") { - checkout scm - } - def runtime = docker.image("ztbuild/${distro}-${arch}:latest") - runtime.inside { - dir("build") { - unstash "static-${arch}" - sh "mkdir -p build" - sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" - sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup' - dir("build") { - sh 'make package' - } - sh "mkdir -p ${distro}" - sh "cp -av build/*.rpm ${distro}/" - archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true - } - } - cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true - } - } - return myNode - }) - + def centos7 = ["centos7"] def centos7Arch = ["i386"] tasks << getTasks(centos7, centos7Arch, { distro, arch -> From f96a9f63eacf40626cda733d2ab5ab2ebb3506e6 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 08:53:13 -0700 Subject: [PATCH 37/52] . --- CMakeLists.txt | 8 ++++++++ Jenkinsfile | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 900b6237e..7437026bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -236,6 +236,14 @@ if(NOT PACKAGE_STATIC) add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core) install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin) else(NOT PACKAGE_STATIC) + if(BUILD_32BIT) + set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags") + add_compile_options( + -m32 + ) + endif(BUILD_32BIT) set(STATIC_BINARY ${CMAKE_BINARY_DIR}/zerotier) set(IMPORTED_LOCATION ${CMAKE_BINARY_DIR}) add_executable(zerotier IMPORTED GLOBAL) diff --git a/Jenkinsfile b/Jenkinsfile index 106b3cbc2..c19be7e05 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -180,7 +180,7 @@ def packageStatic() { unstash "static-${arch}" sh "mkdir -p build" sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" - sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup' + sh 'CMAKE_ARGS="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup' dir("build") { sh 'make package' } From c2664033bc8d847e96caee543b3bceb18ce41249 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 09:04:45 -0700 Subject: [PATCH 38/52] try to force 32-bit package for centos7 i386 --- packaging/rpm.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packaging/rpm.cmake b/packaging/rpm.cmake index bb47ea393..acc57def3 100644 --- a/packaging/rpm.cmake +++ b/packaging/rpm.cmake @@ -16,6 +16,9 @@ set(CPACK_RPM_PACKAGE_REQUIRES "systemd, iproute, libstdc++") set(CPACK_RPM_PACKAGE_REQUIRES_PRE "/usr/sbin/useradd, /usr/bin/getent") set(CPACK_RPM_PACKAGE_OBSOLETES "zerotier-one") set(CPACK_PACKAGE_RELOCATABLE FALSE) +if(BUILD_32BIT) + set(CPACK_RPM_PACKAGE_ARCHITECTURE "i386") +endif() set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.pre") set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.post") From de00486b80619d14cfe54ece82b5fa42d82e6629 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 09:41:45 -0700 Subject: [PATCH 39/52] no armhf for ubuntu focal --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index c19be7e05..d4dc4aef2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -400,7 +400,7 @@ def buildDebianNative() { def ubuntuFocal = ["ubuntu-focal"] def ubuntuFocalArchs = [] if (params.BUILD_ALL == true) { - ubuntuFocalArchs = ["amd64", "armhf", "arm64", "ppc64le", "s390x"] + ubuntuFocalArchs = ["amd64", "arm64", "ppc64le", "s390x"] } else { ubuntuFocalArchs = ["amd64"] } From 4d80f7c41daed79df2338d81c82b4d011f5a900b Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 09:53:46 -0700 Subject: [PATCH 40/52] more go static build flags --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7437026bd..d9bfabe84 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -173,8 +173,8 @@ if(NOT PACKAGE_STATIC) set(GOFLAGS ${GOFLAGS} -a - -tags netgo - -ldflags '-w -extldflags \"-static -Wl,-unresolved-symbols=ignore-all\"' + -tags osusergo,netgo + -ldflags '-w -extldflags \"-static -w -s -Wl,-unresolved-symbols=ignore-all\"' ) else(BUILD_STATIC) set(GOFLAGS From d7c6f8ae3f52d7442a7811fece2b6dc0168fa3c9 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 11:49:43 -0700 Subject: [PATCH 41/52] armel/armhf differentiation in builds --- CMakeLists.txt | 15 ++++++++++++++- packaging/debian.cmake | 6 ++++++ packaging/rpm.cmake | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d9bfabe84..2cdc35fc4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -154,6 +154,12 @@ if(NOT PACKAGE_STATIC) option(BUILD_32BIT "Force building as 32-bit binary" OFF) option(BUILD_STATIC "Build statically linked executable" OFF) + option(BUILD_ARM_V5 "Build ARMv5" OFF) + option(BUILD_ARM_v6 "Build ARMv6" OFF) + + if (BUILD_ARM_V5 AND BUILD_ARM_V6) + message(FATAL_ERROR "BUILD_ARM_V5 and BUILD_ARM_V6 are mutually exclusive!") + endif() if(BUILD_32BIT) set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor") @@ -185,6 +191,13 @@ if(NOT PACKAGE_STATIC) ) endif(BUILD_STATIC) + if (BUILD_ARM_V5) + set(GOARM "GOARM=5") + endif (BUILD_ARM_V5) + + if (BUILD_ARM_v6) + set(GOARM "GOARM=6") + endif (BUILD_ARM_V6) endif(APPLE) endif(WIN32) @@ -230,7 +243,7 @@ if(NOT PACKAGE_STATIC) zerotier ALL BYPRODUCTS ${CMAKE_BINARY_DIR}/zerotier SOURCES ${go_src} - COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$ $ $ $ ${GO_EXTRA_LIBRARIES}\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_EXE_NAME} ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go + COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} ${GOARM} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$ $ $ $ ${GO_EXTRA_LIBRARIES}\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_EXE_NAME} ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go COMMENT "Compiling Go Code..." ) add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core) diff --git a/packaging/debian.cmake b/packaging/debian.cmake index 4e7d17c8c..e03845101 100644 --- a/packaging/debian.cmake +++ b/packaging/debian.cmake @@ -19,4 +19,10 @@ set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/packaging/de set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT") +if(BUILD_ARM_V5) + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "armel") +elseif(BUILD_ARM_V6) + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "armhf") +endif() + include(CPack) diff --git a/packaging/rpm.cmake b/packaging/rpm.cmake index acc57def3..ff7f25613 100644 --- a/packaging/rpm.cmake +++ b/packaging/rpm.cmake @@ -18,6 +18,10 @@ set(CPACK_RPM_PACKAGE_OBSOLETES "zerotier-one") set(CPACK_PACKAGE_RELOCATABLE FALSE) if(BUILD_32BIT) set(CPACK_RPM_PACKAGE_ARCHITECTURE "i386") +elseif(BUILD_ARM_V5) + set(CPACK_RPM_PACKAGE_ARCHITECTURE "armel") +elseif(BUILD_ARM_V6) + set(CPACK_RPM_PACKAGE_ARCHITECTURE "armhf") endif() set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.pre") From f87e41abee75fd538eec30bc52554aed478b9378 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 12:56:29 -0700 Subject: [PATCH 42/52] jenkinsfile armhf/armel stuff --- Jenkinsfile | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d4dc4aef2..099078ba7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -132,7 +132,11 @@ def buildStaticBinaries() { def cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1"' if (platform == "i386") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1"' - } + } else if (platform == "armel") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DBUILD_ARM_V5=1"' + } else if (platform == "armhf") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DBUILD_ARM_V6=1"' + } sh "${cmakeFlags} make" dir("build") { @@ -244,10 +248,19 @@ def packageStatic() { def runtime = docker.image("ztbuild/${distro}-${arch}:latest") runtime.inside { dir('build/') { + def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' + if (platform == "i386") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' + } else if (platform == "armel") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' + } else if (platform == "armhf") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' + } + unstash "static-${arch}" sh "mkdir -p build" sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" - sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB" make setup' + sh "${cmakeFlags} make setup" dir("build") { sh 'make package' } @@ -279,10 +292,19 @@ def packageStatic() { def runtime = docker.image("ztbuild/${distro}-${arch}:latest") runtime.inside { dir('build/') { + def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' + if (platform == "i386") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' + } else if (platform == "armel") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' + } else if (platform == "armhf") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' + } + unstash "static-${arch}" sh "mkdir -p build" sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" - sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB" make setup' + sh "${cmakeArgs} make setup" dir("build") { sh 'make package' } @@ -314,10 +336,18 @@ def packageStatic() { def runtime = docker.image("ztbuild/${distro}-${arch}:latest") runtime.inside { dir('build/') { + def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' + if (platform == "i386") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' + } else if (platform == "armel") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' + } else if (platform == "armhf") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' + } unstash "static-${arch}" sh "mkdir -p build" sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" - sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB" make setup' + sh "${cmakeArgs} make setup" dir("build") { sh 'make package' } @@ -357,6 +387,10 @@ def buildDebianNative() { def cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB"' if (arch == "i386") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB"' + } else if (arch == "armel") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' + } else if (arch == "armhf") { + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' } sh 'whoami' From 9722bdef75f44a169c7600794e042792e4a9c706 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 13:33:59 -0700 Subject: [PATCH 43/52] fix variable name --- Jenkinsfile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 099078ba7..b74a91ff0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -249,11 +249,11 @@ def packageStatic() { runtime.inside { dir('build/') { def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' - if (platform == "i386") { + if (arch == "i386") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' - } else if (platform == "armel") { + } else if (arch == "armel") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' - } else if (platform == "armhf") { + } else if (arch == "armhf") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' } @@ -293,11 +293,11 @@ def packageStatic() { runtime.inside { dir('build/') { def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' - if (platform == "i386") { + if (arch == "i386") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' - } else if (platform == "armel") { + } else if (arch == "armel") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' - } else if (platform == "armhf") { + } else if (arch == "armhf") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' } @@ -337,11 +337,11 @@ def packageStatic() { runtime.inside { dir('build/') { def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' - if (platform == "i386") { + if (arch == "i386") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' - } else if (platform == "armel") { + } else if (arch == "armel") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' - } else if (platform == "armhf") { + } else if (arch == "armhf") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' } unstash "static-${arch}" From 6d88a134073aa4dc04a000bc60d1b2b42873458d Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 14:28:32 -0700 Subject: [PATCH 44/52] fix variable --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index b74a91ff0..131d320c3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -304,7 +304,7 @@ def packageStatic() { unstash "static-${arch}" sh "mkdir -p build" sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" - sh "${cmakeArgs} make setup" + sh "${cmakeFlags} make setup" dir("build") { sh 'make package' } From f3defdf3a6c29154ca207d585c89580bcfaf5280 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 14:42:18 -0700 Subject: [PATCH 45/52] one more --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 131d320c3..f11a0510a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -347,7 +347,7 @@ def packageStatic() { unstash "static-${arch}" sh "mkdir -p build" sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" - sh "${cmakeArgs} make setup" + sh "${cmakeFlags} make setup" dir("build") { sh 'make package' } From ee53f056ce7360b9d81018d87ae7fd9864cd44d8 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 16:29:35 -0700 Subject: [PATCH 46/52] fix flags --- CMakeLists.txt | 12 ++++++------ Jenkinsfile | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cdc35fc4..e83164f91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -157,9 +157,9 @@ if(NOT PACKAGE_STATIC) option(BUILD_ARM_V5 "Build ARMv5" OFF) option(BUILD_ARM_v6 "Build ARMv6" OFF) - if (BUILD_ARM_V5 AND BUILD_ARM_V6) + if(BUILD_ARM_V5 AND BUILD_ARM_V6) message(FATAL_ERROR "BUILD_ARM_V5 and BUILD_ARM_V6 are mutually exclusive!") - endif() + endif(BUILD_ARM_V5 AND BUILD_ARM_V6) if(BUILD_32BIT) set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor") @@ -191,13 +191,13 @@ if(NOT PACKAGE_STATIC) ) endif(BUILD_STATIC) - if (BUILD_ARM_V5) + if(BUILD_ARM_V5) set(GOARM "GOARM=5") - endif (BUILD_ARM_V5) + endif(BUILD_ARM_V5) - if (BUILD_ARM_v6) + if(BUILD_ARM_V6) set(GOARM "GOARM=6") - endif (BUILD_ARM_V6) + endif(BUILD_ARM_V6) endif(APPLE) endif(WIN32) diff --git a/Jenkinsfile b/Jenkinsfile index f11a0510a..020c2a187 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -131,11 +131,11 @@ def buildStaticBinaries() { def cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1"' if (platform == "i386") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1"' } else if (platform == "armel") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DBUILD_ARM_V5=1"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DBUILD_ARM_V5=1"' } else if (platform == "armhf") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DBUILD_ARM_V6=1"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DBUILD_ARM_V6=1"' } sh "${cmakeFlags} make" From d3a9ce95bc789dd91b494435b932a6042dafca78 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 16:41:55 -0700 Subject: [PATCH 47/52] more flag fixes --- Jenkinsfile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 020c2a187..a7fee27cb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -250,11 +250,11 @@ def packageStatic() { dir('build/') { def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' if (arch == "i386") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' } else if (arch == "armel") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' + cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' } else if (arch == "armhf") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' + cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' } unstash "static-${arch}" @@ -296,9 +296,9 @@ def packageStatic() { if (arch == "i386") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' } else if (arch == "armel") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' } else if (arch == "armhf") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' } unstash "static-${arch}" @@ -340,9 +340,9 @@ def packageStatic() { if (arch == "i386") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"' } else if (arch == "armel") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' } else if (arch == "armhf") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' + cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' } unstash "static-${arch}" sh "mkdir -p build" @@ -388,9 +388,9 @@ def buildDebianNative() { if (arch == "i386") { cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB"' } else if (arch == "armel") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' + cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"' } else if (arch == "armhf") { - cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' + cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"' } sh 'whoami' From 65aca7d84af1b741ac12d5cdf9f52afafd1348a2 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 16:48:50 -0700 Subject: [PATCH 48/52] let's not force the build server to swap out when building releases --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7a8e4f40a..f072b80f8 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ TIMESTAMP=$(shell date +"%Y%m%d%H%M") .PHONY: all all: setup - cd ${BUILDDIR} && $(MAKE) -j$(shell getconf _NPROCESSORS_ONLN) VERBOSE=1 + cd ${BUILDDIR} && $(MAKE) -j4 VERBOSE=1 setup: mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Release ${CMAKE_ARGS} From 2d1ca5f346be28fbf7145b332e1e1ce17670e75c Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 17:12:52 -0700 Subject: [PATCH 49/52] cmake version from debian-bullseye doesn't like ARM so let's build the latest from src --- dockerbuild/Dockerfile.debian-bullseye | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dockerbuild/Dockerfile.debian-bullseye b/dockerbuild/Dockerfile.debian-bullseye index 04a1530ee..887b0c701 100644 --- a/dockerbuild/Dockerfile.debian-bullseye +++ b/dockerbuild/Dockerfile.debian-bullseye @@ -2,7 +2,11 @@ FROM debian:bullseye-20191224 ARG go_pkg_url -RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl cmake ca-certificates devscripts dh-systemd +RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd +RUN curl -s -k -L https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz -o cmake-3.17.3.tar.gz && tar -xzf cmake-3.17.3.tar.gz +WORKDIR /cmake-3.17.3 +RUN ./bootstrap && make -j8 && make install +WORKDIR / RUN curl -s -k $go_pkg_url -o go.tar.gz && \ tar -C /usr/local -xzf go.tar.gz && \ From 02a810b8d6bf943a662873ccd8edb9f74bd6fa3e Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2020 17:18:54 -0700 Subject: [PATCH 50/52] same issue on sid, apparently --- dockerbuild/Dockerfile.debian-sid | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dockerbuild/Dockerfile.debian-sid b/dockerbuild/Dockerfile.debian-sid index 03102418f..90e96ec54 100644 --- a/dockerbuild/Dockerfile.debian-sid +++ b/dockerbuild/Dockerfile.debian-sid @@ -2,7 +2,11 @@ FROM debian:sid-20191224 ARG go_pkg_url -RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl cmake ca-certificates devscripts dh-systemd +RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd +RUN curl -s -k -L https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz -o cmake-3.17.3.tar.gz && tar -xzf cmake-3.17.3.tar.gz +WORKDIR /cmake-3.17.3 +RUN ./bootstrap && make -j8 && make install +WORKDIR / RUN curl -s -k $go_pkg_url -o go.tar.gz && \ tar -C /usr/local -xzf go.tar.gz && \ From ab36607a48bb0cd509d2249ac899ab7c443e202a Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 24 Jun 2020 09:57:38 -0700 Subject: [PATCH 51/52] docker & build parallelization --- Jenkinsfile | 16 ++++++++-------- dockerbuild/Dockerfile.debian-bullseye | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a7fee27cb..21e4523d5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -186,7 +186,7 @@ def packageStatic() { sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" sh 'CMAKE_ARGS="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup' dir("build") { - sh 'make package' + sh 'make package -j4 VERBOSE=1' } sh "mkdir -p ${distro}" sh "cp -av build/*.rpm ${distro}/" @@ -217,7 +217,7 @@ def packageStatic() { sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" sh 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup' dir("build") { - sh 'make package' + sh 'make package -j4 VERBOSE=1' } sh "mkdir -p ${distro}" sh "cp -av build/*.rpm ${distro}/" @@ -262,7 +262,7 @@ def packageStatic() { sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" sh "${cmakeFlags} make setup" dir("build") { - sh 'make package' + sh 'make package -j4 VERBOSE=1' } sh "mkdir -p ${distro}" sh "cp -av build/*.deb ${distro}/" @@ -306,7 +306,7 @@ def packageStatic() { sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" sh "${cmakeFlags} make setup" dir("build") { - sh 'make package' + sh 'make package -j4 VERBOSE=1' } sh "mkdir -p ${distro}" sh "cp -av build/*.deb ${distro}/" @@ -349,7 +349,7 @@ def packageStatic() { sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier" sh "${cmakeFlags} make setup" dir("build") { - sh 'make package' + sh 'make package -j4 VERBOSE=1' } sh "mkdir -p ${distro}" sh "cp -av build/*.deb ${distro}/" @@ -397,7 +397,7 @@ def buildDebianNative() { dir("build") { sh "${cmakeFlags} make setup" dir("build") { - sh "make package -j4" + sh "make package -j4 VERBOSE=1" } } sh "mkdir -p ${distro}" @@ -467,9 +467,9 @@ def buildCentosNative() { } dir ("build") { if (distro == 'centos7' && arch == 'amd64') { - sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && make package -j4' + sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && make package -j4 VERBOSE=1' } else { - sh 'make package -j4' + sh 'make package -j4 VERBOSE=1' } } } diff --git a/dockerbuild/Dockerfile.debian-bullseye b/dockerbuild/Dockerfile.debian-bullseye index 887b0c701..dcaef18e2 100644 --- a/dockerbuild/Dockerfile.debian-bullseye +++ b/dockerbuild/Dockerfile.debian-bullseye @@ -2,10 +2,10 @@ FROM debian:bullseye-20191224 ARG go_pkg_url -RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd +RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd libssl-devel RUN curl -s -k -L https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz -o cmake-3.17.3.tar.gz && tar -xzf cmake-3.17.3.tar.gz WORKDIR /cmake-3.17.3 -RUN ./bootstrap && make -j8 && make install +RUN ./bootstrap --parallel=8 && make -j8 && make install WORKDIR / RUN curl -s -k $go_pkg_url -o go.tar.gz && \ From 9a7d26cd9e8a260cdd2478a4c9c11b82735fcd4b Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 24 Jun 2020 10:07:08 -0700 Subject: [PATCH 52/52] fix package name --- dockerbuild/Dockerfile.debian-bullseye | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerbuild/Dockerfile.debian-bullseye b/dockerbuild/Dockerfile.debian-bullseye index dcaef18e2..0592cc42f 100644 --- a/dockerbuild/Dockerfile.debian-bullseye +++ b/dockerbuild/Dockerfile.debian-bullseye @@ -2,7 +2,7 @@ FROM debian:bullseye-20191224 ARG go_pkg_url -RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd libssl-devel +RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd libssl-dev RUN curl -s -k -L https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz -o cmake-3.17.3.tar.gz && tar -xzf cmake-3.17.3.tar.gz WORKDIR /cmake-3.17.3 RUN ./bootstrap --parallel=8 && make -j8 && make install