MacOS arm64 Build #50
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: MacOS arm64 Build | |
concurrency: | |
group: macos_arm64_build_${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
env: | |
JAVET_NODE_VERSION: 20.17.0 | |
JAVET_V8_VERSION: 12.8.374.17 | |
JAVET_VERSION: 3.1.7 | |
ROOT: /Users/runner/work/Javet | |
jobs: | |
build_javet_v8: | |
name: Build Javet V8 | |
runs-on: macos-14 | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Setup XCode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: latest-stable | |
- name: Setup Path | |
run: | | |
echo "${{ env.ROOT }}/google/depot_tools" >> $GITHUB_PATH | |
- name: Build V8 | |
run: | | |
cd ${{ env.ROOT }} | |
mkdir google | |
cd google | |
git clone --depth=10 --branch=main https://chromium.googlesource.com/chromium/tools/depot_tools.git | |
cd depot_tools | |
git checkout remotes/origin/main | |
cd .. | |
fetch v8 | |
cd v8 | |
git checkout ${{ env.JAVET_V8_VERSION }} | |
cd .. | |
gclient sync -D | |
cd v8 | |
python3 tools/dev/v8gen.py arm64.release -- v8_monolithic=true 'target_cpu="arm64"' v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false | |
gn gen out.gn/arm64.release | |
ninja -C out.gn/arm64.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./ | |
ninja -C out.gn/arm64.release v8_monolith | |
- name: Setup JDK 8 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: corretto | |
java-version: 8 | |
- name: Setup Cmake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.23.x' | |
- name: Build Javet JNI | |
run: | | |
cd ${{ env.ROOT }}/Javet/cpp | |
sed -i '.bak' 's/`nproc`/2/g' build-macos.sh | |
sh ./build-macos.sh -DV8_DIR=${{ env.ROOT }}/google/v8 | |
- name: Upload the Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: javet-macos-v8-arm64-${{ env.JAVET_VERSION }} | |
path: src/main/resources/*.dylib | |
build_javet_node: | |
name: Build Javet Node | |
runs-on: macos-14 | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup XCode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: latest-stable | |
- name: Build Node.js | |
run: | | |
cd ${{ env.ROOT }} | |
git clone https://github.com/nodejs/node.git | |
cd node | |
git checkout v${{ env.JAVET_NODE_VERSION }} | |
./configure --enable-static --without-intl | |
make -j4 | |
- name: Setup JDK 8 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: corretto | |
java-version: 8 | |
- name: Setup Cmake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.23.x' | |
- name: Build Javet JNI | |
run: | | |
cd ${{ env.ROOT }}/Javet/cpp | |
sed -i '.bak' 's/`nproc`/2/g' build-macos.sh | |
sh ./build-macos.sh -DNODE_DIR=${{ env.ROOT }}/node | |
- name: Upload the Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: javet-macos-node-arm64-${{ env.JAVET_VERSION }} | |
path: src/main/resources/*.dylib | |
build_javet_jar: | |
needs: [build_javet_v8, build_javet_node] | |
name: Build Javet Jar | |
runs-on: macos-14 | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup JDK 8 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: corretto | |
java-version: 8 | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v4 | |
with: | |
gradle-version: 8.5 | |
- name: Download Javet V8 | |
uses: actions/download-artifact@v4 | |
with: | |
name: javet-macos-v8-arm64-${{ env.JAVET_VERSION }} | |
path: src/main/resources/ | |
- name: Download Javet Node | |
uses: actions/download-artifact@v4 | |
with: | |
name: javet-macos-node-arm64-${{ env.JAVET_VERSION }} | |
path: src/main/resources/ | |
- name: Build the Artifact | |
run: | | |
cd ${{ env.ROOT }}/Javet | |
touch src/main/resources/libjavet-v8* | |
gradle build test --rerun-tasks --debug | |
touch src/main/resources/libjavet-node* | |
gradle test --rerun-tasks --debug | |
gradle build generatePomFileForGeneratePomPublication | |
zip -d build/libs/javet-${{ env.JAVET_VERSION }}-sources.jar *.dylib | |
- name: Upload the Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: javet-macos-arm64-${{ env.JAVET_VERSION }} | |
path: | | |
build/libs/*.jar | |
build/libs/*.pom | |
- name: Delete Javet V8 | |
uses: geekyeggo/delete-artifact@v4 | |
with: | |
name: javet-macos-v8-arm64-${{ env.JAVET_VERSION }} | |
- name: Delete Javet Node | |
uses: geekyeggo/delete-artifact@v4 | |
with: | |
name: javet-macos-node-arm64-${{ env.JAVET_VERSION }} |