File: build-binary

package info (click to toggle)
etcd 3.5.16-8
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,868 kB
  • sloc: sh: 3,136; makefile: 477
file content (104 lines) | stat: -rwxr-xr-x 2,156 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env bash

set -euo pipefail

source ./scripts/test_lib.sh

VER=${1:-}
REPOSITORY="${REPOSITORY:-git@github.com:etcd-io/etcd.git}"

if [ -z "${VER}" ]; then
  echo "Usage: ${0} VERSION" >> /dev/stderr
  exit 255
fi


function setup_env {
  local ver=${1}
  local proj=${2}

  if [ ! -d "${proj}" ]; then
    run git clone "${REPOSITORY}"
  fi

  pushd "${proj}" >/dev/null
    run git fetch --all
    run git checkout "${ver}"
  popd >/dev/null
}


function package {
  local target=${1}
  local srcdir="${2}/bin"

  local ccdir="${srcdir}/${GOOS}_${GOARCH}"
  if [ -d "${ccdir}" ]; then
    srcdir="${ccdir}"
  fi
  local ext=""
  if [ "${GOOS:-}" == "windows" ]; then
    ext=".exe"
  fi
  for bin in etcd etcdctl etcdutl; do
    cp "${srcdir}/${bin}" "${target}/${bin}${ext}"
  done

  cp etcd/README.md "${target}"/README.md
  cp etcd/etcdctl/README.md "${target}"/README-etcdctl.md
  cp etcd/etcdctl/READMEv2.md "${target}"/READMEv2-etcdctl.md
  cp etcd/etcdutl/README.md "${target}"/README-etcdutl.md

  cp -R etcd/Documentation "${target}"/Documentation
}

function main {
  local proj="etcd"

  mkdir -p release
  cd release
  setup_env "${VER}" "${proj}"

  local tarcmd=tar
  if [[ $(go env GOOS) == "darwin" ]]; then
      echo "Please use linux machine for release builds."
    exit 1
  fi

  for os in darwin windows linux; do
    export GOOS=${os}
    TARGET_ARCHS=("amd64")

    if [ ${GOOS} == "linux" ]; then
      TARGET_ARCHS+=("arm64")
      TARGET_ARCHS+=("ppc64le")
      TARGET_ARCHS+=("s390x")
    fi

    if [ ${GOOS} == "darwin" ]; then
      TARGET_ARCHS+=("arm64")
    fi

    for TARGET_ARCH in "${TARGET_ARCHS[@]}"; do
      export GOARCH=${TARGET_ARCH}

      pushd etcd >/dev/null
      GO_LDFLAGS="-s -w" ./build.sh
      popd >/dev/null

      TARGET="etcd-${VER}-${GOOS}-${GOARCH}"
      mkdir "${TARGET}"
      package "${TARGET}" "${proj}"

      if [ ${GOOS} == "linux" ]; then
        ${tarcmd} cfz "${TARGET}.tar.gz" "${TARGET}"
        echo "Wrote release/${TARGET}.tar.gz"
      else
        zip -qr "${TARGET}.zip" "${TARGET}"
        echo "Wrote release/${TARGET}.zip"
      fi
    done
  done
}

main