summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Knaack <davidkna@users.noreply.github.com>2021-01-21 23:17:02 +0100
committerGitHub <noreply@github.com>2021-01-21 23:17:02 +0100
commit132be11790dbc0251acb563bbca1d2c5486d6566 (patch)
tree6ead37ad48c75c1131d1cbb2cb9bf85099812bb3
parent00afc82049c094ccac6a3363043c4972746cafee (diff)
build: add builds for various targets (#2137)
* build: add builds for various targets * fix typo Co-authored-by: Matan Kushner <hello@matchai.me> Co-authored-by: Matan Kushner <hello@matchai.me>
-rw-r--r--.github/workflows/deploy.yml20
-rwxr-xr-xinstall/install.sh34
2 files changed, 49 insertions, 5 deletions
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 5c02cba4b..d202f08be 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -52,13 +52,30 @@ jobs:
os: ubuntu-latest
name: starship-i686-unknown-linux-musl.tar.gz
+ - target: aarch64-unknown-linux-musl
+ os: ubuntu-latest
+ name: starship-aarch64-unknown-linux-musl.tar.gz
+
+ - target: arm-unknown-linux-musleabihf
+ os: ubuntu-latest
+ name: starship-arm-unknown-linux-musleabihf.tar.gz
+
- target: x86_64-apple-darwin
os: macOS-latest
name: starship-x86_64-apple-darwin.tar.gz
+
+ # TODO: switch to macOS-latest once it reaches 11.0
+ - target: aarch64-apple-darwin
+ os: macos-11.0
+ name: starship-aarch64-apple-darwin.tar.gz
- target: x86_64-pc-windows-msvc
os: windows-latest
name: starship-x86_64-pc-windows-msvc.zip
+
+ - target: i686-pc-windows-msvc
+ os: windows-latest
+ name: starship-i686-pc-windows-msvc.zip
runs-on: ${{ matrix.os }}
steps:
@@ -101,7 +118,8 @@ jobs:
if: matrix.os != 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
- strip starship
+ # TODO: investigate better cross platform stripping
+ strip starship || true
tar czvf ../../../${{ matrix.name }} starship
cd -
diff --git a/install/install.sh b/install/install.sh
index a9ff0f8fe..4f19046cd 100755
--- a/install/install.sh
+++ b/install/install.sh
@@ -33,7 +33,11 @@ BLUE="$(tput setaf 4 2>/dev/null || echo '')"
MAGENTA="$(tput setaf 5 2>/dev/null || echo '')"
NO_COLOR="$(tput sgr0 2>/dev/null || echo '')"
-SUPPORTED_TARGETS="x86_64-unknown-linux-gnu x86_64-unknown-linux-musl i686-unknown-linux-musl x86_64-apple-darwin x86_64-pc-windows-msvc"
+SUPPORTED_TARGETS="x86_64-unknown-linux-gnu x86_64-unknown-linux-musl \
+ i686-unknown-linux-musl aarch64-unknown-linux-musl \
+ arm-unknown-linux-musleabihf x86_64-apple-darwin \
+ aarch64-apple-darwin x86_64-pc-windows-msvc \
+ i686-pc-windows-msvc"
info() {
printf "%s\n" "${BOLD}${GREY}>${NO_COLOR} $*"
@@ -192,14 +196,34 @@ detect_arch() {
local arch
arch="$(uname -m | tr '[:upper:]' '[:lower:]')"
+ case "${arch}" in
+ armv*) arch="arm" ;;
+ arm64) arch="aarch64" ;;
+ esac
+
# `uname -m` in some cases mis-reports 32-bit OS as 64-bit, so double check
if [ "${arch}" = "x64" ] && [ "$(getconf LONG_BIT)" -eq 32 ]; then
arch=i686
+ elif [ "${arch}" = "aarch64" ] && [ "$(getconf LONG_BIT)" -eq 32 ]; then
+ arch=arm
fi
echo "${arch}"
}
+detect_target() {
+ local arch="$1"
+ local platform="$2"
+ local target="$arch-$platform"
+
+ if [ "${target}" = "arm-unknown-linux-musl" ]; then
+ target="${target}eabihf"
+ fi
+
+ echo "${target}"
+}
+
+
confirm() {
if [ -z "${FORCE-}" ]; then
printf "%s " "${MAGENTA}?${NO_COLOR} $* ${BOLD}[y/N]${NO_COLOR}"
@@ -247,8 +271,8 @@ check_bin_dir() {
is_build_available() {
local arch="$1"
local platform="$2"
+ local target="$3"
- local target="${arch}-${platform}"
local good
good=$(
@@ -350,7 +374,9 @@ while [ "$#" -gt 0 ]; do
esac
done
-is_build_available "${ARCH}" "${PLATFORM}"
+TARGET="$(detect_target "${ARCH}" "${PLATFORM}")"
+
+is_build_available "${ARCH}" "${PLATFORM}" "${TARGET}"
printf " %s\n" "${UNDERLINE}Configuration${NO_COLOR}"
info "${BOLD}Bin directory${NO_COLOR}: ${GREEN}${BIN_DIR}${NO_COLOR}"
@@ -372,7 +398,7 @@ if [ "${PLATFORM}" = "pc-windows-msvc" ]; then
EXT=zip
fi
-URL="${BASE_URL}/latest/download/starship-${ARCH}-${PLATFORM}.${EXT}"
+URL="${BASE_URL}/latest/download/starship-${TARGET}.${EXT}"
info "Tarball URL: ${UNDERLINE}${BLUE}${URL}${NO_COLOR}"
confirm "Install Starship ${GREEN}latest${NO_COLOR} to ${BOLD}${GREEN}${BIN_DIR}${NO_COLOR}?"
check_bin_dir "${BIN_DIR}"