diff options
Diffstat (limited to 'mfbt/double-conversion/update.sh')
-rwxr-xr-x | mfbt/double-conversion/update.sh | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/mfbt/double-conversion/update.sh b/mfbt/double-conversion/update.sh new file mode 100755 index 0000000000..c6f1761de6 --- /dev/null +++ b/mfbt/double-conversion/update.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +# Usage: ./update.sh [<git-rev-to-use>] +# +# Copies the needed files from a directory containing the original +# double-conversion source that we need. If no revision is specified, the tip +# revision is used. See GIT-INFO for the last revision used. + +set -e + +LOCAL_PATCHES="" + +LOCAL_PATCHES="$LOCAL_PATCHES add-mfbt-api-markers.patch" +LOCAL_PATCHES="$LOCAL_PATCHES use-mozilla-assertions.patch" +LOCAL_PATCHES="$LOCAL_PATCHES ToPrecision-exponential.patch" +LOCAL_PATCHES="$LOCAL_PATCHES debug-only-functions.patch" + +TMPDIR=`mktemp --directory` +LOCAL_CLONE="$TMPDIR/new-double-conversion" + +git clone https://github.com/google/double-conversion.git "$LOCAL_CLONE" + +# If a particular revision was requested, check it out. +if [ "$1" != "" ]; then + git -C "$LOCAL_CLONE" checkout "$1" +fi + +# First clear out everything already present. +DEST=./double-conversion +mv "$DEST" "$TMPDIR"/old-double-conversion +mkdir "$DEST" + +# Copy over critical files. +cp "$LOCAL_CLONE/LICENSE" "$DEST/" +cp "$LOCAL_CLONE/README.md" "$DEST/" + +# Includes +for header in "$LOCAL_CLONE/double-conversion/"*.h; do + cp "$header" "$DEST/" +done + +# Source +for ccfile in "$LOCAL_CLONE/double-conversion/"*.cc; do + cp "$ccfile" "$DEST/" +done + +# Now apply our local patches. +for patch in $LOCAL_PATCHES; do + patch --directory "$DEST" --strip 4 < "$patch" + + # Out-of-date patches may spew *.{orig,rej} when applied. Report an error if + # any such file is found, and roll the source directory back to its previous + # state in such case. + detritus_files=`find "$DEST" -name '*.orig' -o -name '*.rej'` + if [ "$detritus_files" != "" ]; then + echo "ERROR: Local patch $patch created these detritus files when applied:" + echo "" + echo " $detritus_files" + echo "" + echo "Please fix $patch before running $0." + + rm -rf "$DEST" + mv "$TMPDIR"/source "$DEST" + + exit 1 + fi +done + +# Update Mercurial file status. +hg addremove "$DEST" + +# Note the revision used in this update. +git -C "$LOCAL_CLONE" show > ./GIT-INFO + +# Delete the tmpdir. +rm -rf "$TMPDIR" |