mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/53390 Changelog: [General][Fixed] - Change leftover references to `hermes.framework` to `hermesvm.framework` Reviewed By: cipolleschi Differential Revision: D80701257 fbshipit-source-id: 9c0e8e49e50f515941e48de2219fb7730d8896bd
228 lines
10 KiB
YAML
228 lines
10 KiB
YAML
name: build-hermes-macos
|
|
description: This action builds hermesc for Apple platforms
|
|
inputs:
|
|
hermes-version:
|
|
required: true
|
|
description: The version of Hermes
|
|
react-native-version:
|
|
required: true
|
|
description: The version of React Native
|
|
flavor:
|
|
required: true
|
|
description: The flavor we want to build. It can be Debug or Release
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Setup xcode
|
|
uses: ./.github/actions/setup-xcode
|
|
- name: Restore Hermes workspace
|
|
uses: ./.github/actions/restore-hermes-workspace
|
|
- name: Restore Cached Artifacts
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
key: v4-hermes-artifacts-${{ inputs.flavor }}-${{ inputs.hermes-version }}-${{ inputs.react-native-version }}-${{ hashFiles('./packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh') }}
|
|
path: |
|
|
/tmp/hermes/osx-bin/${{ inputs.flavor }}
|
|
/tmp/hermes/dSYM/${{ inputs.flavor }}
|
|
/tmp/hermes/hermes-runtime-darwin/hermes-ios-${{ inputs.flavor }}.tar.gz
|
|
- name: Check if the required artifacts already exist
|
|
id: check_if_apple_artifacts_are_there
|
|
shell: bash
|
|
run: |
|
|
FLAVOR="${{ inputs.flavor }}"
|
|
echo "Flavor is $FLAVOR"
|
|
OSX_BIN="/tmp/hermes/osx-bin/$FLAVOR"
|
|
DSYM="/tmp/hermes/dSYM/$FLAVOR"
|
|
HERMES="/tmp/hermes/hermes-runtime-darwin/hermes-ios-$FLAVOR.tar.gz"
|
|
|
|
if [[ -d "$OSX_BIN" ]] && \
|
|
[[ -d "$DSYM" ]] && \
|
|
[[ -f "$HERMES" ]]; then
|
|
|
|
echo "Artifacts are there!"
|
|
echo "ARTIFACTS_EXIST=true" >> $GITHUB_ENV
|
|
echo "ARTIFACTS_EXIST=true" >> $GITHUB_OUTPUT
|
|
fi
|
|
- name: Setup node.js
|
|
uses: ./.github/actions/setup-node
|
|
- name: Yarn- Install Dependencies
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: ./.github/actions/yarn-install
|
|
- name: Slice cache macosx
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./packages/react-native/sdks/hermes/
|
|
name: slice-macosx-${{ inputs.flavor }}
|
|
- name: Slice cache iphoneos
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./packages/react-native/sdks/hermes/
|
|
name: slice-iphoneos-${{ inputs.flavor }}
|
|
- name: Slice cache iphonesimulator
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./packages/react-native/sdks/hermes/
|
|
name: slice-iphonesimulator-${{ inputs.flavor }}
|
|
- name: Slice cache appletvos
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./packages/react-native/sdks/hermes/
|
|
name: slice-appletvos-${{ inputs.flavor }}
|
|
- name: Slice cache appletvsimulator
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./packages/react-native/sdks/hermes/
|
|
name: slice-appletvsimulator-${{ inputs.flavor }}
|
|
- name: Slice cache catalyst
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./packages/react-native/sdks/hermes/
|
|
name: slice-catalyst-${{ inputs.flavor }}
|
|
- name: Slice cache xros
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./packages/react-native/sdks/hermes/
|
|
name: slice-xros-${{ inputs.flavor }}
|
|
- name: Slice cache xrsimulator
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./packages/react-native/sdks/hermes/
|
|
name: slice-xrsimulator-${{ inputs.flavor }}
|
|
- name: Unzip slices
|
|
shell: bash
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
run: |
|
|
cd ./packages/react-native/sdks/hermes
|
|
ls -l .
|
|
tar -xzv -f build_catalyst_${{ matrix.flavor }}.tar.gz
|
|
tar -xzv -f build_iphoneos_${{ matrix.flavor }}.tar.gz
|
|
tar -xzv -f build_iphonesimulator_${{ matrix.flavor }}.tar.gz
|
|
tar -xzv -f build_appletvos_${{ matrix.flavor }}.tar.gz
|
|
tar -xzv -f build_appletvsimulator_${{ matrix.flavor }}.tar.gz
|
|
tar -xzv -f build_macosx_${{ matrix.flavor }}.tar.gz
|
|
tar -xzv -f build_xros_${{ matrix.flavor }}.tar.gz
|
|
tar -xzv -f build_xrsimulator_${{ matrix.flavor }}.tar.gz
|
|
- name: Move back build folders
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
shell: bash
|
|
run: |
|
|
ls -l ./packages/react-native/sdks/hermes
|
|
cd ./packages/react-native/sdks/hermes || exit 1
|
|
mv build_macosx_${{ inputs.flavor }} build_macosx
|
|
mv build_iphoneos_${{ inputs.flavor }} build_iphoneos
|
|
mv build_iphonesimulator_${{ inputs.flavor }} build_iphonesimulator
|
|
mv build_appletvos_${{ inputs.flavor }} build_appletvos
|
|
mv build_appletvsimulator_${{ inputs.flavor }} build_appletvsimulator
|
|
mv build_catalyst_${{ inputs.flavor }} build_catalyst
|
|
mv build_xros_${{ inputs.flavor }} build_xros
|
|
mv build_xrsimulator_${{ inputs.flavor }} build_xrsimulator
|
|
- name: Prepare destroot folder
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
shell: bash
|
|
run: |
|
|
cd ./packages/react-native/sdks/hermes || exit 1
|
|
chmod +x ./utils/build-apple-framework.sh
|
|
. ./utils/build-apple-framework.sh
|
|
prepare_dest_root_for_ci
|
|
- name: Create fat framework for iOS
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
shell: bash
|
|
run: |
|
|
cd ./packages/react-native/sdks/hermes || exit 1
|
|
echo "[HERMES] Creating the universal framework"
|
|
chmod +x ./utils/build-ios-framework.sh
|
|
./utils/build-ios-framework.sh build_framework
|
|
|
|
chmod +x ./destroot/bin/hermesc
|
|
- name: Package the Hermes Apple frameworks
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
shell: bash
|
|
run: |
|
|
BUILD_TYPE="${{ inputs.flavor }}"
|
|
echo "Packaging Hermes Apple frameworks for $BUILD_TYPE build type"
|
|
|
|
TARBALL_OUTPUT_DIR=$(mktemp -d /tmp/hermes-tarball-output-XXXXXXXX)
|
|
|
|
TARBALL_FILENAME=$(node ./packages/react-native/scripts/hermes/get-tarball-name.js --buildType "$BUILD_TYPE")
|
|
|
|
echo "Packaging Hermes Apple frameworks for $BUILD_TYPE build type"
|
|
|
|
TARBALL_OUTPUT_PATH=$(node ./packages/react-native/scripts/hermes/create-tarball.js \
|
|
--inputDir ./packages/react-native/sdks/hermes \
|
|
--buildType "$BUILD_TYPE" \
|
|
--outputDir $TARBALL_OUTPUT_DIR)
|
|
|
|
echo "Hermes tarball saved to $TARBALL_OUTPUT_PATH"
|
|
|
|
mkdir -p $HERMES_TARBALL_ARTIFACTS_DIR
|
|
cp $TARBALL_OUTPUT_PATH $HERMES_TARBALL_ARTIFACTS_DIR/.
|
|
|
|
mkdir -p /tmp/hermes/osx-bin/${{ inputs.flavor }}
|
|
cp ./packages/react-native/sdks/hermes/build_macosx/bin/* /tmp/hermes/osx-bin/${{ inputs.flavor }}
|
|
ls -lR /tmp/hermes/osx-bin/
|
|
- name: Create dSYM archive
|
|
if: ${{ steps.check_if_apple_artifacts_are_there.outputs.ARTIFACTS_EXIST != 'true' }}
|
|
shell: bash
|
|
run: |
|
|
FLAVOR=${{ inputs.flavor }}
|
|
WORKING_DIR="/tmp/hermes_tmp/dSYM/$FLAVOR"
|
|
|
|
mkdir -p "$WORKING_DIR/macosx"
|
|
mkdir -p "$WORKING_DIR/catalyst"
|
|
mkdir -p "$WORKING_DIR/iphoneos"
|
|
mkdir -p "$WORKING_DIR/iphonesimulator"
|
|
mkdir -p "$WORKING_DIR/appletvos"
|
|
mkdir -p "$WORKING_DIR/appletvsimulator"
|
|
mkdir -p "$WORKING_DIR/xros"
|
|
mkdir -p "$WORKING_DIR/xrsimulator"
|
|
|
|
cd ./packages/react-native/sdks/hermes || exit 1
|
|
|
|
DSYM_FILE_PATH=lib/hermesvm.framework.dSYM
|
|
cp -r build_macosx/$DSYM_FILE_PATH "$WORKING_DIR/macosx/"
|
|
cp -r build_catalyst/$DSYM_FILE_PATH "$WORKING_DIR/catalyst/"
|
|
cp -r build_iphoneos/$DSYM_FILE_PATH "$WORKING_DIR/iphoneos/"
|
|
cp -r build_iphonesimulator/$DSYM_FILE_PATH "$WORKING_DIR/iphonesimulator/"
|
|
cp -r build_appletvos/$DSYM_FILE_PATH "$WORKING_DIR/appletvos/"
|
|
cp -r build_appletvsimulator/$DSYM_FILE_PATH "$WORKING_DIR/appletvsimulator/"
|
|
cp -r build_xros/$DSYM_FILE_PATH "$WORKING_DIR/xros/"
|
|
cp -r build_xrsimulator/$DSYM_FILE_PATH "$WORKING_DIR/xrsimulator/"
|
|
|
|
DEST_DIR="/tmp/hermes/dSYM/$FLAVOR"
|
|
tar -C "$WORKING_DIR" -czvf "hermesvm.framework.dSYM" .
|
|
|
|
mkdir -p "$DEST_DIR"
|
|
mv "hermesvm.framework.dSYM" "$DEST_DIR"
|
|
- name: Upload hermes dSYM artifacts
|
|
uses: actions/upload-artifact@v4.3.4
|
|
with:
|
|
name: hermes-dSYM-${{ inputs.flavor }}
|
|
path: /tmp/hermes/dSYM/${{ inputs.flavor }}
|
|
- name: Upload hermes Runtime artifacts
|
|
uses: actions/upload-artifact@v4.3.4
|
|
with:
|
|
name: hermes-darwin-bin-${{ inputs.flavor }}
|
|
path: /tmp/hermes/hermes-runtime-darwin/hermes-ios-${{ inputs.flavor }}.tar.gz
|
|
- name: Upload hermes osx artifacts
|
|
uses: actions/upload-artifact@v4.3.4
|
|
with:
|
|
name: hermes-osx-bin-${{ inputs.flavor }}
|
|
path: /tmp/hermes/osx-bin/${{ inputs.flavor }}
|
|
- name: Upload Hermes Artifacts
|
|
uses: actions/cache/save@v4
|
|
if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, '-stable') }} # To avoid that the cache explode.
|
|
with:
|
|
key: v4-hermes-artifacts-${{ inputs.flavor }}-${{ inputs.hermes-version }}-${{ inputs.react-native-version }}-${{ hashFiles('./packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh') }}
|
|
path: |
|
|
/tmp/hermes/osx-bin/${{ inputs.flavor }}
|
|
/tmp/hermes/dSYM/${{ inputs.flavor }}
|
|
/tmp/hermes/hermes-runtime-darwin/hermes-ios-${{ inputs.flavor }}.tar.gz
|