react-native: /bin/bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory

Description:

As suggested by the docs, I uninstalled global react-native-cli, and use npx instead. I encounter this error when running : npx react-native init AwesomeProject as the error suggests, I run cd ./AwesomeProject/ios && pod install But still get the same error during installation of glog as follow:

/bin/bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory

React Native version:

Run `react-native info` in your terminal and copy the results here.

bash: react-native: command not found

Steps To Reproduce

  1. brew install node
  2. brew install watchman
  3. sudo gem install cocoapods -n /usr/local/bin
  4. npx react-native init AwesomeProject

Expected Results

An error during Installing glog (0.3.5).

Installing glog (0.3.5) [!] /bin/bash -c set -e #!/bin/bash

Copyright © Facebook, Inc. and its 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="armv7"
fi

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

./configure --host arm-apple-darwin

Fix build for tvOS

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 AppleTVOS */ #if TARGET_OS_TV #undef HAVE_SYSCALL_H #undef HAVE_SYS_SYSCALL_H #undef OS_MACOSX #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/”

/bin/bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 22

Most upvoted comments

hat tip to elpardo farther down in this thread

  • check your git’s global autocrlf setting
    • git config --global core.autocrlf
    • repository one doesn’t matter for this issue (my repo setting was right but my global one was wrong)
  • if it isn’t already, set it to input on macOS (false also works, see documentation link below)
    • git config --global --add core.autocrlf input

git’s core.autocrlf documentation

Hacky workaround spoilered to avoid misleading used these instructions a couple of days ago after reading a few dozen comments across several threads for convenience, most lines can be triple clicked to copy/paste assumed you are comfortable editing in `vi`, if not, you'll need to adjust as necessary

on ios

  • starting from RN project root
  • vi node_modules/react-native/scripts/ios-configure-glog.sh
    • :w ++ff=mac
      • saves in mac line endings
  • vi node_modules/react-native/scripts/ios-install-third-party.sh
    • replace SCRIPTDIR=$(dirname "$0") with
      • SCRIPTDIR=$(pwd)/$(dirname "$0")
    • replace fetch_and_unpack glog-0.3.5.tar.gz https://github.com/google/glog/archive/v0.3.5.tar.gz 61067502c5f9769d111ea1ee3f74e6ddf0a5f9cc "\"$SCRIPTDIR/ios-configure-glog.sh\"" with
      • fetch_and_unpack glog-0.3.5.tar.gz https://github.com/google/glog/archive/v0.3.5.tar.gz 61067502c5f9769d111ea1ee3f74e6ddf0a5f9cc "sh \"$SCRIPTDIR/ios-configure-glog.sh\""
    • :wq
  • cd node_modules/react-native/scripts/ && ./ios-install-third-party.sh
  • cd third-party/ && cd glog-0.3.5/src && ./configure && ./make && cd ../..
  • cp -a glog-0.3.5/src/. ../../../../ios/Pods/glog/src/ && cp -a folly-2018.10.22.00/folly/. ../../../../ios/Pods/Folly/folly
  • cd ../../../../ios && pod update

I started experiencing the above issue a few weeks ago, wanted to post on here as I narrowed it down to a git config change I made on OSX. Prior to this change I hadn’t experienced a blog pod install issue, and reverting to earlier commits which had built fine exhibited the same issue. In global git I had changed autocrlf to true. Removing this config line entirely meant RN 0.61.5 and glog 0.3.4 built and installed without an issue again. Hope this helps someone else!

@ASaputra2019 open the file node_modules/react-native/scripts/ios-configure-glog.sh in Sublime Text editor, change the line endings with View > Line Endings > Mac OS 9, save and try pod install, it works. Note: It doesn’t works when you change to Unix line endings so must to Mac OS 9 in sublime text or some equivalent mac line ending from other tools.