etcd/scripts/build-aci
Geoff Levand e402606f02 build-aci: Fix ACI image name
The appc discovery spec states that the architecture specifier in the ACI
image file name will be an ACI architecture value.  Our build scripts were
using GOARCH in the image name, which is incorrect for arm64/aarch64.
See: https://github.com/appc/spec/blob/master/spec/discovery.md

Fixes errors like these on arm64 machines:

  $ rkt --debug --insecure-options=image fetch coreos.com/etcd:v3.2.0-rc.1
  image: remote fetching from URL "https://github.com/coreos/etcd/releases/download/v3.2.0-rc.1/etcd-v3.2.0-rc.1-linux-aarch64.aci"
  fetch: bad HTTP status code: 404

Signed-off-by: Geoff Levand <geoff@infradead.org>
2017-06-13 13:09:02 -07:00

85 lines
2.0 KiB
Bash
Executable File

#!/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 <<DF > $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