|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
_init() {
|
|
|
|
# Save release LDFLAGS
|
|
|
|
LDFLAGS=$(go run buildscripts/gen-ldflags.go)
|
|
|
|
|
|
|
|
# Extract release tag
|
|
|
|
release_tag=$(echo $LDFLAGS | awk {'print $6'} | cut -f2 -d=)
|
|
|
|
|
|
|
|
# Verify release tag.
|
|
|
|
if [ -z "$release_tag" ]; then
|
|
|
|
echo "Release tag cannot be empty. Please check return value of \`go run buildscripts/gen-ldflags.go\`"
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Extract release string.
|
|
|
|
release_str=$(echo $MINIO_RELEASE | tr '[:upper:]' '[:lower:]')
|
|
|
|
|
|
|
|
# Verify release string.
|
|
|
|
if [ -z "$release_str" ]; then
|
|
|
|
echo "Release string cannot be empty. Please set \`MINIO_RELEASE\` env variable."
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
|
|
|
|
# List of supported architectures
|
|
|
|
SUPPORTED_OSARCH='linux/386 linux/amd64 linux/arm linux/arm64 windows/386 windows/amd64 darwin/amd64 freebsd/amd64'
|
|
|
|
|
|
|
|
## System binaries
|
|
|
|
CP=`which cp`
|
|
|
|
SHASUM=`which shasum`
|
|
|
|
SED=`which sed`
|
|
|
|
}
|
|
|
|
|
|
|
|
go_build() {
|
|
|
|
local osarch=$1
|
|
|
|
os=$(echo $osarch | cut -f1 -d'/')
|
|
|
|
arch=$(echo $osarch | cut -f2 -d'/')
|
|
|
|
package=$(go list -f '{{.ImportPath}}')
|
|
|
|
echo -n "-->"
|
|
|
|
printf "%15s:%s\n" "${osarch}" "${package}"
|
|
|
|
|
|
|
|
# Release binary name
|
|
|
|
release_bin="$release_str/$os-$arch/$(basename $package).$release_tag"
|
|
|
|
# Release binary downloadable name
|
|
|
|
release_real_bin="$release_str/$os-$arch/$(basename $package)"
|
|
|
|
# Release shasum name
|
|
|
|
release_shasum="$release_str/$os-$arch/$(basename $package).shasum"
|
|
|
|
|
|
|
|
# Go build to build the binary.
|
|
|
|
if [ "${arch}" == "arm" ]; then
|
|
|
|
# Release binary downloadable name
|
|
|
|
release_real_bin_6="$release_str/$os-${arch}6vl/$(basename $package)"
|
|
|
|
|
|
|
|
release_bin_6="$release_str/$os-${arch}6vl/$(basename $package).$release_tag"
|
|
|
|
## Support building for ARM6vl
|
|
|
|
GOARM=6 GOOS=$os GOARCH=$arch go build --ldflags "${LDFLAGS}" -o $release_bin_6
|
|
|
|
|
|
|
|
## Copy
|
|
|
|
$CP -p $release_bin_6 $release_real_bin_6
|
|
|
|
|
|
|
|
# Release shasum name
|
|
|
|
release_shasum_6="$release_str/$os-${arch}6vl/$(basename $package).shasum"
|
|
|
|
|
|
|
|
# Calculate shasum
|
|
|
|
shasum_str=$(${SHASUM} ${release_bin_6})
|
|
|
|
echo ${shasum_str} | $SED "s/$release_str\/$os-${arch}6vl\///g" > $release_shasum_6
|
|
|
|
|
|
|
|
# Release binary downloadable name
|
|
|
|
release_real_bin_7="$release_str/$os-$arch/$(basename $package)"
|
|
|
|
|
|
|
|
release_bin_7="$release_str/$os-$arch/$(basename $package).$release_tag"
|
|
|
|
## Support building for ARM7vl
|
|
|
|
GOARM=7 GOOS=$os GOARCH=$arch go build --ldflags "${LDFLAGS}" -o $release_bin_7
|
|
|
|
|
|
|
|
## Copy
|
|
|
|
$CP -p $release_bin_7 $release_real_bin_7
|
|
|
|
|
|
|
|
# Release shasum name
|
|
|
|
release_shasum_7="$release_str/$os-$arch/$(basename $package).shasum"
|
|
|
|
|
|
|
|
# Calculate shasum
|
|
|
|
shasum_str=$(${SHASUM} ${release_bin_7})
|
|
|
|
echo ${shasum_str} | $SED "s/$release_str\/$os-$arch\///g" > $release_shasum_7
|
|
|
|
else
|
|
|
|
GOOS=$os GOARCH=$arch go build --ldflags "${LDFLAGS}" -o $release_bin
|
|
|
|
|
|
|
|
# Create copy
|
|
|
|
if [ $os == "windows" ]; then
|
|
|
|
$CP -p $release_bin ${release_real_bin}.exe
|
|
|
|
else
|
|
|
|
$CP -p $release_bin $release_real_bin
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Calculate shasum
|
|
|
|
shasum_str=$(${SHASUM} ${release_bin})
|
|
|
|
echo ${shasum_str} | $SED "s/$release_str\/$os-$arch\///g" > $release_shasum
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
main() {
|
|
|
|
# Build releases.
|
|
|
|
echo "Executing $release_str builds for OS: ${SUPPORTED_OSARCH}"
|
|
|
|
echo "Choose an OS Arch from the below"
|
|
|
|
for osarch in ${SUPPORTED_OSARCH}; do
|
|
|
|
echo ${osarch}
|
|
|
|
done
|
|
|
|
|
|
|
|
read -p "If you want to build for all, Just press Enter: " chosen_osarch
|
|
|
|
if [ "$chosen_osarch" = "" ] || [ "$chosen_osarch" = "all" ]; then
|
|
|
|
for each_osarch in ${SUPPORTED_OSARCH}; do
|
|
|
|
go_build ${each_osarch}
|
|
|
|
done
|
|
|
|
else
|
|
|
|
for each_osarch in $(echo $chosen_osarch | sed 's/,/ /g'); do
|
|
|
|
go_build ${each_osarch}
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
# Run main.
|
|
|
|
_init && main
|