| OLD | NEW |
| (Empty) |
| 1 #!/bin/bash | |
| 2 # Download and build JSON.pm | |
| 3 # Homepage: | |
| 4 # http://search.cpan.org/~makamaka/JSON-2.58/lib/JSON.pm | |
| 5 # SRC_URL='http://www.cpan.org/authors/id/M/MA/MAKAMAKA/JSON-2.58.tar.gz' | |
| 6 PACKAGE='JSON' | |
| 7 VERSION='2.59' | |
| 8 SRC_URL="http://www.cpan.org/authors/id/M/MA/MAKAMAKA/$PACKAGE-$VERSION.tar.gz" | |
| 9 FILENAME="$(basename $SRC_URL)" | |
| 10 SHA1_FILENAME="$FILENAME.sha1" | |
| 11 BUILD_DIR="$PACKAGE-$VERSION" | |
| 12 INSTALL_DIR="$(pwd)/out" | |
| 13 | |
| 14 curl --remote-name "$SRC_URL" | |
| 15 | |
| 16 # Check hash | |
| 17 # SHA-1 hash generated via: | |
| 18 # shasum JSON-2.59.tar.gz > JSON-2.59.tar.gz.sha1 | |
| 19 if ! [ -f "$SHA1_FILENAME" ] | |
| 20 then | |
| 21 echo "SHA-1 hash file $SHA1_FILENAME not found, could not verify archive" | |
| 22 exit 1 | |
| 23 fi | |
| 24 | |
| 25 # Check that hash file contains hash for archive | |
| 26 HASHFILE_REGEX="^[0-9a-f]{40} $FILENAME" # 40-digit hash, followed by filename | |
| 27 if ! grep --extended-regex --line-regex --silent \ | |
| 28 "$HASHFILE_REGEX" "$SHA1_FILENAME" | |
| 29 then | |
| 30 echo "SHA-1 hash file $SHA1_FILENAME does not contain hash for $FILENAME," \ | |
| 31 'could not verify archive' | |
| 32 echo 'Hash file contents are:' | |
| 33 cat "$SHA1_FILENAME" | |
| 34 exit 1 | |
| 35 fi | |
| 36 | |
| 37 if ! shasum --check "$SHA1_FILENAME" | |
| 38 then | |
| 39 echo 'SHA-1 hash does not match,' \ | |
| 40 "archive file $FILENAME corrupt or compromised!" | |
| 41 exit 1 | |
| 42 fi | |
| 43 | |
| 44 # Extract and build | |
| 45 tar xvzf "$FILENAME" | |
| 46 cd "$BUILD_DIR" | |
| 47 perl Makefile.PL INSTALL_BASE="$INSTALL_DIR" | |
| 48 make | |
| 49 make test | |
| 50 make install | |
| 51 cd .. | |
| 52 rm "$FILENAME" | |
| 53 | |
| 54 # Rename :: to __ because : is reserved in Windows filenames | |
| 55 # (only occurs in man pages, which aren't necessary) | |
| 56 for i in $(find . -name '*::*') | |
| 57 do | |
| 58 mv -f "$i" `echo "$i" | sed s/::/__/g` | |
| 59 done | |
| 60 | |
| 61 # Fix permissions and shebangs | |
| 62 # https://rt.cpan.org/Public/Bug/Display.html?id=85917 | |
| 63 # Make examples executable | |
| 64 cd "$BUILD_DIR" | |
| 65 chmod +x eg/*.pl | |
| 66 cd t | |
| 67 | |
| 68 # Strip shebangs from test files that have them | |
| 69 for i in *.t | |
| 70 do | |
| 71 if head -1 "$i" | grep --quiet '^#!' | |
| 72 then | |
| 73 ed -s "$i" <<END | |
| 74 # Delete line 1 | |
| 75 1d | |
| 76 # Write and Quit | |
| 77 wq | |
| 78 END | |
| 79 fi | |
| 80 done | |
| OLD | NEW |