#!/usr/bin/env bash set -e BINARYDIR=${BINARYDIR:-bin} BUILDDIR=${BUILDDIR:-bin} # A non-installed acbuild can be used, for example: # ACBUILD=../../appc/acbuild/bin/acbuild ACBUILD=${ACBUILD:-acbuild} VERSION=$1 go2aci() { case "${1}" in "arm64") echo "aarch64";; *) echo "${1}";; esac } if ! command -v "${ACBUILD}" >/dev/null; then echo "acbuild ($ACBUILD) is not executable" exit 1 fi if [ ! -x "${BINARYDIR}"/etcd ] ; then echo "$BINARYDIR/etcd not found. Is it compiled?" exit 1 fi if [ -z "$VERSION" ] ; then echo "Usage: scripts/build-aci VERSION" exit 1 fi acbuild --debug begin TMPHOSTS="$(mktemp)" ACI_ARCH=$(go2aci "${GOARCH}") acbuildEnd() { rm "$TMPHOSTS" export EXIT=$? acbuild --debug end && exit $EXIT } trap acbuildEnd EXIT cat < "$TMPHOSTS" 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 DF acbuild --debug set-name coreos.com/etcd acbuild --debug annotation add appc.io/executor/supports-systemd-notify true acbuild --debug copy "${BINARYDIR}"/etcd /usr/local/bin/etcd acbuild --debug copy "${BINARYDIR}"/etcdctl /usr/local/bin/etcdctl acbuild --debug copy README.md README.md acbuild --debug copy etcdctl/README.md README-etcdctl.md acbuild --debug copy etcdctl/READMEv2.md READMEv2-etcdctl.md acbuild --debug copy-to-dir Documentation . acbuild --debug environment add ETCD_DATA_DIR /var/lib/etcd acbuild --debug mount add data-dir /var/lib/etcd acbuild --debug label add version "$VERSION" acbuild --debug set-exec -- /usr/local/bin/etcd acbuild --debug port add client tcp 2379 acbuild --debug port add peer tcp 2380 acbuild --debug copy "$TMPHOSTS" /etc/hosts acbuild --debug label add arch "${ACI_ARCH}" # mkdir default data-dir mkdir -p .acbuild/currentaci/rootfs/var/lib/etcd # symlinks for backward-compatibility ln -s ./usr/local/bin/etcd .acbuild/currentaci/rootfs/etcd ln -s ./usr/local/bin/etcdctl .acbuild/currentaci/rootfs/etcdctl acbuild --debug write --overwrite "${BUILDDIR}/etcd-${1}-linux-${ACI_ARCH}.aci"