1a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner#!/bin/sh 2a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# 3a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# A small script used to update the content of libcxx/ to a newer 4a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# version of libc++. 5a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# 6a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 7a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerPROGDIR=$(dirname "$0") 8a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerPROGNAME=$(basename "$0") 9a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 10a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# Assume this script is under tools/ 11a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerNDK_LIBCXX_DIR=$(cd "$PROGDIR"/.. && pwd) 12a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 13a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# Sanitize environment. 14a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerset -e 15a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerexport LANG=C 16a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerexport LC_ALL=C 17a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 18a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# Helper functions 19a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerVERBOSE=1 20a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 21a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun () { 22a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if [ "$VERBOSE" -gt 1 ]; then 23a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "COMMAND: $@" 24a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fi 25a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner case $VERBOSE in 26a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 0|1) 27a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner "$@" >/dev/null 2>&1 28a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ;; 29a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 2) 30a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner "$@" >/dev/null 31a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ;; 32a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner *) 33a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner "$@" 34a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ;; 35a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner esac 36a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner} 37a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 38a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerlog () { 39a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if [ "$VERBOSE" -gt 1 ]; then 40a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner printf "%s\n" "$@" 41a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fi 42a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner} 43a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 44a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerget_config_field () { 45a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner cat "$NDK_LIBCXX_DIR"/upstream.config | awk '$1 == "'$1':" { print $2; }' 46a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner} 47a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 48a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# Process command line. 49a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 50a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerDO_HELP= 51a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerNO_CLEANUP= 52a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 53a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfor opt; do 54a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner case $opt in 55a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner --verbose) 56a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner VERBOSE=$(( $VERBOSE + 1 )) 57a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ;; 58a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner --help) 59a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner DO_HELP=true 60a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ;; 61a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner --no-cleanup) 62a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner NO_CLEANUP=true 63a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ;; 64a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner -*) 65a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "ERROR: Unknown option '$opt'. See --help." 66a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner exit 1 67a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ;; 68a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner esac 69a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerdone 70a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 71a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerif [ "$DO_HELP" ]; then 72a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "Usage: $PROGNAME [options]" 73a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "" 74a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "This script is used to update the LLVM libc++ sources to a" 75a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "more recent version." 76a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "" 77a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "Valid options:" 78a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo " --help Print this message." 79a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo " --verbose Increase verbosity." 80a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo " --no-cleanup Don't remove build directory on exit." 81a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "" 82a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner exit 0 83a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfi 84a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 85a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# Create build directory. 86a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerBUILD_DIR=/tmp/ndk-$USER/llvm-libc++/build 87a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnermkdir -p "$BUILD_DIR" && rm -rf "$BUILD_DIR"/* 88a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 89a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# Ensure it is cleared when this script exits. 90a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun_on_exit () { 91a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if [ -z "$NO_CLEANUP" ]; then 92a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner # Remove temporary build directory. 93a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner rm -rf "$BUILD_DIR" 94a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fi 95a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner} 96a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnertrap "run_on_exit \$?" EXIT QUIT HUP TERM INT 97a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 98a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner# Get upstream SVN and revision number. 99a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerSVN_URL=$(get_config_field svn) 100a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerif [ -z "$SVN_URL" ]; then 101a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "ERROR: Can't find SVN upstream in upstream.config!" 102a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner exit 1 103a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfi 104a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 105a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerREVISION=$(get_config_field revision) 106a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerif [ -z "$REVISION" ]; then 107a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "ERROR: Can't find upstream revision in upstream.config!" 108a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner exit 1 109a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfi 110a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 111a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun cd $BUILD_DIR && 112a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Checking out $SVN_URL@$REVISION" 113a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun svn co $SVN_URL@$REVISION libcxx > /dev/null 114a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun cd libcxx 115a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 116a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Creating git repository and 'master' branch." 117a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git init 118a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho \ 119a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner".gitignore 120a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner.svn/ 121a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner" > .gitignore 122a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 123a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git add . 124a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git add -f .gitignore 125a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git commit -m "upstream @$REVISION" 126a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 127a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Create 'ndk' branch and apply patches.android/*" 128a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git branch ndk master 129a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git checkout ndk 130ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turnerif [ -d "$NDK_LIBCXX_DIR/patches.android" ]; then 131a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ( 132a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner set +e; 133a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner run git am "$NDK_LIBCXX_DIR"/patches.android/* 134a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if [ "$?" != 0 ]; then 135a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "A problem occured while applying the patches!!" 136a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner exit 1 137a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fi 138a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ) 139a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfi 140a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 141a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Updating to newer upstream revision" 142a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git checkout master 143a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git tag revision-$REVISION HEAD 144a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 145a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun svn update 146a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerNEW_REVISION=$(svn info | awk '$1 == "Revision:" { print $2; }') 147a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Found new revision: $NEW_REVISION (was $REVISION)" 148a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 149a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerADDED_FILES=$(git ls-files -o --exclude-standard) 150a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerMODIFIED_FILES=$(git ls-files -m) 151a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerREMOVED_FILES=$(git ls-files -d) 152a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerlog "ADDED_FILES='$ADDED_FILES'" 153a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerlog "MODIFIED_FILES='$MODIFIED_FILES'" 154a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerlog "REMOVED_FILES='$REMOVED_FILES'" 155a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerCHANGED= 156a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerif [ -n "$ADDED_FILES" ]; then 157a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner run git add $ADDED_FILES 158a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner CHANGED=true 159a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfi 160a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerif [ -n "$MODIFIED_FILES" ]; then 161a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner run git add $MODIFIED_FILES 162a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner CHANGED=true 163a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfi 164a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerif [ -n "$REMOVED_FILES" ]; then 165a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner run git rm -f $REMOVED_FILES 166a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner CHANGED=true 167a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfi 168a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 169a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerif [ -z "$CHANGED" ]; then 170a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "No changes detected. Exiting." 171a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner exit 0 172a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfi 173a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 174a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerADDED_COUNT=$(echo "$ADDED_FILES" | wc -l) 175a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerMODIFIED_COUNT=$(echo "$MODIFIED_FILES" | wc -l) 176a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' TurnerREMOVED_COUNT=$(echo "$REMOVED_FILES" | wc -l) 177a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Commiting changes ($ADDED_COUNT new, $MODIFIED_COUNT changed, $REMOVED_COUNT deleted)" 178a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git commit -m "upstream @$NEW_REVISION" 179a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git tag revision-$NEW_REVISION 180a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 181a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Updating NDK branch." 182a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git checkout ndk 183a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git tag android-0 HEAD 184a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git rebase revision-$NEW_REVISION 185a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 186a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Re-creating new Android patches." 187a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git format-patch -k -o "$BUILD_DIR"/patches.android revision-$NEW_REVISION 188a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git format-patch -k -o "$BUILD_DIR"/patches.libcxx android-0 189a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 190a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Updating local sources" 191a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun cd "$NDK_LIBCXX_DIR"/libcxx 192a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerfor PATCH in "$BUILD_DIR"/patches.libcxx/*.patch; do 193a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ( 194a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner set +e 195a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner run patch -p1 < "$PATCH" 196a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner if [ $? != 0 ]; then 197a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner echo "ERROR: Can't apply $PATCH properly!" 198a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner exit 1 199a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner fi 200a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner ) 201a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerdone 202a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 203a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Updating local patches" 204a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun cd "$NDK_LIBCXX_DIR" 205a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git rm -f patches.android/* 206a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun cp "$BUILD_DIR"/patches.android/* patches.android/ 207a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerrun git add patches.android/* 208a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 209a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Updating upstream.config" 210a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnersed -i -e "s|revision: $REVISION|revision: $NEW_REVISION|" "$NDK_LIBCXX_DIR"/upstream.config 211a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnergit add "$NDK_LIBCXX_DIR"/upstream.config 212a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turner 213a8bf9de8057ad254cc642f33bd7d0a48dc1ae55cDavid 'Digit' Turnerecho "Done updating to $NEW_REVISION." 214