From 20f88b37efb888757d1dc152f2483541516e9ca2 Mon Sep 17 00:00:00 2001 From: Sean OMeara Date: Thu, 3 Feb 2022 14:19:06 +0100 Subject: [PATCH 1/6] adding drone config --- .drone.yml | 135 ++++++++++++++++++++++++++++++++++++++++++++ ci/Dockerfile.sid | 7 +++ ci/scripts/build.sh | 28 +++++++++ 3 files changed, 170 insertions(+) create mode 100644 .drone.yml create mode 100644 ci/Dockerfile.sid create mode 100755 ci/scripts/build.sh diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 000000000..8c0e0e9b0 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,135 @@ +--- +kind: pipeline +type: docker +name: build 386 + +clone: + depth: 1 + +steps: + - name: build 386 + image: registry.sean.farm/honda-builder + commands: + - ./ci/scripts/build.sh linux 386 $${DRONE_COMMIT_SHA} + +image_pull_secrets: + - dockerconfigjson + +--- +kind: pipeline +type: docker +name: build amd64 + +clone: + depth: 1 + +steps: + - name: build amd64 + image: registry.sean.farm/honda-builder + commands: + - ./ci/scripts/build.sh linux amd64 $${DRONE_COMMIT_SHA} + +image_pull_secrets: + - dockerconfigjson + +--- +kind: pipeline +type: docker +name: build arm64 + +clone: + depth: 1 + +steps: + - name: build arm64 + image: registry.sean.farm/honda-builder + commands: + - ./ci/scripts/build.sh linux arm64 $${DRONE_COMMIT_SHA} + +image_pull_secrets: + - dockerconfigjson + +--- +kind: pipeline +type: docker +name: build armv7 + +clone: + depth: 1 + +steps: + - name: build armv7 + image: registry.sean.farm/honda-builder + commands: + - ./ci/scripts/build.sh linux armv7 $${DRONE_COMMIT_SHA} + +image_pull_secrets: + - dockerconfigjson + +--- +kind: pipeline +type: docker +name: build riscv64 + +clone: + depth: 1 + +steps: + - name: build riscv64 + image: registry.sean.farm/honda-builder + commands: + - ./ci/scripts/build.sh linux riscv64 $${DRONE_COMMIT_SHA} + +image_pull_secrets: + - dockerconfigjson + +--- +kind: pipeline +type: docker +name: build mips64le + +clone: + depth: 1 + +steps: + - name: build mips64le + image: registry.sean.farm/honda-builder + commands: + - ./ci/scripts/build.sh linux mips64le $${DRONE_COMMIT_SHA} + +image_pull_secrets: + - dockerconfigjson + +--- +kind: pipeline +type: docker +name: build ppc64le + +clone: + depth: 1 + +steps: + - name: build ppc64le + image: registry.sean.farm/honda-builder + commands: + - ./ci/scripts/build.sh linux ppc64le $${DRONE_COMMIT_SHA} + +image_pull_secrets: + - dockerconfigjson + +--- +kind: pipeline +type: docker +name: build s390x + +clone: + depth: 1 + +steps: + - name: build s390x + image: registry.sean.farm/honda-builder + commands: + - ./ci/scripts/build.sh linux s390x $${DRONE_COMMIT_SHA} + +image_pull_secrets: + - dockerconfigjson diff --git a/ci/Dockerfile.sid b/ci/Dockerfile.sid new file mode 100644 index 000000000..4af604aac --- /dev/null +++ b/ci/Dockerfile.sid @@ -0,0 +1,7 @@ +FROM registry.sean.farm/sid-builder as stage +COPY . . +RUN /usr/bin/make -j 8 + +FROM scratch AS export +COPY --from=stage /zerotier-one . +COPY --from=stage /zerotier-cli . diff --git a/ci/scripts/build.sh b/ci/scripts/build.sh new file mode 100755 index 000000000..e0b6ce6b7 --- /dev/null +++ b/ci/scripts/build.sh @@ -0,0 +1,28 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +export GOOS=$1 +export GOARCH=$2 +export VERSION=$3 +export DOCKER_BUILDKIT=1 + +echo "nproc: $(nproc)" + +case $GOARCH in + armv5) + export ARCH=arm/v5 + ;; + armv7) + export ARCH=arm/v7 + ;; + arm64) + export ARCH=arm64/v8 + ;; + *) + export ARCH=$GOARCH + ;; +esac + +docker run --privileged --rm tonistiigi/binfmt --install all +docker buildx build --platform ${GOOS}/${ARCH} -f ci/Dockerfile.sid --target export -t test . --output out/${GOOS}/${GOARCH} From f511c9c938b6a24afbbf08c6a4c57b3b61a40a34 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 3 Feb 2022 10:07:07 -0800 Subject: [PATCH 2/6] fix compile errors on non-sso platforms --- service/OneService.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/service/OneService.cpp b/service/OneService.cpp index fd7ba0732..9706baa4d 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -156,7 +156,9 @@ public: NetworkState() : _webPort(9993) , _tap((EthernetTap *)0) +#if OIDC_SUPPORTED , _idc(nullptr) +#endif { // Real defaults are in network 'up' code in network event handler _settings.allowManaged = true; @@ -345,11 +347,11 @@ public: } uint64_t getExpiryTime() { +#if OIDC_SUPPORTED if (_idc == nullptr) { fprintf(stderr, "idc is null\n"); return 0; } -#if OIDC_SUPPORTED return zeroidc::zeroidc_get_exp_time(_idc); #else return 0; From 3c0adde0c71dfb0fcc4d02d2624849006b7c843e Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 3 Feb 2022 11:26:10 -0800 Subject: [PATCH 3/6] don't build on unsupported platforms --- make-linux.mk | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/make-linux.mk b/make-linux.mk index 49081d827..1701a9047 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -122,6 +122,7 @@ ifeq ($(CC_MACH),x86_64) ZT_USE_X64_ASM_ED25519=1 override CFLAGS+=-msse -msse2 override CXXFLAGS+=-msse -msse2 + ZT_SSO_SUPPORTED=1 endif ifeq ($(CC_MACH),amd64) ZT_ARCHITECTURE=2 @@ -129,6 +130,7 @@ ifeq ($(CC_MACH),amd64) ZT_USE_X64_ASM_ED25519=1 override CFLAGS+=-msse -msse2 override CXXFLAGS+=-msse -msse2 + ZT_SSO_SUPPORTED=1 endif ifeq ($(CC_MACH),powerpc64le) ZT_ARCHITECTURE=8 @@ -217,10 +219,12 @@ ifeq ($(CC_MACH),armv7ve) endif ifeq ($(CC_MACH),arm64) ZT_ARCHITECTURE=4 + ZT_SSO_SUPPORTED=1 override DEFS+=-DZT_NO_TYPE_PUNNING -DZT_ARCH_ARM_HAS_NEON -march=armv8-a+crypto -mtune=generic -mstrict-align endif ifeq ($(CC_MACH),aarch64) ZT_ARCHITECTURE=4 + ZT_SSO_SUPPORTED=1 override DEFS+=-DZT_NO_TYPE_PUNNING -DZT_ARCH_ARM_HAS_NEON -march=armv8-a+crypto -mtune=generic -mstrict-align endif ifeq ($(CC_MACH),mipsel) @@ -371,8 +375,12 @@ debug: FORCE make ZT_DEBUG=1 one make ZT_DEBUG=1 selftest +ifeq ($(ZT_SSO_SUPPORTED), 1) zeroidc: FORCE cd zeroidc && cargo build $(RUSTFLAGS) +else +zeroidc: +endif # Note: keep the symlinks in /var/lib/zerotier-one to the binaries since these # provide backward compatibility with old releases where the binaries actually From cfae20e0dfec59d7d369d26a9ab663dc6ca8f7da Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 3 Feb 2022 11:30:39 -0800 Subject: [PATCH 4/6] LDFLAGS fix on non-supported platforms --- make-linux.mk | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/make-linux.mk b/make-linux.mk index 1701a9047..d3f990e83 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -41,10 +41,12 @@ else override DEFS+=-DZT_USE_SYSTEM_NATPMP endif -ifeq ($(ZT_DEBUG),1) - LDLIBS+=zeroidc/target/debug/libzeroidc.a -ldl -lssl -lcrypto -else - LDLIBS+=zeroidc/target/release/libzeroidc.a -ldl -lssl -lcrypto +ifeq ($(ZT_SSO_SUPPORTED), 1) + ifeq ($(ZT_DEBUG),1) + LDLIBS+=zeroidc/target/debug/libzeroidc.a -ldl -lssl -lcrypto + else + LDLIBS+=zeroidc/target/release/libzeroidc.a -ldl -lssl -lcrypto + endif endif # Use bundled http-parser since distribution versions are NOT API-stable or compatible! From df6bbb0b0ccc89af486f0a2cf77845c4f7543d8a Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 3 Feb 2022 11:47:03 -0800 Subject: [PATCH 5/6] more fun with makefiles --- make-linux.mk | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/make-linux.mk b/make-linux.mk index d3f990e83..e38c8acaf 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -41,14 +41,6 @@ else override DEFS+=-DZT_USE_SYSTEM_NATPMP endif -ifeq ($(ZT_SSO_SUPPORTED), 1) - ifeq ($(ZT_DEBUG),1) - LDLIBS+=zeroidc/target/debug/libzeroidc.a -ldl -lssl -lcrypto - else - LDLIBS+=zeroidc/target/release/libzeroidc.a -ldl -lssl -lcrypto - endif -endif - # Use bundled http-parser since distribution versions are NOT API-stable or compatible! # Trying to use dynamically linked libhttp-parser causes tons of compatibility problems. ONE_OBJS+=ext/http-parser/http_parser.o @@ -178,6 +170,7 @@ ifeq ($(CC_MACH),armhf) ZT_ARCHITECTURE=3 override DEFS+=-DZT_NO_TYPE_PUNNING ZT_USE_ARM32_NEON_ASM_CRYPTO=1 + ZT_SSO_SUPPORTED=1 endif ifeq ($(CC_MACH),armv6) ZT_ARCHITECTURE=3 @@ -269,6 +262,14 @@ ifeq ($(ZT_IA32),1) ZT_USE_X64_ASM_ED25519=0 endif +ifeq ($(ZT_SSO_SUPPORTED), 1) + ifeq ($(ZT_DEBUG),1) + LDLIBS+=zeroidc/target/debug/libzeroidc.a -ldl -lssl -lcrypto + else + LDLIBS+=zeroidc/target/release/libzeroidc.a -ldl -lssl -lcrypto + endif +endif + # Disable software updates by default on Linux since that is normally done with package management override DEFS+=-DZT_BUILD_PLATFORM=1 -DZT_BUILD_ARCHITECTURE=$(ZT_ARCHITECTURE) -DZT_SOFTWARE_UPDATE_DEFAULT="\"disable\"" From 211b1fc23c9779c74d6e32870f986a324392cf2a Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 3 Feb 2022 12:52:35 -0800 Subject: [PATCH 6/6] enable on x32 --- make-linux.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/make-linux.mk b/make-linux.mk index e38c8acaf..ee222115c 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -146,15 +146,19 @@ ifeq ($(CC_MACH),e2k) endif ifeq ($(CC_MACH),i386) ZT_ARCHITECTURE=1 + ZT_SSO_SUPPORTED=1 endif ifeq ($(CC_MACH),i486) ZT_ARCHITECTURE=1 + ZT_SSO_SUPPORTED=1 endif ifeq ($(CC_MACH),i586) ZT_ARCHITECTURE=1 + ZT_SSO_SUPPORTED=1 endif ifeq ($(CC_MACH),i686) ZT_ARCHITECTURE=1 + ZT_SSO_SUPPORTED=1 endif ifeq ($(CC_MACH),arm) ZT_ARCHITECTURE=3