mirror of
https://github.com/go-sylixos/elvish.git
synced 2024-12-14 02:57:52 +08:00
75 lines
1.6 KiB
Bash
Executable File
75 lines
1.6 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
# Should be invoked from repo root.
|
|
|
|
: ${VERSION:=unknown}
|
|
: ${BIN_DIR:=./_bin}
|
|
: ${MANIFEST:=/dev/null}
|
|
|
|
export GOOS GOARCH
|
|
export CGO_ENABLED=0
|
|
|
|
# build $os $arch...
|
|
build() {
|
|
local GOARCH=$1
|
|
shift
|
|
for GOOS in $@; do
|
|
DST_DIR=$BIN_DIR/$GOOS-$GOARCH
|
|
mkdir -p $DST_DIR
|
|
buildone
|
|
done
|
|
}
|
|
|
|
# buildone
|
|
# Uses: $GOOS $GOARCH $BIN_DIR $MANIFEST
|
|
buildone() {
|
|
local DST_DIR=$BIN_DIR/$GOOS-$GOARCH
|
|
local STEM=elvish-$VERSION
|
|
|
|
mkdir -p $DST_DIR
|
|
|
|
if test $GOOS = windows; then
|
|
BIN=$STEM.exe
|
|
ARCHIVE=$STEM.zip
|
|
else
|
|
BIN=$STEM
|
|
ARCHIVE=$STEM.tar.gz
|
|
fi
|
|
|
|
echo "Building for $GOOS-$GOARCH"
|
|
go build -o $DST_DIR/$BIN -ldflags \
|
|
"-X github.com/elves/elvish/buildinfo.Version=$VERSION \
|
|
-X github.com/elves/elvish/buildinfo.GoRoot=`go env GOROOT` \
|
|
-X github.com/elves/elvish/buildinfo.GoPath=`go env GOPATH`" || {
|
|
echo " -> Failed"
|
|
return
|
|
}
|
|
|
|
(
|
|
cd $DST_DIR
|
|
if test $GOOS = windows; then
|
|
zip -q $ARCHIVE $BIN
|
|
else
|
|
tar cfz $ARCHIVE $BIN
|
|
fi
|
|
)
|
|
|
|
echo " -> Done"
|
|
echo $GOOS-$GOARCH/$BIN >> $MANIFEST
|
|
echo $GOOS-$GOARCH/$ARCHIVE >> $MANIFEST
|
|
|
|
if which sha256sum; then
|
|
(
|
|
cd $DST_DIR
|
|
sha256sum $BIN > $BIN.sha256sum
|
|
sha256sum $ARCHIVE > $ARCHIVE.sha256sum
|
|
)
|
|
echo $GOOS-$GOARCH/$BIN.sha256sum >> $MANIFEST
|
|
echo $GOOS-$GOARCH/$ARCHIVE.sha256sum >> $MANIFEST
|
|
fi
|
|
}
|
|
|
|
build amd64 linux darwin freebsd openbsd netbsd windows
|
|
build 386 linux windows
|
|
build arm64 linux
|