Merge branch 'development' of github.com:incubaid/herolib into development
This commit is contained in:
101
.github/workflows/hero_build.yml
vendored
101
.github/workflows/hero_build.yml
vendored
@@ -5,71 +5,112 @@ permissions:
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "*"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
timeout-minutes: 60
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- target: x86_64-unknown-linux-musl
|
||||
os: alpine-latest
|
||||
short-name: linux-i64
|
||||
- target: aarch64-unknown-linux-musl
|
||||
os: alpine-latest
|
||||
short-name: linux-arm64
|
||||
arch: arm64
|
||||
- target: x86_64-linux
|
||||
os: ubuntu-latest
|
||||
- target: aarch64-linux
|
||||
os: ubuntu-24.04-arm
|
||||
- target: aarch64-apple-darwin
|
||||
os: macos-latest
|
||||
short-name: macos-arm64
|
||||
# - target: x86_64-apple-darwin
|
||||
# os: macos-13
|
||||
# short-name: macos-i64
|
||||
runs-on: ${{ matrix.os }}
|
||||
container: ${{ matrix.container }}
|
||||
|
||||
steps:
|
||||
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
|
||||
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
|
||||
- run: echo "🔎 The name of your branch is ${{ github.ref_name }} and your repository is ${{ github.repository }}."
|
||||
|
||||
- uses: maxim-lobanov/setup-xcode@v1
|
||||
if: runner.os == 'macOS'
|
||||
with:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Check out repository code
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# - name: Setup dependencies on Alpine
|
||||
# if: runner.os == 'Linux'
|
||||
# run: |
|
||||
# sudo apk add --no-cache gcc musl-dev openssl-dev openssl-libs-static
|
||||
|
||||
# We do the workaround as described here https://github.com/Incubaid/herolib?tab=readme-ov-file#tcc-compiler-error-on-macos
|
||||
# gcc and clang also don't work on macOS due to https://github.com/vlang/v/issues/25467
|
||||
# We can change the compiler or remove this when one is fixed
|
||||
- name: Setup V & Herolib
|
||||
id: setup
|
||||
shell: bash
|
||||
run: |
|
||||
./install_v.sh
|
||||
git clone https://github.com/vlang/v
|
||||
cd v
|
||||
make
|
||||
./v symlink
|
||||
if [ "${{ runner.os }}" = "macOS" ]; then
|
||||
sudo sed -i '' '618,631d' /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/math.h
|
||||
fi
|
||||
cd -
|
||||
|
||||
mkdir -p ~/.vmodules/incubaid
|
||||
ln -s $(pwd)/lib ~/.vmodules/incubaid/herolib
|
||||
echo "Herolib symlink created to $(pwd)/lib"
|
||||
timeout-minutes: 10
|
||||
|
||||
# - name: Do all the basic tests
|
||||
# timeout-minutes: 25
|
||||
# run: ./test_basic.vsh
|
||||
|
||||
# We can't make static builds for Linux easily, since we link to libql
|
||||
# (Postgres) and this has no static version available in the Alpine
|
||||
# repos. Therefore we build dynamic binaries for both glibc and musl.
|
||||
#
|
||||
# Again we work around a bug limiting our choice of C compiler tcc won't
|
||||
# work on Alpine due to https://github.com/vlang/v/issues/24866
|
||||
# So always use gcc for Linux
|
||||
#
|
||||
# For macOS, we can only use tcc (see above), but then we hit issues using
|
||||
# the garbage collector, so disable that
|
||||
- name: Build Hero
|
||||
timeout-minutes: 15
|
||||
run: |
|
||||
set -e
|
||||
if [ "${{ runner.os }}" = "Linux" ]; then
|
||||
v -w -d use_openssl -enable-globals -cflags -cc gcc -static cli/hero.v -o cli/hero-${{ matrix.target }}
|
||||
sudo apt-get install libpq-dev
|
||||
# Build for glibc
|
||||
v -w -d use_openssl -enable-globals -cc gcc cli/hero.v -o cli/hero-${{ matrix.target }}
|
||||
|
||||
# Build for musl using Alpine in Docker
|
||||
docker run --rm \
|
||||
-v ${{ github.workspace }}/lib:/root/.vmodules/incubaid/herolib \
|
||||
-v ${{ github.workspace }}:/herolib \
|
||||
-w /herolib \
|
||||
alpine \
|
||||
sh -c '
|
||||
apk add --no-cache bash git build-base openssl-dev libpq-dev
|
||||
cd v
|
||||
make clean
|
||||
make
|
||||
./v symlink
|
||||
cd ..
|
||||
v -w -d use_openssl -enable-globals -cc gcc cli/hero.v -o cli/hero-${{ matrix.target }}-musl
|
||||
'
|
||||
|
||||
else
|
||||
v -w -d use_openssl -enable-globals cli/hero.v -o cli/hero-${{ matrix.target }}
|
||||
v -w -d use_openssl -enable-globals -gc none -cc tcc cli/hero.v -o cli/hero-${{ matrix.target }}
|
||||
fi
|
||||
|
||||
- name: Upload glibc binary
|
||||
if: runner.os == 'Linux'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: hero-${{ matrix.target }}
|
||||
path: cli/hero-${{ matrix.target }}
|
||||
|
||||
- name: Upload musl binary
|
||||
if: runner.os == 'Linux'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: hero-${{ matrix.target }}-musl
|
||||
path: cli/hero-${{ matrix.target }}-musl
|
||||
|
||||
- name: Upload
|
||||
if: runner.os != 'Linux'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: hero-${{ matrix.target }}
|
||||
@@ -80,12 +121,8 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
|
||||
12
.github/workflows/test.yml
vendored
12
.github/workflows/test.yml
vendored
@@ -5,24 +5,20 @@ permissions:
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "**"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- target: x86_64-unknown-linux-musl
|
||||
os: ubuntu-latest
|
||||
short-name: linux-i64
|
||||
runs-on: ${{ matrix.os }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
|
||||
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
|
||||
- run: echo "🔎 The name of your branch is ${{ github.ref_name }} and your repository is ${{ github.repository }}."
|
||||
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup V
|
||||
run: |
|
||||
|
||||
@@ -53,7 +53,7 @@ fn do() ! {
|
||||
mut cmd := Command{
|
||||
name: 'hero'
|
||||
description: 'Your HERO toolset.'
|
||||
version: '1.0.34'
|
||||
version: '1.0.36'
|
||||
}
|
||||
|
||||
// herocmds.cmd_run_add_flags(mut cmd)
|
||||
|
||||
@@ -4,38 +4,41 @@ set -e
|
||||
|
||||
os_name="$(uname -s)"
|
||||
arch_name="$(uname -m)"
|
||||
version='1.0.34'
|
||||
version='1.0.36'
|
||||
|
||||
# Detect Linux distribution type
|
||||
linux_type=""
|
||||
if [[ "$os_name" == "Linux" ]]; then
|
||||
if [ -f /etc/os-release ]; then
|
||||
linux_type="$(. /etc/os-release && echo "$ID")"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Base URL for GitHub releases
|
||||
base_url="https://github.com/incubaid/herolib/releases/download/v${version}"
|
||||
|
||||
# Select the URL based on the platform
|
||||
if [[ "$os_name" == "Linux" && "$arch_name" == "x86_64" ]]; then
|
||||
url="$base_url/hero-x86_64-unknown-linux-musl"
|
||||
if [[ "$linux_type" == "alpine" ]]; then
|
||||
url="$base_url/hero-x86_64-linux-musl"
|
||||
else
|
||||
url="$base_url/hero-x86_64-linux"
|
||||
fi
|
||||
elif [[ "$os_name" == "Linux" && "$arch_name" == "aarch64" ]]; then
|
||||
url="$base_url/hero-aarch64-unknown-linux-musl"
|
||||
if [[ "$linux_type" == "alpine" ]]; then
|
||||
url="$base_url/hero-aarch64-linux-musl"
|
||||
else
|
||||
url="$base_url/hero-aarch64-linux"
|
||||
fi
|
||||
elif [[ "$os_name" == "Darwin" && "$arch_name" == "arm64" ]]; then
|
||||
url="$base_url/hero-aarch64-apple-darwin"
|
||||
elif [[ "$os_name" == "Darwin" && "$arch_name" == "x86_64" ]]; then
|
||||
url="$base_url/hero-x86_64-apple-darwin"
|
||||
# elif [[ "$os_name" == "Darwin" && "$arch_name" == "x86_64" ]]; then
|
||||
# url="$base_url/hero-x86_64-apple-darwin"
|
||||
else
|
||||
echo "Unsupported platform: $os_name $arch_name"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# # Select the URL based on the platform
|
||||
# if [[ "$os_name" == "Linux" && "$arch_name" == "x86_64" ]]; then
|
||||
# url="https://f003.backblazeb2.com/file/threefold/linux-i64/hero"
|
||||
# elif [[ "$os_name" == "Darwin" && "$arch_name" == "arm64" ]]; then
|
||||
# url="https://f003.backblazeb2.com/file/threefold/macos-arm64/hero"
|
||||
# # elif [[ "$os_name" == "Darwin" && "$arch_name" == "x86_64" ]]; then
|
||||
# # url="https://f003.backblazeb2.com/file/threefold/macos-i64/hero"
|
||||
# else
|
||||
# echo "Unsupported platform."
|
||||
# exit 1
|
||||
# fi
|
||||
|
||||
# Check for existing hero installations
|
||||
existing_hero=$(which hero 2>/dev/null || true)
|
||||
if [ ! -z "$existing_hero" ]; then
|
||||
|
||||
Reference in New Issue
Block a user