| Index: third_party/JSON/get_and_build_json_pm.sh
|
| diff --git a/third_party/JSON/get_and_build_json_pm.sh b/third_party/JSON/get_and_build_json_pm.sh
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..9f86967fb791fbef96984c65a32e4df7db9be815
|
| --- /dev/null
|
| +++ b/third_party/JSON/get_and_build_json_pm.sh
|
| @@ -0,0 +1,80 @@
|
| +#!/bin/bash
|
| +# Download and build JSON.pm
|
| +# Homepage:
|
| +# http://search.cpan.org/~makamaka/JSON-2.58/lib/JSON.pm
|
| +# SRC_URL='http://www.cpan.org/authors/id/M/MA/MAKAMAKA/JSON-2.58.tar.gz'
|
| +PACKAGE='JSON'
|
| +VERSION='2.59'
|
| +SRC_URL="http://www.cpan.org/authors/id/M/MA/MAKAMAKA/$PACKAGE-$VERSION.tar.gz"
|
| +FILENAME="$(basename $SRC_URL)"
|
| +SHA1_FILENAME="$FILENAME.sha1"
|
| +BUILD_DIR="$PACKAGE-$VERSION"
|
| +INSTALL_DIR="$(pwd)/out"
|
| +
|
| +curl --remote-name "$SRC_URL"
|
| +
|
| +# Check hash
|
| +# SHA-1 hash generated via:
|
| +# shasum JSON-2.59.tar.gz > JSON-2.59.tar.gz.sha1
|
| +if ! [ -f "$SHA1_FILENAME" ]
|
| +then
|
| + echo "SHA-1 hash file $SHA1_FILENAME not found, could not verify archive"
|
| + exit 1
|
| +fi
|
| +
|
| +# Check that hash file contains hash for archive
|
| +HASHFILE_REGEX="^[0-9a-f]{40} $FILENAME" # 40-digit hash, followed by filename
|
| +if ! grep --extended-regex --line-regex --silent \
|
| + "$HASHFILE_REGEX" "$SHA1_FILENAME"
|
| +then
|
| + echo "SHA-1 hash file $SHA1_FILENAME does not contain hash for $FILENAME," \
|
| + 'could not verify archive'
|
| + echo 'Hash file contents are:'
|
| + cat "$SHA1_FILENAME"
|
| + exit 1
|
| +fi
|
| +
|
| +if ! shasum --check "$SHA1_FILENAME"
|
| +then
|
| + echo 'SHA-1 hash does not match,' \
|
| + "archive file $FILENAME corrupt or compromised!"
|
| + exit 1
|
| +fi
|
| +
|
| +# Extract and build
|
| +tar xvzf "$FILENAME"
|
| +cd "$BUILD_DIR"
|
| +perl Makefile.PL INSTALL_BASE="$INSTALL_DIR"
|
| +make
|
| +make test
|
| +make install
|
| +cd ..
|
| +rm "$FILENAME"
|
| +
|
| +# Rename :: to __ because : is reserved in Windows filenames
|
| +# (only occurs in man pages, which aren't necessary)
|
| +for i in $(find . -name '*::*')
|
| +do
|
| + mv -f "$i" `echo "$i" | sed s/::/__/g`
|
| +done
|
| +
|
| +# Fix permissions and shebangs
|
| +# https://rt.cpan.org/Public/Bug/Display.html?id=85917
|
| +# Make examples executable
|
| +cd "$BUILD_DIR"
|
| +chmod +x eg/*.pl
|
| +cd t
|
| +
|
| +# Strip shebangs from test files that have them
|
| +for i in *.t
|
| +do
|
| + if head -1 "$i" | grep --quiet '^#!'
|
| + then
|
| + ed -s "$i" <<END
|
| +# Delete line 1
|
| +1d
|
| +# Write and Quit
|
| +wq
|
| +END
|
| + fi
|
| +done
|
|
|