summaryrefslogtreecommitdiff
path: root/ci/scripts
diff options
context:
space:
mode:
authorSean OMeara <[email protected]>2022-05-14 10:08:22 +0200
committerSean OMeara <[email protected]>2022-05-14 13:29:42 +0200
commit127c19fecda0cb83e6ea16e0c4218f381e527258 (patch)
tree16724a5b53a56f8876129d960559c49641723e30 /ci/scripts
parentb329fb68a92a9e6b3db56934114458e66074ea2b (diff)
betterized rpm spec and ci scripts
Diffstat (limited to 'ci/scripts')
-rwxr-xr-xci/scripts/build.sh115
-rwxr-xr-xci/scripts/munge_debian_changelog.sh37
-rwxr-xr-xci/scripts/munge_rpm_spec.sh36
3 files changed, 174 insertions, 14 deletions
diff --git a/ci/scripts/build.sh b/ci/scripts/build.sh
index eb33e80f..e6aee6bc 100755
--- a/ci/scripts/build.sh
+++ b/ci/scripts/build.sh
@@ -2,28 +2,115 @@
set -euo pipefail
IFS=$'\n\t'
-export GOOS=$1
-export GOARCH=$2
+export PLATFORM=$1
+export ZT_ISA=$2
export VERSION=$3
-export DOCKER_BUILDKIT=1
+export EVENT=$4
-echo "nproc: $(nproc)"
+case $PLATFORM in
+ el*|fc*|amzn*)
+ export PKGFMT=rpm
+ ;;
+ *)
+ export PKGFMT=deb
+esac
+
+# OSX
+# x86_64-apple-darwin
+# aarch64-apple-darwin
-case $GOARCH in
- armv5)
- export ARCH=arm/v5
+# Windows
+# x86_64-pc-windows-msvc
+# i686-pc-windows-msvc
+# aarch64-pc-windows-msvc
+
+# Linux
+# i686-unknown-linux-gnu
+# x86_64-unknown-linux-gnu
+# arm-unknown-linux-gnueabi ?
+# arm-unknown-linux-gnueabihf ?
+# armv7-unknown-linux-gnueabihf
+#
+
+case $ZT_ISA in
+ 386)
+ export DOCKER_ARCH=386
+ export RUST_TRIPLET=i686-unknown-linux-gnu
+ ;;
+ amd64)
+ export DOCKER_ARCH=amd64
+ export RUST_TRIPLET=x86_64-unknown-linux-gnu
;;
- armv7)
- export ARCH=arm/v7
+ armv6)
+ export DOCKER_ARCH=arm/v6
+ export RUST_TRIPLET=arm-unknown-linux-gnueabi
+ ;;
+ armv7)
+ export DOCKER_ARCH=arm/v7
+ export RUST_TRIPLET=arm-unknown-linux-gnueabihf
;;
arm64)
- export ARCH=arm64/v8
+ export DOCKER_ARCH=arm64/v8
+ export RUST_TRIPLET=aarch64-unknown-linux-gnu
;;
- *)
- export ARCH=$GOARCH
+ riscv64)
+ export DOCKER_ARCH=riscv64
+ export RUST_TRIPLET=riscv64gc-unknown-linux-gnu
+ ;;
+ ppc64le)
+ export DOCKER_ARCH=ppc64le
+ export RUST_TRIPLET=powerpc64le-unknown-linux-gnu
+ ;;
+ mips64le)
+ export DOCKER_ARCH=mips64le
+ export RUST_TRIPLET=mips64el-unknown-linux-gnuabi64
+ ;;
+ s390x)
+ export DOCKER_ARCH=s390x
+ export RUST_TRIPLET=s390x-unknown-linux-gnu
+ ;;
+ *)
+ echo "ERROR: could not determine architecture settings. PLEASE FIX ME"
+ exit 1
;;
esac
+if [ -f "ci/Dockerfile.${PLATFORM}" ]; then
+ export DOCKERFILE="ci/Dockerfile.${PLATFORM}"
+else
+ export DOCKERFILE="ci/Dockerfile.${PKGFMT}"
+fi
+
+echo "#~~~~~~~~~~~~~~~~~~~~"
+echo "$0 variables:"
+echo "nproc: $(nproc)"
+echo "ZT_ISA: ${ZT_ISA}"
+echo "DOCKER_ARCH: ${DOCKER_ARCH}"
+echo "RUST_TRIPLET: ${RUST_TRIPLET}"
+echo "VERSION: ${VERSION}"
+echo "EVENT: ${EVENT}"
+echo "PKGFMT: ${PKGFMT}"
+echo "PWD: ${PWD}"
+echo "DOCKERFILE: ${DOCKERFILE}"
+echo "#~~~~~~~~~~~~~~~~~~~~"
+
+if [ ${EVENT} == "push" ]; then
+make munge_rpm zerotier-one.spec VERSION=${VERSION}
+make munge_deb debian/changelog VERSION=${VERSION}
+fi
+
+export DOCKER_BUILDKIT=1
docker run --privileged --rm tonistiigi/binfmt --install all
-docker pull registry.sean.farm/sid-builder
-docker buildx build --platform ${GOOS}/${ARCH} -f ci/Dockerfile.sid --target export -t test . --output out/${GOOS}/${GOARCH}
+
+# docker pull --platform linux/${DOCKER_ARCH} registry.sean.farm/${PLATFORM}-builder
+
+docker buildx build \
+ --build-arg PLATFORM="${PLATFORM}" \
+ --build-arg RUST_TRIPLET="${RUST_TRIPLET}" \
+ --build-arg DOCKER_ARCH="${DOCKER_ARCH}" \
+ --platform linux/${DOCKER_ARCH} \
+ -f ${DOCKERFILE} \
+ -t build \
+ . \
+ --output type=local,dest=. \
+ --target export
diff --git a/ci/scripts/munge_debian_changelog.sh b/ci/scripts/munge_debian_changelog.sh
new file mode 100755
index 00000000..86cedf72
--- /dev/null
+++ b/ci/scripts/munge_debian_changelog.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -euo pipefail
+IFS=$'\n\t'
+
+export FILE=$1
+export VERSION=$2
+export NAME=$3
+export MESSAGE=$4
+export DATE=$(date "+%a, %d %b %Y %T %z")
+# export DATE=$(date "+%a %b %d %Y")
+
+set +e
+grep --version | grep BSD &> /dev/null
+if [ $? == 0 ]; then BSDGREP=true ; else BSDGREP=false ; fi
+set -e
+
+# echo "#~~~~~~~~~~~~~~~~~~~~"
+# echo "$0 variables:"
+# echo "VERSION: ${VERSION}"
+# echo "NAME: ${NAME}"
+# echo "MESSAGE: ${MESSAGE}"
+# echo "DATE: ${DATE}"
+# echo "BSDGREP: ${BSDGREP}"
+# echo "#~~~~~~~~~~~~~~~~~~~~"
+# echo
+
+if $BSDGREP ; then
+ sed -i '' s/^Version:.*/"Version: ${VERSION}"/ ${FILE}
+else
+ sed -i s/^Version:.*/"Version: ${VERSION}"/ ${FILE}
+fi
+
+awk -v version=${VERSION} -v date=${DATE} -v name=${NAME} -v message=${MESSAGE} \
+ 'BEGIN{print "zerotier-one (" version ") unstable; urgency=medium\n\n * " message "\n\n -- " name " " date "\n" }{ print }' \
+ ${FILE} > ${FILE}.new
+
+mv ${FILE}.new ${FILE}
diff --git a/ci/scripts/munge_rpm_spec.sh b/ci/scripts/munge_rpm_spec.sh
new file mode 100755
index 00000000..289df1ed
--- /dev/null
+++ b/ci/scripts/munge_rpm_spec.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -euo pipefail
+IFS=$'\n\t'
+
+export FILE=$1
+export VERSION=$2
+export NAME=$3
+export MESSAGE=$4
+export DATE=$(date "+%a %b %d %Y")
+
+set +e
+grep --version | grep BSD &> /dev/null
+if [ $? == 0 ]; then BSDGREP=true ; else BSDGREP=false ; fi
+set -e
+
+# echo "#~~~~~~~~~~~~~~~~~~~~"
+# echo "$0 variables:"
+# echo "VERSION: ${VERSION}"
+# echo "NAME: ${NAME}"
+# echo "MESSAGE: ${MESSAGE}"
+# echo "DATE: ${DATE}"
+# echo "BSDGREP: ${BSDGREP}"
+# echo "#~~~~~~~~~~~~~~~~~~~~"
+# echo
+
+if $BSDGREP ; then
+ sed -i '' s/^Version:.*/"Version: ${VERSION}"/ ${FILE}
+else
+ sed -i s/^Version:.*/"Version: ${VERSION}"/ ${FILE}
+fi
+
+awk -v version=${VERSION} -v date=${DATE} -v name=${NAME} -v message=${MESSAGE} \
+ 'FNR==NR{ if (/%changelog/) p=NR; next} 1; FNR==p{ print "* " date " " name " - " version "\n- " message "\n" }' \
+ ${FILE} ${FILE} > ${FILE}.new
+
+mv ${FILE}.new ${FILE}