-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #445 from chainbound/cross-compile-cli-tarballs
feat: cross compile bolt-cli tarballs for usage by boltup
- Loading branch information
Showing
3 changed files
with
55 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#!/usr/bin/env bash | ||
set -eo pipefail | ||
|
||
# Use this script to create tarballs for bolt-cli to be uploaded to each Github release. | ||
# This is intended to be run locally, and assuming you have cross installed. | ||
# | ||
# Note: this will only work when run on MacOS as `cross` does not distribute SDKs for | ||
# MacOS due to licensing issues. | ||
|
||
# Target tuples for cross compilation. | ||
# each tuple is in the format of "target-triple", "short-name". | ||
TARGETS=( | ||
"aarch64-apple-darwin" "arm64-darwin" # ARM apple chips (M1) | ||
"x86_64-apple-darwin" "amd64_64-darwin" # Intel apple chips | ||
"aarch64-unknown-linux-gnu" "arm64-linux" # ARM linux chips | ||
"x86_64-unknown-linux-gnu" "amd64-linux" # x86 linux chips | ||
) | ||
|
||
PROFILE="release" | ||
|
||
# Check if cross is installed | ||
if ! command -v cross &> /dev/null; then | ||
echo "cross is not installed. Install it by running 'cargo install cross'" | ||
exit 1 | ||
fi | ||
|
||
( | ||
cd bolt-cli || exit 1 | ||
mkdir -p dist | ||
|
||
# Iterate over TARGETS in pairs | ||
for ((i=0; i<${#TARGETS[@]}; i+=2)); do | ||
target="${TARGETS[i]}" | ||
short_name="${TARGETS[i+1]}" | ||
|
||
echo "Building for $target ($short_name)" | ||
|
||
mkdir -p "dist/$short_name" | ||
cross build --$PROFILE --target "$target" | ||
cp "target/$target/$PROFILE/bolt" "dist/$short_name/bolt" | ||
tar -czf "dist/bolt-cli-$short_name.tar.gz" -C "dist/$short_name" bolt | ||
|
||
echo "Done building for $target ($short_name)" | ||
done | ||
|
||
echo "Done building all targets." | ||
echo "You can find the tarballs in bolt-cli/dist/" | ||
) | ||
|
||
exit 0 |