1
0
mirror of https://github.com/Llewellynvdm/starship.git synced 2024-11-28 07:46:28 +00:00

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>
This commit is contained in:
David Knaack 2021-01-21 23:17:02 +01:00 committed by GitHub
parent 00afc82049
commit 132be11790
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 5 deletions

View File

@ -52,14 +52,31 @@ jobs:
os: ubuntu-latest os: ubuntu-latest
name: starship-i686-unknown-linux-musl.tar.gz 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 - target: x86_64-apple-darwin
os: macOS-latest os: macOS-latest
name: starship-x86_64-apple-darwin.tar.gz 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 - target: x86_64-pc-windows-msvc
os: windows-latest os: windows-latest
name: starship-x86_64-pc-windows-msvc.zip 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 }} runs-on: ${{ matrix.os }}
steps: steps:
- name: Setup | Checkout - name: Setup | Checkout
@ -101,7 +118,8 @@ jobs:
if: matrix.os != 'windows-latest' if: matrix.os != 'windows-latest'
run: | run: |
cd target/${{ matrix.target }}/release cd target/${{ matrix.target }}/release
strip starship # TODO: investigate better cross platform stripping
strip starship || true
tar czvf ../../../${{ matrix.name }} starship tar czvf ../../../${{ matrix.name }} starship
cd - cd -

View File

@ -33,7 +33,11 @@ BLUE="$(tput setaf 4 2>/dev/null || echo '')"
MAGENTA="$(tput setaf 5 2>/dev/null || echo '')" MAGENTA="$(tput setaf 5 2>/dev/null || echo '')"
NO_COLOR="$(tput sgr0 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() { info() {
printf "%s\n" "${BOLD}${GREY}>${NO_COLOR} $*" printf "%s\n" "${BOLD}${GREY}>${NO_COLOR} $*"
@ -192,14 +196,34 @@ detect_arch() {
local arch local arch
arch="$(uname -m | tr '[:upper:]' '[:lower:]')" 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 # `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 if [ "${arch}" = "x64" ] && [ "$(getconf LONG_BIT)" -eq 32 ]; then
arch=i686 arch=i686
elif [ "${arch}" = "aarch64" ] && [ "$(getconf LONG_BIT)" -eq 32 ]; then
arch=arm
fi fi
echo "${arch}" 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() { confirm() {
if [ -z "${FORCE-}" ]; then if [ -z "${FORCE-}" ]; then
printf "%s " "${MAGENTA}?${NO_COLOR} $* ${BOLD}[y/N]${NO_COLOR}" printf "%s " "${MAGENTA}?${NO_COLOR} $* ${BOLD}[y/N]${NO_COLOR}"
@ -247,8 +271,8 @@ check_bin_dir() {
is_build_available() { is_build_available() {
local arch="$1" local arch="$1"
local platform="$2" local platform="$2"
local target="$3"
local target="${arch}-${platform}"
local good local good
good=$( good=$(
@ -350,7 +374,9 @@ while [ "$#" -gt 0 ]; do
esac esac
done done
is_build_available "${ARCH}" "${PLATFORM}" TARGET="$(detect_target "${ARCH}" "${PLATFORM}")"
is_build_available "${ARCH}" "${PLATFORM}" "${TARGET}"
printf " %s\n" "${UNDERLINE}Configuration${NO_COLOR}" printf " %s\n" "${UNDERLINE}Configuration${NO_COLOR}"
info "${BOLD}Bin directory${NO_COLOR}: ${GREEN}${BIN_DIR}${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 EXT=zip
fi 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}" info "Tarball URL: ${UNDERLINE}${BLUE}${URL}${NO_COLOR}"
confirm "Install Starship ${GREEN}latest${NO_COLOR} to ${BOLD}${GREEN}${BIN_DIR}${NO_COLOR}?" confirm "Install Starship ${GREEN}latest${NO_COLOR} to ${BOLD}${GREEN}${BIN_DIR}${NO_COLOR}?"
check_bin_dir "${BIN_DIR}" check_bin_dir "${BIN_DIR}"