Merge edge, still need to resolve CMakeLists.txt

This commit is contained in:
Adam Ierymenko 2020-06-24 10:50:16 -07:00
commit aa9ca845e8
No known key found for this signature in database
GPG key ID: C8877CF2D7A5D7F3
26 changed files with 385 additions and 141 deletions

254
Jenkinsfile vendored
View file

@ -22,18 +22,20 @@ pipeline {
tasks << buildDebianNative()
tasks << buildCentosNative()
tasks << buildMacOS()
tasks << buildWindows()
// tasks << buildFreeBSD()
parallel tasks
}
}
}
// stage ("Package Static") {
// steps {
// script {
// parallel packageStatic()
// }
// }
// }
stage ("Package Static") {
steps {
script {
parallel packageStatic()
}
}
}
}
}
@ -41,16 +43,68 @@ 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
sh 'make'
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
return tasks
}
def buildWindows() {
def tasks = [:]
tasks << getTasks(['windows'], ['amd64', 'i386'], { unused1, platform ->
def myNode = {
node ('windows') {
env.SHELL = 'C:/Windows/System32/cmd.exe'
dir ("build") {
checkout scm
dir ("build") {
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 -j8
"""
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
}
return myNode
})
return tasks
}
def buildFreeBSD() {
def tasks = [:]
tasks << getTasks(['freebsd12'], ['amd64'], { unused1, unused2 ->
def myNode = {
node ('freebsd12') {
dir('build') {
checkout scm
sh 'make setup'
dir('build') {
sh 'make -j4'
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
return tasks
}
@ -67,6 +121,7 @@ def buildStaticBinaries() {
tasks << getTasks(dist, archs, { distro, platform ->
def myNode = {
node ('linux-build') {
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
}
@ -76,8 +131,12 @@ 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_STATIC=1 -DBUILD_ARM_V5=1"'
} else if (platform == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DBUILD_ARM_V6=1"'
}
sh "${cmakeFlags} make"
dir("build") {
@ -109,37 +168,13 @@ 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') {
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir("build") {
unstash "static-${arch}"
sh "mv zerotier-static-${arch} zerotier && chmod +x zerotier"
sh "make redhat"
sh "mkdir -p ${distro}"
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.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 ->
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
}
@ -147,10 +182,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="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup'
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
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
}
}
@ -166,6 +205,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
}
@ -173,10 +213,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 -j4 VERBOSE=1'
}
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
}
}
@ -197,23 +241,33 @@ 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
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
sh "ls -la ."
dir('build/') {
sh "ls -la ."
def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
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 "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
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
}
@ -231,23 +285,33 @@ 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
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
sh "ls -la ."
dir('build/') {
sh "ls -la ."
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"'
} else if (arch == "armel") {
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_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
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 "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
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
}
@ -265,21 +329,32 @@ 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
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
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"'
} else if (arch == "armel") {
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_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
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 "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
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
}
@ -292,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"]
@ -303,23 +378,31 @@ def buildDebianNative() {
def build = { distro, arch ->
def myNode = {
node ('linux-build') {
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 {
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"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
sh 'whoami'
dir("build") {
sh "${cmakeFlags} make -j4"
sh "${cmakeFlags} make setup"
dir("build") {
sh "make package -j4 VERBOSE=1"
}
}
// 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
}
}
@ -337,21 +420,21 @@ 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)
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"]
}
@ -370,6 +453,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
}
@ -377,15 +461,21 @@ 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") {
if (distro == 'centos7' && arch == 'amd64') {
sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && make package -j4 VERBOSE=1'
} else {
sh 'make package -j4 VERBOSE=1'
}
}
// 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
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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 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
WORKDIR /
RUN curl -s $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz

View file

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

View file

@ -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 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
WORKDIR /
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \

View file

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

View file

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

View file

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

View file

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

View file

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

28
packaging/debian.cmake Normal file
View file

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

11
packaging/debian/postinst Normal file
View file

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

View file

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

View file

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

33
packaging/rpm.cmake Normal file
View file

@ -0,0 +1,33 @@
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_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")
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")
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")
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")
include(CPack)

View file

@ -0,0 +1,2 @@
* Mon Jun 22, 2020 ZeroTier, Inc. <support@zerotier.com> - 1.9.0-0
- see https://github.com/zerotier/ZeroTierOne for release notes

17
packaging/rpm/rpm.post Normal file
View file

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

6
packaging/rpm/rpm.postun Normal file
View file

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

6
packaging/rpm/rpm.pre Normal file
View file

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

18
packaging/rpm/rpm.preun Normal file
View file

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

View file

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