Skip to content

V8 Build

V8 Build #21

Workflow file for this run

name: V8 Build
on: workflow_dispatch
jobs:
build_common:
name: Build Architecture Independent Files
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 1
- name: Update to latest V8
run: |
latest_v8_hash="$(<deps/latest_v8_hash)"
cd deps/v8
git fetch origin "$latest_v8_hash"
latest_v8_version="$(git tag --points-at "$latest_v8_hash" | head -n1)"
git checkout "${latest_v8_version:-$latest_v8_hash}"
- name: Create include files
run: cd deps && ./build_common.py
- name: Upload include/ Artifacts
uses: actions/upload-artifact@v4
with:
# The name matches the directory under deps/.
name: include
if-no-files-found: error
path: deps/include/
retention-days: 2
build:
name: Build V8 for ${{ matrix.os }} ${{ matrix.arch }}
strategy:
fail-fast: false
matrix:
os: [android, darwin, linux]
arch: [x86_64, arm64]
include:
- os: android
platform: ubuntu-latest
- os: linux
platform: ubuntu-latest
- os: darwin
platform: macos-latest
runs-on: ${{ matrix.platform }}
steps:
- name: Restore CCache
uses: actions/cache@v3
with:
path: ~/.ccache
key: libv8:ccache:${{ matrix.os }}:${{ matrix.arch }}:${{ hashFiles('deps/v8_hash') }}:${{ runner.os }}
restore-keys: |
libv8:ccache:${{ matrix.os }}:${{ matrix.arch }}:
${{ runner.os }}:${{ matrix.os }}:${{ matrix.arch }}:libv8:ccache
- name: Install CCache
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -yq ccache
sudo update-ccache-symlinks
echo "/usr/lib/ccache" >> "$GITHUB_PATH"
- name: Install CCache
if: matrix.platform == 'macos-latest'
run: |
brew install ccache
echo "$(brew --prefix ccache)/libexec" >> "$GITHUB_PATH"
- name: Configure CCache
run: |
ccacheDir="$HOME/.ccache"
mkdir -p "$ccacheDir"
echo "CCACHE_DIR=$ccacheDir" >> "$GITHUB_ENV"
echo "CCACHE_CPP2=yes" >> "$GITHUB_ENV"
echo "CCACHE_SLOPPINESS=time_macros" >> "$GITHUB_ENV"
- name: Install g++-aarch64-linux-gnu
if: matrix.os == 'linux' && matrix.arch == 'arm64'
run: sudo apt update && sudo apt install g++-aarch64-linux-gnu -y
- name: Install setuptools
if: matrix.platform == 'macos-latest'
run: python3 -m ensurepip --default-pip && python3 -m pip install --upgrade setuptools
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 1
- name: Update to latest V8
run: |
latest_v8_hash="$(<deps/latest_v8_hash)"
cd deps/v8
git fetch origin "$latest_v8_hash"
latest_v8_version="$(git tag --points-at "$latest_v8_hash" | head -n1)"
git checkout "${latest_v8_version:-$latest_v8_hash}"
- name: Restore V8 Build Cache
uses: actions/cache@v3
with:
path: deps/v8/build
key: libv8:v8build:${{ matrix.os }}:${{ matrix.arch }}:${{ hashFiles('deps/v8_hash') }}:${{ runner.os }}
restore-keys: |
libv8:v8build:${{ matrix.os }}:${{ matrix.arch }}:
- name: Update depot_tools fetch config
run: cd deps/depot_tools && git config --unset-all remote.origin.fetch; git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
- name: Build V8 (${{ matrix.os }})
run: cd deps && ./build.py --ccache --arch ${{ matrix.arch }} --os ${{ matrix.os }}
- name: Show CCache Status
run: ccache -s
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
# The name matches the directory under deps/.
name: ${{ matrix.os }}_${{ matrix.arch }}
if-no-files-found: error
path: |
deps/${{ matrix.os }}_${{ matrix.arch }}/libv8.a
deps/${{ matrix.os }}_${{ matrix.arch }}/obj/
retention-days: 2
commit:
name: Commit Built Artifacts
needs: [build, build_common]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 1
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: deps
- id: update_v8
name: Update to latest V8
run: |
latest_v8_hash="$(<deps/latest_v8_hash)"
echo "$latest_v8_hash" >deps/v8_hash
cd deps/v8
git fetch origin "$latest_v8_hash"
latest_v8_version="$(git tag --points-at "$latest_v8_hash" | head -n1)"
git checkout "${latest_v8_version:-$latest_v8_hash}"
echo "latest_v8_version=${latest_v8_version:-$latest_v8_hash}" >>"$GITHUB_OUTPUT"
- name: Create PR
uses: peter-evans/create-pull-request@v5
with:
commit-message: Add built V8 libraries at ${{ steps.update_v8.outputs.latest_v8_version }}
title: Add built V8 libraries at ${{ steps.update_v8.outputs.latest_v8_version }}
body: Auto-generated pull request of built V8 libraries
add-paths: |
deps/*_*/libv8.a
deps/include/
deps/v8
deps/v8_hash
branch: workflow/v8build
delete-branch: true