mirror of
https://github.com/Samsung/escargot.git
synced 2026-06-22 10:01:50 +00:00
322 lines
11 KiB
YAML
322 lines
11 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*.*.*"
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
RUNNER: tools/run-tests.py
|
|
BUILD_OPTIONS: -DESCARGOT_MODE=release -DESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN=OFF -DESCARGOT_DEPLOY=ON -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja
|
|
|
|
jobs:
|
|
build-macOS:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [macos-15, macos-latest]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: Install Packages
|
|
run: |
|
|
brew update
|
|
brew install ninja icu4c zip
|
|
- name: Build x64
|
|
run: |
|
|
# check cpu
|
|
sysctl -a | grep machdep.cpu
|
|
# add icu path to pkg_config_path
|
|
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig"
|
|
echo $PKG_CONFIG_PATH
|
|
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.10 -H. -Bout/ $BUILD_OPTIONS
|
|
ninja -Cout/
|
|
- name: Check
|
|
run: |
|
|
file out/escargot
|
|
strip out/escargot
|
|
|
|
# set deploy directory
|
|
mkdir -p deploy
|
|
|
|
# set escargot
|
|
cp out/escargot ./deploy/.
|
|
LIBS=$(otool -L ./deploy/escargot | grep "icu" | awk '{print $1}')
|
|
for LIB in $LIBS; do
|
|
BASENAME=$(basename "$LIB")
|
|
install_name_tool -change "$LIB" "@executable_path/$BASENAME" deploy/escargot
|
|
done
|
|
|
|
# set icu libs
|
|
ICU_LIBS=("libicuuc" "libicui18n" "libicudata")
|
|
ICU_SOURCE_PATH="$(brew --prefix icu4c)/lib"
|
|
ICU_VERSION=$(find "$ICU_SOURCE_PATH" -name "libicuuc.*.dylib" | grep -oE '\.[0-9]+\.' | head -n 1 | tr -d '.')
|
|
|
|
if [ -z "$ICU_VERSION" ]; then
|
|
echo "ICU version could not be detected."
|
|
exit 1
|
|
else
|
|
echo "Detected ICU Version: $ICU_VERSION"
|
|
fi
|
|
|
|
for LIB in "${ICU_LIBS[@]}"; do
|
|
cp -a $ICU_SOURCE_PATH/$LIB.*.dylib ./deploy/.
|
|
install_name_tool -id "@loader_path/$LIB.$ICU_VERSION.dylib" "./deploy/$LIB.$ICU_VERSION.dylib"
|
|
done
|
|
|
|
# check results
|
|
echo "Check results..."
|
|
ls ./deploy
|
|
otool -L ./deploy/escargot
|
|
otool -L ./deploy/libicu*.dylib
|
|
|
|
# Ad-hoc sign
|
|
set -e
|
|
cd deploy
|
|
for f in libicu*.dylib; do [ -e "$f" ] || continue; codesign -f -s - "$f"; done
|
|
codesign --force --deep -s - ./escargot
|
|
for f in ./escargot libicu*.dylib; do [ -e "$f" ] || continue; codesign --verify --strict --verbose=6 "$f"; done
|
|
cd ..
|
|
|
|
# run test
|
|
$RUNNER --engine="$GITHUB_WORKSPACE/deploy/escargot" new-es
|
|
|
|
# zip results
|
|
if [ "${{ matrix.os }}" == "macos-15" ]; then
|
|
zip -j escargot-mac64.zip deploy/*
|
|
elif [ "${{ matrix.os }}" == "macos-latest" ]; then
|
|
zip -j escargot-mac64arm.zip deploy/*
|
|
fi
|
|
- name: Upload mac64
|
|
if: ${{ matrix.os == 'macos-15' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: build-artifact-mac64
|
|
path: ./escargot-mac64.zip
|
|
- name: Upload mac64arm
|
|
if: ${{ matrix.os == 'macos-latest' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: build-artifact-mac64arm
|
|
path: ./escargot-mac64arm.zip
|
|
|
|
build-linux:
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: Install Packages
|
|
run: |
|
|
# for i386 ICU
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
sudo apt-get install -y ninja-build libicu-dev gcc-multilib g++-multilib zip patchelf
|
|
sudo apt-get install -y libicu-dev:i386 # install i386 ICU
|
|
- name: Build x86/x64
|
|
run: |
|
|
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/x86 -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_TEMPORAL=ON $BUILD_OPTIONS
|
|
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/x64 -DESCARGOT_TEMPORAL=ON $BUILD_OPTIONS
|
|
ninja -Cout/x86
|
|
ninja -Cout/x64
|
|
- name: Check
|
|
run: |
|
|
file out/x86/escargot
|
|
file out/x64/escargot
|
|
strip out/x86/escargot
|
|
strip out/x64/escargot
|
|
# set locale
|
|
sudo locale-gen en_US.UTF-8
|
|
export LANG=en_US.UTF-8
|
|
locale
|
|
|
|
# set deploy directory and copy escargot binary
|
|
mkdir -p deploy-x86
|
|
mkdir -p deploy-x64
|
|
cp out/x86/escargot ./deploy-x86/.
|
|
cp out/x64/escargot ./deploy-x64/.
|
|
|
|
# set icu libs
|
|
ldd deploy-x86/escargot | grep "icu" | grep "=>" | awk '{print $3}' | xargs -I '{}' cp '{}' deploy-x86/
|
|
ldd deploy-x64/escargot | grep "icu" | grep "=>" | awk '{print $3}' | xargs -I '{}' cp '{}' deploy-x64/
|
|
for LIB in ./deploy-x86/libicu*; do
|
|
patchelf --set-rpath '$ORIGIN' "$LIB"
|
|
done
|
|
for LIB in ./deploy-x64/libicu*; do
|
|
patchelf --set-rpath '$ORIGIN' "$LIB"
|
|
done
|
|
|
|
# check results
|
|
echo "Check results..."
|
|
ls ./deploy-x86
|
|
ldd deploy-x86/escargot
|
|
ldd deploy-x86/libicu*
|
|
ls ./deploy-x64
|
|
ldd deploy-x64/escargot
|
|
ldd deploy-x64/libicu*
|
|
|
|
# run test
|
|
$RUNNER --engine="$GITHUB_WORKSPACE/deploy-x86/escargot" new-es
|
|
$RUNNER --engine="$GITHUB_WORKSPACE/deploy-x64/escargot" new-es
|
|
|
|
# zip results
|
|
zip -j escargot-linux-x86.zip deploy-x86/*
|
|
zip -j escargot-linux-x64.zip deploy-x64/*
|
|
- name: Upload
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: build-artifact-linux
|
|
path: escargot-linux-*.zip
|
|
|
|
build-windows:
|
|
runs-on: windows-2022
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x64]
|
|
steps:
|
|
- name: Set git cllf config
|
|
run: |
|
|
git config --global core.autocrlf input
|
|
git config --global core.eol lf
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
- uses: szenius/set-timezone@v2.0
|
|
with:
|
|
timezoneWindows: "Pacific Standard Time"
|
|
- uses: lukka/get-cmake@latest
|
|
with:
|
|
cmakeVersion: "~3.25.0"
|
|
- uses: GuillaumeFalourd/setup-windows10-sdk-action@v2
|
|
with:
|
|
sdk-version: 26100
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.11'
|
|
- name: Download and Install Visual C++ Redistributable
|
|
shell: powershell
|
|
run: |
|
|
$vcRedistUrl64 = "https://aka.ms/vs/17/release/vc_redist.x64.exe" # Or the appropriate URL for your target architecture/version
|
|
$vcRedistPath64 = "$env:TEMP\vc_redist.x64.exe"
|
|
$vcRedistUrl32 = "https://aka.ms/vs/17/release/vc_redist.x86.exe" # Or the appropriate URL for your target architecture/version
|
|
$vcRedistPath32 = "$env:TEMP\vc_redist.x86.exe"
|
|
|
|
Write-Host "Downloading Visual C++ Redistributable from $vcRedistUrl64"
|
|
Invoke-WebRequest -Uri $vcRedistUrl64 -OutFile $vcRedistPath64
|
|
|
|
Write-Host "Downloading Visual C++ Redistributable from $vcRedistUrl32"
|
|
Invoke-WebRequest -Uri $vcRedistUrl32 -OutFile $vcRedistPath32
|
|
|
|
Write-Host "Installing Visual C++ Redistributable silently"
|
|
Start-Process -FilePath $vcRedistPath64 -ArgumentList "/install /quiet /norestart" -Wait
|
|
Start-Process -FilePath $vcRedistPath32 -ArgumentList "/install /quiet /norestart" -Wait
|
|
Write-Host "Visual C++ Redistributable installation complete."
|
|
- uses: ilammy/msvc-dev-cmd@v1.13.0
|
|
with:
|
|
arch: ${{ matrix.arch }}
|
|
sdk: "10.0.26100.0"
|
|
- name: Install zip if not available
|
|
run: |
|
|
if (-Not (Get-Command zip -ErrorAction SilentlyContinue)) {
|
|
choco install zip -y
|
|
}
|
|
- name: Build ${{ matrix.arch }}
|
|
run: |
|
|
CMake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} -DESCARGOT_ARCH=${{ matrix.arch }} -Bout/ -DESCARGOT_OUTPUT=shell -DESCARGOT_LIBICU_SUPPORT=ON -DESCARGOT_WASM=ON -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -G Ninja -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=release
|
|
CMake --build out/ --config Release
|
|
- name: Check
|
|
run: |
|
|
python tools\run-tests.py --engine=%cd%\out\escargot.exe new-es
|
|
rename out\escargot.exe escargot-win-${{ matrix.arch }}.exe
|
|
zip -j escargot-win-${{ matrix.arch}}.zip out\escargot-win-${{ matrix.arch }}.exe
|
|
shell: cmd
|
|
- name: Upload
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: build-artifact-win-${{ matrix.arch }}
|
|
path: escargot-win-${{ matrix.arch }}.zip
|
|
|
|
check-build-mac64:
|
|
needs: [build-macOS]
|
|
runs-on: macos-15
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: artifacts
|
|
pattern: build-artifact-mac64
|
|
merge-multiple: true
|
|
- name: Check
|
|
run: |
|
|
unzip artifacts/escargot-mac64.zip -d artifacts
|
|
otool -L artifacts/escargot
|
|
otool -L artifacts/*.dylib
|
|
$RUNNER --engine="$GITHUB_WORKSPACE/artifacts/escargot" new-es
|
|
|
|
check-build-mac64arm:
|
|
needs: [build-macOS]
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: artifacts
|
|
pattern: build-artifact-mac64arm
|
|
merge-multiple: true
|
|
- name: Check
|
|
run: |
|
|
unzip artifacts/escargot-mac64arm.zip -d artifacts
|
|
otool -L artifacts/escargot
|
|
otool -L artifacts/*.dylib
|
|
$RUNNER --engine="$GITHUB_WORKSPACE/artifacts/escargot" new-es
|
|
|
|
check-build-linux:
|
|
needs: [build-linux]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: artifacts
|
|
pattern: build-artifact-linux
|
|
merge-multiple: true
|
|
- name: Check
|
|
run: |
|
|
dpkg -l | grep libicu-dev
|
|
mkdir -p result-x86
|
|
mkdir -p result-x64
|
|
unzip artifacts/escargot-linux-x86.zip -d result-x86
|
|
unzip artifacts/escargot-linux-x64.zip -d result-x64
|
|
ldd result-x86/escargot
|
|
ldd result-x86/libicu*
|
|
ldd result-x64/escargot
|
|
ldd result-x64/libicu*
|
|
$RUNNER --engine="$GITHUB_WORKSPACE/result-x86/escargot" new-es
|
|
$RUNNER --engine="$GITHUB_WORKSPACE/result-x64/escargot" new-es
|
|
|
|
update-release:
|
|
needs: [check-build-mac64, check-build-mac64arm, check-build-linux, build-windows]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: artifacts
|
|
pattern: build-artifact-*
|
|
merge-multiple: true
|
|
- name: Upload to release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: |
|
|
artifacts/escargot-*
|