1b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#! /bin/sh 2b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 3b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# This script takes the result of "make dist" and: 4b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# 1) Unpacks it. 5b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# 2) Ensures all contents are user-writable. Some version control systems 6b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# keep code read-only until you explicitly ask to edit it, and the normal 7b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# "make dist" process does not correct for this, so the result is that 8b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# the entire dist is still marked read-only when unpacked, which is 9b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# annoying. So, we fix it. 10b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# 3) Convert MSVC project files to MSVC 2005, so that anyone who has version 11b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# 2005 *or* 2008 can open them. (In version control, we keep things in 12b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# MSVC 2008 format since that's what we use in development.) 13b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# 4) Uses the result to create .tar.gz, .tar.bz2, and .zip versions and 14b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# deposites them in the "dist" directory. In the .zip version, all 15b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# non-testdata .txt files are converted to Windows-style line endings. 16b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# 5) Cleans up after itself. 17b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 18b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerif [ "$1" == "" ]; then 19b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer echo "USAGE: $0 DISTFILE" >&2 20b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer exit 1 21b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerfi 22b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 23b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerif [ ! -e $1 ]; then 24b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer echo $1": File not found." >&2 25b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer exit 1 26b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerfi 27b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 28b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerset -ex 29b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 30b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerLANGUAGES="cpp csharp java javanano js objectivec python ruby" 31b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerBASENAME=`basename $1 .tar.gz` 32b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerVERSION=${BASENAME:9} 33b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 34b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# Create a directory called "dist", copy the tarball there and unpack it. 35b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammermkdir dist 36b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammercp $1 dist 37b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammercd dist 38b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammertar zxvf $BASENAME.tar.gz 39b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerrm $BASENAME.tar.gz 40b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 41b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# Set the entire contents to be user-writable. 42b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerchmod -R u+w $BASENAME 43b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammercd $BASENAME 44b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 45b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerfor LANG in $LANGUAGES; do 46b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer # Build the dist again in .tar.gz 47b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer ./configure DIST_LANG=$LANG 48b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer make dist-gzip 49b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer mv $BASENAME.tar.gz ../protobuf-$LANG-$VERSION.tar.gz 50b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerdone 51b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 52b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# Convert all text files to use DOS-style line endings, then build a .zip 53b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer# distribution. 54b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammertodos *.txt */*.txt 55b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 56b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerfor LANG in $LANGUAGES; do 57b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer # Build the dist again in .zip 58b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer ./configure DIST_LANG=$LANG 59b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer make dist-zip 60b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer mv $BASENAME.zip ../protobuf-$LANG-$VERSION.zip 61b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerdone 62b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer 63b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammercd .. 64b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammerrm -rf $BASENAME 65