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