본문 바로가기
TIL

[React Native] M1 Pro ios pod install glog (0.3.5) 설치 에러

by 사탕공방 2023. 11. 22.

환경

M1 Pro Macbook

react-native: 0.72.7

ruby 2.6.10

cocoapods 1.14.3

문제

설치에 참고한 공식문서

bundle exec pod install 시 glog 설치 실패( 아래는 에러 메시지 )

Installing glog (0.3.5)
[!] /bin/bash -c 
set -e
#!/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"

# 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/"

patching file config.sub
1 out of 1 hunks failed--saving rejects to config.sub.rej

해결에 도움을 준 깃헙 링크

https://github.com/facebook/react-native/issues/34189#issuecomment-1612450650

저는 아래의 명령만으로 해결되었습니다.

git config --global core.autocrlf input

처음 설치 시도시 잘못된(?) 방향으로 문제를 해결하다가 권한 문제가 발생할 경우 해결에 도움을 준 깃헙 링크

https://gist.github.com/mbinna/4202236

도움은 받았으나 pod install을 사용하고 있지 않았으므로 아래와 같은 쉘 스크립트 수행 후 bundle install 및 bundle exec pod install을 수행하였습니다. 아래 쉘 스크립트 파일의 경로는 RN 프로젝트에서 ios폴더 입니다.

#!/usr/bin/env bash

rm -rf "${HOME}/Library/Caches/CocoaPods"
rm -rf "$(pwd)/Pods/"
rm -rf "$(pwd)/build/generated/ios"
rm "../Gemfile.lock"

 


여담이지만 정말.. 처음에 구글링하면서 찾았던 것들은

m1 pro 문제로 보여서 arch -x86_64 설치하는 시도도 해보고

안되서 rosetta?사용하기.. 도 시도해보고

권한 문제 생겨서 설치시 --allow-root 같은 명령도 추가하여 해보고

brew를 x86_64로 설치 시도도 해보고..

ruby 버전도 바꾸어 보고..

glog 정상빌드(?)폴더 다운받아서 Pods에 압축도 풀어보고.. 삽질 많이한 것 같습니다.

다른 분들은 부디 겪지 않으시기를..

댓글