diff options
| author | Sean OMeara <[email protected]> | 2022-05-14 10:08:22 +0200 |
|---|---|---|
| committer | Sean OMeara <[email protected]> | 2022-05-14 13:29:42 +0200 |
| commit | 127c19fecda0cb83e6ea16e0c4218f381e527258 (patch) | |
| tree | 16724a5b53a56f8876129d960559c49641723e30 /ci/scripts | |
| parent | b329fb68a92a9e6b3db56934114458e66074ea2b (diff) | |
betterized rpm spec and ci scripts
Diffstat (limited to 'ci/scripts')
| -rwxr-xr-x | ci/scripts/build.sh | 115 | ||||
| -rwxr-xr-x | ci/scripts/munge_debian_changelog.sh | 37 | ||||
| -rwxr-xr-x | ci/scripts/munge_rpm_spec.sh | 36 |
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} |
