get-deps.sh revision 309512
1118611Snjl#!/bin/sh
2118611Snjl#
3118611Snjl#
4118611Snjl# Licensed to the Apache Software Foundation (ASF) under one
5118611Snjl# or more contributor license agreements.  See the NOTICE file
6118611Snjl# distributed with this work for additional information
7316303Sjkim# regarding copyright ownership.  The ASF licenses this file
8316303Sjkim# to you under the Apache License, Version 2.0 (the
9316303Sjkim# "License"); you may not use this file except in compliance
10316303Sjkim# with the License.  You may obtain a copy of the License at
11316303Sjkim#
12118611Snjl#   http://www.apache.org/licenses/LICENSE-2.0
13118611Snjl#
14316303Sjkim# Unless required by applicable law or agreed to in writing,
15316303Sjkim# software distributed under the License is distributed on an
16316303Sjkim# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17316303Sjkim# KIND, either express or implied.  See the License for the
18316303Sjkim# specific language governing permissions and limitations
19316303Sjkim# under the License.
20316303Sjkim#
21316303Sjkim#
22316303Sjkim#
23316303Sjkim# get-deps.sh -- download the dependencies useful for building Subversion
24316303Sjkim#
25316303Sjkim
26316303Sjkim# If changing this file please take care to try to make your changes as
27316303Sjkim# portable as possible.  That means at a minimum only use POSIX supported
28316303Sjkim# features and functions.  However, it may be desirable to use an even
29316303Sjkim# more narrow set of features than POSIX, e.g. Solaris /bin/sh only has
30316303Sjkim# a subset of the POSIX shell features.  If in doubt, limit yourself to
31316303Sjkim# features already used in the file.  Reviewing the history of changes
32316303Sjkim# may be useful as well.
33316303Sjkim
34316303SjkimAPR_VERSION=${APR_VERSION:-"1.4.6"}
35316303SjkimAPU_VERSION=${APU_VERSION:-"1.5.1"}
36316303SjkimSERF_VERSION=${SERF_VERSION:-"1.3.8"}
37316303SjkimZLIB_VERSION=${ZLIB_VERSION:-"1.2.8"}
38316303SjkimSQLITE_VERSION=${SQLITE_VERSION:-"3.7.15.1"}
39316303SjkimGMOCK_VERSION=${GMOCK_VERSION:-"1.6.0"}
40316303SjkimHTTPD_VERSION=${HTTPD_VERSION:-"2.4.10"}
41316303SjkimAPR_ICONV_VERSION=${APR_ICONV_VERSION:-"1.2.1"}
42316303Sjkim
43316303SjkimAPR=apr-${APR_VERSION}
44316303SjkimAPR_UTIL=apr-util-${APU_VERSION}
45316303SjkimSERF=serf-${SERF_VERSION}
46316303SjkimZLIB=zlib-${ZLIB_VERSION}
47316303SjkimSQLITE_VERSION_LIST=`echo $SQLITE_VERSION | sed -e 's/\./ /g'`
48316303SjkimSQLITE=sqlite-amalgamation-`printf %d%02d%02d%02d $SQLITE_VERSION_LIST`
49316303SjkimGMOCK=gmock-${GMOCK_VERSION}
50316303SjkimGMOCK_URL=https://googlemock.googlecode.com/files/
51316303Sjkim
52316303SjkimHTTPD=httpd-${HTTPD_VERSION}
53316303SjkimAPR_ICONV=apr-iconv-${APR_ICONV_VERSION}
54316303Sjkim
55316303SjkimBASEDIR=`pwd`
56316303SjkimTEMPDIR=$BASEDIR/temp
57316303Sjkim
58316303SjkimHTTP_FETCH=
59316303Sjkim[ -z "$HTTP_FETCH" ] && type wget  >/dev/null 2>&1 && HTTP_FETCH="wget -q -nc"
60316303Sjkim[ -z "$HTTP_FETCH" ] && type curl  >/dev/null 2>&1 && HTTP_FETCH="curl -sOL"
61316303Sjkim[ -z "$HTTP_FETCH" ] && type fetch >/dev/null 2>&1 && HTTP_FETCH="fetch -q"
62316303Sjkim
63316303Sjkim# Need this uncommented if any of the specific versions of the ASF tarballs to
64316303Sjkim# be downloaded are no longer available on the general mirrors.
65316303SjkimAPACHE_MIRROR=http://archive.apache.org/dist
66316303Sjkim
67316303Sjkim# helpers
68316303Sjkimusage() {
69316303Sjkim    echo "Usage: $0"
70316303Sjkim    echo "Usage: $0 [ apr | serf | zlib | sqlite | gmock ] ..."
71316303Sjkim    exit $1
72316303Sjkim}
73316303Sjkim
74316303Sjkim# getters
75316303Sjkimget_apr() {
76316303Sjkim    cd $TEMPDIR
77316303Sjkim    test -d $BASEDIR/apr      || $HTTP_FETCH $APACHE_MIRROR/apr/$APR.tar.bz2
78316303Sjkim    test -d $BASEDIR/apr-util || $HTTP_FETCH $APACHE_MIRROR/apr/$APR_UTIL.tar.bz2
79316303Sjkim    cd $BASEDIR
80316303Sjkim
81316303Sjkim    test -d $BASEDIR/apr      || bzip2 -dc $TEMPDIR/$APR.tar.bz2 | tar -xf -
82316303Sjkim    test -d $BASEDIR/apr-util || bzip2 -dc $TEMPDIR/$APR_UTIL.tar.bz2 | tar -xf -
83316303Sjkim
84316303Sjkim    test -d $BASEDIR/apr      || mv $APR apr
85316303Sjkim    test -d $BASEDIR/apr-util || mv $APR_UTIL apr-util
86316303Sjkim}
87316303Sjkim
88316303Sjkimget_serf() {
89316303Sjkim    test -d $BASEDIR/serf && return
90316303Sjkim
91316303Sjkim    cd $TEMPDIR
92316303Sjkim    $HTTP_FETCH https://archive.apache.org/dist/serf/$SERF.tar.bz2
93316303Sjkim    cd $BASEDIR
94316303Sjkim
95316303Sjkim    bzip2 -dc $TEMPDIR/$SERF.tar.bz2 | tar -xf -
96316303Sjkim
97316303Sjkim    mv $SERF serf
98316303Sjkim}
99316303Sjkim
100316303Sjkimget_zlib() {
101316303Sjkim    test -d $BASEDIR/zlib && return
102316303Sjkim
103316303Sjkim    cd $TEMPDIR
104316303Sjkim    $HTTP_FETCH http://sourceforge.net/projects/libpng/files/zlib/$ZLIB_VERSION/$ZLIB.tar.gz
105316303Sjkim    cd $BASEDIR
106316303Sjkim
107316303Sjkim    gzip -dc $TEMPDIR/$ZLIB.tar.gz | tar -xf -
108316303Sjkim
109316303Sjkim    mv $ZLIB zlib
110316303Sjkim}
111316303Sjkim
112316303Sjkimget_sqlite() {
113316303Sjkim    test -d $BASEDIR/sqlite-amalgamation && return
114316303Sjkim
115316303Sjkim    cd $TEMPDIR
116316303Sjkim    $HTTP_FETCH http://www.sqlite.org/$SQLITE.zip
117316303Sjkim    cd $BASEDIR
118316303Sjkim
119217365Sjkim    unzip -q $TEMPDIR/$SQLITE.zip
120217365Sjkim
121217365Sjkim    mv $SQLITE sqlite-amalgamation
122217365Sjkim
123217365Sjkim}
124217365Sjkim
125217365Sjkimget_gmock() {
126217365Sjkim    test -d $BASEDIR/gmock-fused && return
127217365Sjkim
128217365Sjkim    cd $TEMPDIR
129217365Sjkim    $HTTP_FETCH ${GMOCK_URL}/${GMOCK}.zip
130217365Sjkim    cd $BASEDIR
131217365Sjkim
132217365Sjkim    unzip -q $TEMPDIR/$GMOCK.zip
133118611Snjl
134316303Sjkim    mv $GMOCK/fused-src gmock-fused
135316303Sjkim    rm -fr $GMOCK
136316303Sjkim}
137316303Sjkim
138316303Sjkim# main()
139316303Sjkimget_deps() {
140316303Sjkim    mkdir -p $TEMPDIR
141316303Sjkim
142316303Sjkim    for i in zlib serf sqlite-amalgamation apr apr-util gmock-fused; do
143316303Sjkim      if [ -d $i ]; then
144316303Sjkim        echo "Local directory '$i' already exists; the downloaded copy won't be used" >&2
145316303Sjkim      fi
146316303Sjkim    done
147217365Sjkim
148217365Sjkim    if [ $# -gt 0 ]; then
149118611Snjl      for target in "$@"; do
150316303Sjkim        if [ "$target" != "deps" ]; then
151118611Snjl          get_$target || usage
152151937Sjkim        else
153118611Snjl          usage
154193529Sjkim        fi
155118611Snjl      done
156193529Sjkim    else
157193529Sjkim      get_apr
158118611Snjl      get_serf
159118611Snjl      get_zlib
160118611Snjl      get_sqlite
161118611Snjl
162151937Sjkim      echo
163118611Snjl      echo "If you require mod_dav_svn, the recommended version of httpd is:"
164151937Sjkim      echo "   $APACHE_MIRROR/httpd/$HTTPD.tar.bz2"
165151937Sjkim
166151937Sjkim      echo
167151937Sjkim      echo "If you require apr-iconv, its recommended version is:"
168151937Sjkim      echo "   $APACHE_MIRROR/apr/$APR_ICONV.tar.bz2"
169151937Sjkim    fi
170151937Sjkim
171151937Sjkim    rm -rf $TEMPDIR
172151937Sjkim}
173151937Sjkim
174151937Sjkimget_deps "$@"
175151937Sjkim