Skip to content

Commit

Permalink
build: Use targets and loop in pkg.sh.
Browse files Browse the repository at this point in the history
This modifies the packaging script to make use of a TARGETS variable to
control which platforms are built rather than having to manually specify
the OS and ARCH multiple times for each command.

This should be less error prone when modifying the target platforms and
is certainly easier to add/remove platforms as desired.
  • Loading branch information
davecgh authored and chappjc committed Sep 23, 2022
1 parent 8ffb208 commit 29975ba
Showing 1 changed file with 21 additions and 27 deletions.
48 changes: 21 additions & 27 deletions pkg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,7 @@ set -e
VER="0.6.0-pre" # pre, beta, rc1, etc.
META= # "release"

rm -rf bin
mkdir -p bin/dexc-windows-amd64-v${VER}
mkdir -p bin/dexc-linux-amd64-v${VER}
mkdir -p bin/dexc-linux-arm64-v${VER}
mkdir -p bin/dexc-darwin-amd64-v${VER}
mkdir -p bin/dexc-darwin-arm64-v${VER}
TARGETS="linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64"

export CGO_ENABLED=0

Expand All @@ -26,35 +21,34 @@ npm ci
npm run build
popd

LDFLAGS="-s -w -X main.Version=${VER}${META:++${META}}"
rm -rf bin
for TARGET in ${TARGETS}; do
OS=${TARGET%%/*}
ARCH=${TARGET##*/}

pushd client/cmd/dexc
GOOS=linux GOARCH=amd64 go build -trimpath -o ../../../bin/dexc-linux-amd64-v${VER} -ldflags "$LDFLAGS"
GOOS=linux GOARCH=arm64 go build -trimpath -o ../../../bin/dexc-linux-arm64-v${VER} -ldflags "$LDFLAGS"
GOOS=windows GOARCH=amd64 go build -trimpath -o ../../../bin/dexc-windows-amd64-v${VER} -ldflags "$LDFLAGS"
GOOS=darwin GOARCH=amd64 go build -trimpath -o ../../../bin/dexc-darwin-amd64-v${VER} -ldflags "$LDFLAGS"
GOOS=darwin GOARCH=arm64 go build -trimpath -o ../../../bin/dexc-darwin-arm64-v${VER} -ldflags "$LDFLAGS"
popd
mkdir -p "bin/dexc-${OS}-${ARCH}-v${VER}"

LDFLAGS="-s -w -X main.Version=${VER}${META:++${META}}"
pushd client/cmd/dexc
GOOS=${OS} GOARCH=${ARCH} go build -trimpath -o "../../../bin/dexc-${OS}-${ARCH}-v${VER}" -ldflags "$LDFLAGS"
popd

pushd client/cmd/dexcctl
GOOS=linux GOARCH=amd64 go build -trimpath -o ../../../bin/dexc-linux-amd64-v${VER} -ldflags "$LDFLAGS"
GOOS=linux GOARCH=arm64 go build -trimpath -o ../../../bin/dexc-linux-arm64-v${VER} -ldflags "$LDFLAGS"
GOOS=windows GOARCH=amd64 go build -trimpath -o ../../../bin/dexc-windows-amd64-v${VER} -ldflags "$LDFLAGS"
GOOS=darwin GOARCH=amd64 go build -trimpath -o ../../../bin/dexc-darwin-amd64-v${VER} -ldflags "$LDFLAGS"
GOOS=darwin GOARCH=arm64 go build -trimpath -o ../../../bin/dexc-darwin-arm64-v${VER} -ldflags "$LDFLAGS"
popd
pushd client/cmd/dexcctl
GOOS=${OS} GOARCH=${ARCH} go build -trimpath -o "../../../bin/dexc-${OS}-${ARCH}-v${VER}" -ldflags "$LDFLAGS"
popd

pushd bin
if [[ "$OS" == "windows" ]]; then
zip -9 -r -q "dexc-${OS}-${ARCH}-v${VER}.zip" "dexc-${OS}-${ARCH}-v${VER}"
else
tar -I 'gzip -9' --owner=0 --group=0 -cf "dexc-${OS}-${ARCH}-v${VER}.tar.gz" "dexc-${OS}-${ARCH}-v${VER}"
fi
popd
done

echo "Files embedded in the Go webserver package:"
go list -f '{{ .EmbedFiles }}' decred.org/dcrdex/client/webserver
# NOTE: before embedding, we needed to grab: dist, src/font, src/html, src/img.

pushd bin
zip -9 -r -q dexc-windows-amd64-v${VER}.zip dexc-windows-amd64-v${VER}
tar -I 'gzip -9' --owner=0 --group=0 -cf dexc-linux-amd64-v${VER}.tar.gz dexc-linux-amd64-v${VER}
tar -I 'gzip -9' --owner=0 --group=0 -cf dexc-linux-arm64-v${VER}.tar.gz dexc-linux-arm64-v${VER}
tar -I 'gzip -9' --owner=0 --group=0 -cf dexc-darwin-amd64-v${VER}.tar.gz dexc-darwin-amd64-v${VER}
tar -I 'gzip -9' --owner=0 --group=0 -cf dexc-darwin-arm64-v${VER}.tar.gz dexc-darwin-arm64-v${VER}
sha256sum *.gz *.zip > dexc-v${VER}-manifest.txt
popd

0 comments on commit 29975ba

Please sign in to comment.