#!/usr/bin/env bash
set -euo pipefail
HARMONY_ROOT="${1:?用法: $0 <harmony 工程根目录>}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LIBEVENT_SRC="$SCRIPT_DIR/../vendor/libevent-2.1.13-src"
if [ ! -d "$LIBEVENT_SRC" ]; then
echo "错误:找不到 libevent 2.1.13 源码树 $LIBEVENT_SRC" >&2
exit 1
fi
RNOH_CPP_DIR="$(
find "$HARMONY_ROOT" \
\( -path '*/.cxx/*' -o -path '*/build/*' \) -prune -o \
-type d -path '*/oh_modules/@rnoh/react-native-openharmony/src/main/cpp' -print 2>/dev/null \
| head -1
)"
if [ -z "$RNOH_CPP_DIR" ] || [ ! -d "$RNOH_CPP_DIR" ]; then
echo "错误:在 $HARMONY_ROOT 下找不到 oh_modules/@rnoh/react-native-openharmony/src/main/cpp,请先跑 ohpm install --all" >&2
exit 1
fi
echo "==> 定位到 RNOH_CPP_DIR: $RNOH_CPP_DIR"
TARGET_LIBEVENT="$RNOH_CPP_DIR/third-party/libevent"
echo "==> 替换 libevent 源码树:$TARGET_LIBEVENT"
rm -rf "$TARGET_LIBEVENT"
cp -r "$LIBEVENT_SRC" "$TARGET_LIBEVENT"
echo "==> 校验目标目录下 .c 文件与新源码树同名齐全"
for f in "$RNOH_CPP_DIR"/CMakeLists.txt; do
:
done
PATCHES_DIR="$RNOH_CPP_DIR/patches/libevent"
for abi in arm64-v8a armeabi-v7a x86_64; do
CFG="$PATCHES_DIR/$abi/event2/event-config.h"
if [ ! -f "$CFG" ]; then
echo "错误:找不到 $CFG" >&2
exit 1
fi
echo "==> 改版本宏:$CFG"
sed -i \
-e 's/#define EVENT__NUMERIC_VERSION 0x0201[0-9a-f]\{2\}00/#define EVENT__NUMERIC_VERSION 0x02010d00/' \
-e 's/#define EVENT__PACKAGE_VERSION "2\.1\.[0-9]\+"/#define EVENT__PACKAGE_VERSION "2.1.13"/' \
-e 's/#define EVENT__VERSION_PATCH [0-9]\+/#define EVENT__VERSION_PATCH 13/' \
-e 's/#define EVENT__VERSION "2\.1\.[0-9]\+-stable"/#define EVENT__VERSION "2.1.13-stable"/' \
"$CFG"
grep -n "EVENT__NUMERIC_VERSION\|EVENT__PACKAGE_VERSION\|EVENT__VERSION_PATCH\|EVENT__VERSION \"" "$CFG"
done
RNOH_CMAKE="$RNOH_CPP_DIR/CMakeLists.txt"
if [ ! -f "$RNOH_CMAKE" ]; then
echo "错误:找不到 $RNOH_CMAKE" >&2
exit 1
fi
if grep -q 'third-party/rn/ReactCommon/jsi/jsi/jsi.cpp' "$RNOH_CMAKE"; then
echo "==> RNOH 0.72.143 JSI 链接项已存在"
else
echo "==> 补 RNOH 0.72.143 JSI 链接项:jsi.cpp"
sed -i '/RNOH\/JSBigStringHelpers\.cpp"/a\ "${RNOH_CPP_DIR}/third-party/rn/ReactCommon/jsi/jsi/jsi.cpp"' "$RNOH_CMAKE"
fi
touch "$RNOH_CPP_DIR/RNOHAppNapiBridge.cpp" 2>/dev/null || true
echo "==> libevent 2.1.13 / RNOH 0.72.143 补丁完成"