react-native-macos/scripts/ios-configure-glog.sh

84 строки
2.5 KiB
Bash
Исходник Обычный вид История

#!/bin/bash
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
set -e
PLATFORM_NAME="${PLATFORM_NAME:-iphoneos}"
CURRENT_ARCH="${CURRENT_ARCH}"
if [ -z "$CURRENT_ARCH" ] || [ "$CURRENT_ARCH" == "undefined_arch" ]; then
# Xcode 10 beta sets CURRENT_ARCH to "undefined_arch", this leads to incorrect linker arg.
# it's better to rely on platform name as fallback because architecture differs between simulator and device
if [[ "$PLATFORM_NAME" == *"simulator"* ]]; then
CURRENT_ARCH="x86_64"
else
CURRENT_ARCH="arm64"
fi
fi
# @lint-ignore-every TXT2 Tab Literal
if [ "$CURRENT_ARCH" == "arm64" ]; then
cat <<\EOF >>fix_glog_0.3.5_apple_silicon.patch
diff --git a/config.sub b/config.sub
index 1761d8b..43fa2e8 100755
--- a/config.sub
+++ b/config.sub
@@ -1096,6 +1096,9 @@ case $basic_machine in
basic_machine=z8k-unknown
os=-sim
;;
+ arm64-*)
+ basic_machine=$(echo $basic_machine | sed 's/arm64/aarch64/')
+ ;;
none)
basic_machine=none-none
os=-none
EOF
patch -p1 config.sub fix_glog_0.3.5_apple_silicon.patch
fi
export CC="$(xcrun -find -sdk $PLATFORM_NAME cc) -arch $CURRENT_ARCH -isysroot $(xcrun -sdk $PLATFORM_NAME --show-sdk-path)"
export CXX="$CC"
Removing test-driver symlink in ios third party install script Summary: After execution of `scripts/ios-install-third-party.sh` a symlink is created : `<YOUR-APP-PATH>/node_modules/react-native/third-party/glog-0.3.4/test-driver` that is pointing to `test-driver -> /usr/share/automake-1.14/test-driver` This can be executed indirectly by `react-native run-ios`. This breaks the bundle process if the system don't contain a given file under the link and having this strict dependency on the system setup is not a good practice. Once the `test-driver` symlink is created android app release is failing, for : `./gradlew assembleRelease` the `:app:bundleReleaseJsAndAssets` returns : ``` FAILURE: Build failed with an exception. * What went wrong: Could not list contents of '<YOUR-APP-PATH>/node_modules/react-native/third-party/glog-0.3.4/test-driver'. Couldn't follow symbolic link. ``` Related issues: https://github.com/facebook/react-native/issues/14417 https://github.com/facebook/react-native/issues/14464 https://github.com/facebook/react-native/issues/14548 1. Create new project with `react-native init <YOUR-APP>` 2. cd `<YOUR-APP>/` 3. Run app on iOS `react-native run-ios` so `scripts/ios-install-third-party.sh` is executed. 4. cd `android/` 5. Run android app release `./gradlew assembleRelease` (it will work properly after this fix and fail if the `test-driver` symlink exists) IMHO we should resolve the issue with this quick fix and apply the proper fix later after the new version of `google/glog` will be released. The proper cleanup of files generated by autotools was already applied : https://github.com/google/glog/pull/188 Please let me know if I should provide more details : javache, mhorowitz, hramos Closes https://github.com/facebook/react-native/pull/14638 Differential Revision: D5292362 Pulled By: javache fbshipit-source-id: 81ff2273420ea078d624a76e781a5b67b96e6a4e
2017-06-21 17:33:24 +03:00
# Remove automake symlink if it exists
if [ -h "test-driver" ]; then
rm test-driver
fi
# Manually disable gflags include to fix issue https://github.com/facebook/react-native/issues/28446
sed -i.bak -e 's/\@ac_cv_have_libgflags\@/0/' src/glog/logging.h.in && rm src/glog/logging.h.in.bak
sed -i.bak -e 's/HAVE_LIB_GFLAGS/HAVE_LIB_GFLAGS_DISABLED/' src/config.h.in && rm src/config.h.in.bak
./configure --host arm-apple-darwin
cat << EOF >> src/config.h
/* Add in so we have Apple Target Conditionals */
#ifdef __APPLE__
#include <TargetConditionals.h>
#include <Availability.h>
#endif
/* Special configuration for ucontext */
#undef HAVE_UCONTEXT_H
#undef PC_FROM_UCONTEXT
#if defined(__x86_64__)
#define PC_FROM_UCONTEXT uc_mcontext->__ss.__rip
#elif defined(__i386__)
#define PC_FROM_UCONTEXT uc_mcontext->__ss.__eip
#endif
EOF
# Prepare exported header include
EXPORTED_INCLUDE_DIR="exported/glog"
mkdir -p exported/glog
cp -f src/glog/log_severity.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/raw_logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/stl_logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/vlog_is_on.h "$EXPORTED_INCLUDE_DIR/"