#! /bin/sh # This script takes the result of "make dist" and: # 1) Unpacks it. # 2) Ensures all contents are user-writable. Some version control systems # keep code read-only until you explicitly ask to edit it, and the normal # "make dist" process does not correct for this, so the result is that # the entire dist is still marked read-only when unpacked, which is # annoying. So, we fix it. # 3) Convert MSVC project files to MSVC 2005, so that anyone who has version # 2005 *or* 2008 can open them. (In version control, we keep things in # MSVC 2008 format since that's what we use in development.) # 4) Uses the result to create .tar.gz, .tar.bz2, and .zip versions and # deposits them in the "dist" directory. In the .zip version, all # non-testdata .txt files are converted to Windows-style line endings. # 5) Cleans up after itself. if [ "$1" == "" ]; then echo "USAGE: $0 DISTFILE" >&2 exit 1 fi if [ ! -e $1 ]; then echo $1": File not found." >&2 exit 1 fi set -ex LANGUAGES="cpp csharp java objectivec python ruby php all" BASENAME=`basename $1 .tar.gz` VERSION=${BASENAME:9} # Create a directory called "dist", copy the tarball there and unpack it. mkdir dist cp $1 dist cd dist tar zxvf $BASENAME.tar.gz rm $BASENAME.tar.gz # Set the entire contents to be user-writable. chmod -R u+w $BASENAME cd $BASENAME for LANG in $LANGUAGES; do # Build the dist again in .tar.gz ./configure DIST_LANG=$LANG make dist-gzip mv $BASENAME.tar.gz ../protobuf-$LANG-$VERSION.tar.gz done # Convert all text files to use DOS-style line endings, then build a .zip # distribution. todos *.txt */*.txt for LANG in $LANGUAGES; do # Build the dist again in .zip ./configure DIST_LANG=$LANG make dist-zip mv $BASENAME.zip ../protobuf-$LANG-$VERSION.zip done cd .. rm -rf $BASENAME