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