1251881Speter#!/bin/sh
2251881Speter#
3251881Speter#
4251881Speter# Licensed to the Apache Software Foundation (ASF) under one
5251881Speter# or more contributor license agreements.  See the NOTICE file
6251881Speter# distributed with this work for additional information
7251881Speter# regarding copyright ownership.  The ASF licenses this file
8251881Speter# to you under the Apache License, Version 2.0 (the
9251881Speter# "License"); you may not use this file except in compliance
10251881Speter# with the License.  You may obtain a copy of the License at
11251881Speter#
12251881Speter#   http://www.apache.org/licenses/LICENSE-2.0
13251881Speter#
14251881Speter# Unless required by applicable law or agreed to in writing,
15251881Speter# software distributed under the License is distributed on an
16251881Speter# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17251881Speter# KIND, either express or implied.  See the License for the
18251881Speter# specific language governing permissions and limitations
19251881Speter# under the License.
20251881Speter#
21251881Speter#
22251881Speter#
23251881Speter# get-deps.sh -- download the dependencies useful for building Subversion
24251881Speter#
25251881Speter
26251881Speter# If changing this file please take care to try to make your changes as
27251881Speter# portable as possible.  That means at a minimum only use POSIX supported
28251881Speter# features and functions.  However, it may be desirable to use an even
29251881Speter# more narrow set of features than POSIX, e.g. Solaris /bin/sh only has
30251881Speter# a subset of the POSIX shell features.  If in doubt, limit yourself to
31251881Speter# features already used in the file.  Reviewing the history of changes
32251881Speter# may be useful as well.
33251881Speter
34362181SdimAPR_VERSION=${APR_VERSION:-"1.5.0"}
35251881SpeterAPU_VERSION=${APU_VERSION:-"1.5.1"}
36362181SdimPY3C_VERSION=${PY3C_VERSION:='1.1'}
37286506SpeterSERF_VERSION=${SERF_VERSION:-"1.3.8"}
38251881SpeterZLIB_VERSION=${ZLIB_VERSION:-"1.2.8"}
39362181SdimSQLITE_VERSION=${SQLITE_VERSION:-"3.8.11.1"}
40362181Sdim# Used to construct the SQLite download URL.
41362181SdimSQLITE_VERSION_REL_YEAR=2015
42269833SpeterHTTPD_VERSION=${HTTPD_VERSION:-"2.4.10"}
43251881SpeterAPR_ICONV_VERSION=${APR_ICONV_VERSION:-"1.2.1"}
44251881Speter
45251881SpeterAPR=apr-${APR_VERSION}
46251881SpeterAPR_UTIL=apr-util-${APU_VERSION}
47362181SdimPY3C=py3c-${PY3C_VERSION}
48251881SpeterSERF=serf-${SERF_VERSION}
49251881SpeterZLIB=zlib-${ZLIB_VERSION}
50251881SpeterSQLITE_VERSION_LIST=`echo $SQLITE_VERSION | sed -e 's/\./ /g'`
51251881SpeterSQLITE=sqlite-amalgamation-`printf %d%02d%02d%02d $SQLITE_VERSION_LIST`
52251881Speter
53251881SpeterHTTPD=httpd-${HTTPD_VERSION}
54251881SpeterAPR_ICONV=apr-iconv-${APR_ICONV_VERSION}
55251881Speter
56251881SpeterBASEDIR=`pwd`
57251881SpeterTEMPDIR=$BASEDIR/temp
58251881Speter
59251881SpeterHTTP_FETCH=
60251881Speter[ -z "$HTTP_FETCH" ] && type wget  >/dev/null 2>&1 && HTTP_FETCH="wget -q -nc"
61269833Speter[ -z "$HTTP_FETCH" ] && type curl  >/dev/null 2>&1 && HTTP_FETCH="curl -sOL"
62251881Speter[ -z "$HTTP_FETCH" ] && type fetch >/dev/null 2>&1 && HTTP_FETCH="fetch -q"
63251881Speter
64251881Speter# Need this uncommented if any of the specific versions of the ASF tarballs to
65251881Speter# be downloaded are no longer available on the general mirrors.
66362181SdimAPACHE_MIRROR=https://archive.apache.org/dist
67251881Speter
68251881Speter# helpers
69251881Speterusage() {
70251881Speter    echo "Usage: $0"
71362181Sdim    echo "Usage: $0 [ apr | py3c | serf | zlib | sqlite ] ..."
72251881Speter    exit $1
73251881Speter}
74251881Speter
75251881Speter# getters
76251881Speterget_apr() {
77251881Speter    cd $TEMPDIR
78251881Speter    test -d $BASEDIR/apr      || $HTTP_FETCH $APACHE_MIRROR/apr/$APR.tar.bz2
79251881Speter    test -d $BASEDIR/apr-util || $HTTP_FETCH $APACHE_MIRROR/apr/$APR_UTIL.tar.bz2
80251881Speter    cd $BASEDIR
81251881Speter
82251881Speter    test -d $BASEDIR/apr      || bzip2 -dc $TEMPDIR/$APR.tar.bz2 | tar -xf -
83251881Speter    test -d $BASEDIR/apr-util || bzip2 -dc $TEMPDIR/$APR_UTIL.tar.bz2 | tar -xf -
84251881Speter
85251881Speter    test -d $BASEDIR/apr      || mv $APR apr
86251881Speter    test -d $BASEDIR/apr-util || mv $APR_UTIL apr-util
87251881Speter}
88251881Speter
89362181Sdimget_py3c() {
90362181Sdim    test -d $BASEDIR/py3c && return
91362181Sdim    py3cdist=v${PY3C_VERSION}.tar.gz
92362181Sdim
93362181Sdim    cd $TEMPDIR
94362181Sdim    $HTTP_FETCH https://github.com/encukou/py3c/archive/${py3cdist}
95362181Sdim    cd $BASEDIR
96362181Sdim
97362181Sdim    gzip -dc $TEMPDIR/${py3cdist} | tar -xf -
98362181Sdim
99362181Sdim    mv $PY3C py3c
100362181Sdim}
101362181Sdim
102251881Speterget_serf() {
103251881Speter    test -d $BASEDIR/serf && return
104251881Speter
105251881Speter    cd $TEMPDIR
106309511Speter    $HTTP_FETCH https://archive.apache.org/dist/serf/$SERF.tar.bz2
107251881Speter    cd $BASEDIR
108251881Speter
109251881Speter    bzip2 -dc $TEMPDIR/$SERF.tar.bz2 | tar -xf -
110251881Speter
111251881Speter    mv $SERF serf
112251881Speter}
113251881Speter
114251881Speterget_zlib() {
115251881Speter    test -d $BASEDIR/zlib && return
116251881Speter
117251881Speter    cd $TEMPDIR
118362181Sdim    $HTTP_FETCH https://sourceforge.net/projects/libpng/files/zlib/$ZLIB_VERSION/$ZLIB.tar.gz
119251881Speter    cd $BASEDIR
120251881Speter
121251881Speter    gzip -dc $TEMPDIR/$ZLIB.tar.gz | tar -xf -
122251881Speter
123251881Speter    mv $ZLIB zlib
124251881Speter}
125251881Speter
126251881Speterget_sqlite() {
127251881Speter    test -d $BASEDIR/sqlite-amalgamation && return
128251881Speter
129251881Speter    cd $TEMPDIR
130362181Sdim    $HTTP_FETCH https://www.sqlite.org/$SQLITE_VERSION_REL_YEAR/$SQLITE.zip
131251881Speter    cd $BASEDIR
132251881Speter
133251881Speter    unzip -q $TEMPDIR/$SQLITE.zip
134251881Speter
135251881Speter    mv $SQLITE sqlite-amalgamation
136251881Speter
137251881Speter}
138251881Speter
139251881Speter# main()
140251881Speterget_deps() {
141251881Speter    mkdir -p $TEMPDIR
142251881Speter
143362181Sdim    for i in zlib serf sqlite-amalgamation py3c apr apr-util; do
144251881Speter      if [ -d $i ]; then
145251881Speter        echo "Local directory '$i' already exists; the downloaded copy won't be used" >&2
146251881Speter      fi
147251881Speter    done
148251881Speter
149251881Speter    if [ $# -gt 0 ]; then
150251881Speter      for target in "$@"; do
151251881Speter        if [ "$target" != "deps" ]; then
152251881Speter          get_$target || usage
153251881Speter        else
154251881Speter          usage
155251881Speter        fi
156251881Speter      done
157251881Speter    else
158251881Speter      get_apr
159362181Sdim      get_py3c
160251881Speter      get_serf
161251881Speter      get_zlib
162251881Speter      get_sqlite
163251881Speter
164251881Speter      echo
165251881Speter      echo "If you require mod_dav_svn, the recommended version of httpd is:"
166251881Speter      echo "   $APACHE_MIRROR/httpd/$HTTPD.tar.bz2"
167251881Speter
168251881Speter      echo
169251881Speter      echo "If you require apr-iconv, its recommended version is:"
170251881Speter      echo "   $APACHE_MIRROR/apr/$APR_ICONV.tar.bz2"
171251881Speter    fi
172251881Speter
173251881Speter    rm -rf $TEMPDIR
174251881Speter}
175251881Speter
176251881Speterget_deps "$@"
177