2
0

build.sh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #!/bin/bash
  2. set -euo pipefail
  3. IFS=$'\n\t'
  4. export PLATFORM=$1
  5. export ZT_ISA=$2
  6. export VERSION=$3
  7. export EVENT=$4
  8. case $PLATFORM in
  9. el*|fc*|amzn*)
  10. export PKGFMT=rpm
  11. ;;
  12. *)
  13. export PKGFMT=deb
  14. esac
  15. # OSX
  16. # x86_64-apple-darwin
  17. # aarch64-apple-darwin
  18. # Windows
  19. # x86_64-pc-windows-msvc
  20. # i686-pc-windows-msvc
  21. # aarch64-pc-windows-msvc
  22. # Linux
  23. # i686-unknown-linux-gnu
  24. # x86_64-unknown-linux-gnu
  25. # arm-unknown-linux-gnueabi ?
  26. # arm-unknown-linux-gnueabihf ?
  27. # armv7-unknown-linux-gnueabihf
  28. #
  29. case $ZT_ISA in
  30. 386)
  31. export DOCKER_ARCH=386
  32. export RUST_TRIPLET=i686-unknown-linux-gnu
  33. ;;
  34. amd64)
  35. export DOCKER_ARCH=amd64
  36. export RUST_TRIPLET=x86_64-unknown-linux-gnu
  37. ;;
  38. armv6)
  39. export DOCKER_ARCH=arm/v6
  40. export RUST_TRIPLET=arm-unknown-linux-gnueabi
  41. ;;
  42. armv7)
  43. export DOCKER_ARCH=arm/v7
  44. export RUST_TRIPLET=arm-unknown-linux-gnueabihf
  45. ;;
  46. arm64)
  47. export DOCKER_ARCH=arm64/v8
  48. export RUST_TRIPLET=aarch64-unknown-linux-gnu
  49. ;;
  50. riscv64)
  51. export DOCKER_ARCH=riscv64
  52. export RUST_TRIPLET=riscv64gc-unknown-linux-gnu
  53. ;;
  54. ppc64le)
  55. export DOCKER_ARCH=ppc64le
  56. export RUST_TRIPLET=powerpc64le-unknown-linux-gnu
  57. ;;
  58. mips64le)
  59. export DOCKER_ARCH=mips64le
  60. export RUST_TRIPLET=mips64el-unknown-linux-gnuabi64
  61. ;;
  62. s390x)
  63. export DOCKER_ARCH=s390x
  64. export RUST_TRIPLET=s390x-unknown-linux-gnu
  65. ;;
  66. *)
  67. echo "ERROR: could not determine architecture settings. PLEASE FIX ME"
  68. exit 1
  69. ;;
  70. esac
  71. if [ -f "ci/Dockerfile.${PLATFORM}" ]; then
  72. export DOCKERFILE="ci/Dockerfile.${PLATFORM}"
  73. else
  74. export DOCKERFILE="ci/Dockerfile.${PKGFMT}"
  75. fi
  76. echo "#~~~~~~~~~~~~~~~~~~~~"
  77. echo "$0 variables:"
  78. echo "nproc: $(nproc)"
  79. echo "ZT_ISA: ${ZT_ISA}"
  80. echo "DOCKER_ARCH: ${DOCKER_ARCH}"
  81. echo "RUST_TRIPLET: ${RUST_TRIPLET}"
  82. echo "VERSION: ${VERSION}"
  83. echo "EVENT: ${EVENT}"
  84. echo "PKGFMT: ${PKGFMT}"
  85. echo "PWD: ${PWD}"
  86. echo "DOCKERFILE: ${DOCKERFILE}"
  87. echo "#~~~~~~~~~~~~~~~~~~~~"
  88. if [ ${EVENT} == "push" ]; then
  89. make munge_rpm zerotier-one.spec VERSION=${VERSION}
  90. make munge_deb debian/changelog VERSION=${VERSION}
  91. fi
  92. export DOCKER_BUILDKIT=1
  93. docker run --privileged --rm tonistiigi/binfmt --install all
  94. # docker pull --platform linux/${DOCKER_ARCH} registry.sean.farm/${PLATFORM}-builder
  95. docker buildx build \
  96. --build-arg PLATFORM="${PLATFORM}" \
  97. --build-arg RUST_TRIPLET="${RUST_TRIPLET}" \
  98. --build-arg DOCKER_ARCH="${DOCKER_ARCH}" \
  99. --platform linux/${DOCKER_ARCH} \
  100. -f ${DOCKERFILE} \
  101. -t build \
  102. . \
  103. --output type=local,dest=. \
  104. --target export