blob: bcd761903e1b10a7ab4f57f16b1bf11725363465 [file] [log] [blame]
#!/bin/sh -e
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
# next steps:
# try running this, figure out what to do with the vars in the generated files
# in the bottom
# cd into this script’s directory
rootdir="$(cd "${0%/*}" 2>/dev/null; echo "$PWD")"
basename=`basename $0`
PACKAGE_AUTHOR_NAME="The Apache Software Foundation"
# TEST=0
WITH_CURL="false"
WITH_PROPER="true"
WITH_FAUXTON=1
WITH_DOCS=1
ERLANG_MD5="false"
SKIP_DEPS=0
COUCHDB_USER="$(whoami 2>/dev/null || echo couchdb)"
. ${rootdir}/version.mk
COUCHDB_VERSION=${vsn_major}.${vsn_minor}.${vsn_patch}
display_help () {
cat << EOF
Usage: $basename [OPTION]
The $basename command is responsible for generating the build
system for Apache CouchDB.
Options:
-h | --help display a short help message and exit
-u | --user USER set the username to run as (defaults to $COUCHDB_USER)
-c | --with-curl request that couchjs is linked to cURL (default false)
--disable-fauxton do not build Fauxton
--disable-docs do not build any documentation or manpages
--erlang-md5 use erlang for md5 hash operations
--dev alias for --with-curl --disable-docs --disable-fauxton
--skip-deps do not update erlang dependencies
--rebar=PATH use rebar by specified path (version >=2.6.0 && <3.0 required)
EOF
}
parse_opts() {
while :; do
case $1 in
-h|--help)
display_help
exit
;;
--with-curl|-c)
WITH_CURL="true"
shift
continue
;;
--without-proper)
WITH_PROPER="false"
shift
continue
;;
--disable-fauxton)
WITH_FAUXTON=0
shift
continue
;;
--disable-docs)
WITH_DOCS=0
shift
continue
;;
--erlang-md5)
ERLANG_MD5="true"
shift
continue
;;
--dev)
WITH_DOCS=0
WITH_FAUXTON=0
WITH_CURL="true"
shift
continue
;;
--skip-deps)
SKIP_DEPS=1
shift
continue
;;
--rebar)
if [ -x "$2" ]; then
version=`$2 --version 2> /dev/null | grep -o "2\.[6-9]\.[0-9]"`
if [ $? -ne 0 ]; then
printf 'Rebar >=2.6.0 and <3.0.0 required' >&2
exit 1
fi
eval REBAR=$2
shift 2
continue
else
printf 'ERROR: "--rebar" requires valid path to executable.\n' >&2
exit 1
fi
;;
--user|-u)
if [ -n "$2" ]; then
eval COUCHDB_USER=$2
shift 2
continue
else
printf 'ERROR: "--user" requires a non-empty argument.\n' >&2
exit 1
fi
;;
--user=?*)
eval COUCHDB_USER=${1#*=}
;;
--user=)
printf 'ERROR: "--user" requires a non-empty argument.\n' >&2
exit 1
;;
--) # End of options
shift
break
;;
-?*)
echo "WARNING: Unknown option '$1', ignoring" >&2
shift
;;
*) # Done
break
esac
shift
done
}
parse_opts $@
echo "==> configuring couchdb in rel/couchdb.config"
cat > rel/couchdb.config << EOF
% Licensed under the Apache License, Version 2.0 (the "License"); you may not
% use this file except in compliance with the License. You may obtain a copy of
% the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
% License for the specific language governing permissions and limitations under
% the License.
%
% The contents of this file are auto-generated by configure
%
{package_author_name, "$PACKAGE_AUTHOR_NAME"}.
{prefix, "."}.
{data_dir, "./data"}.
{view_index_dir, "./data"}.
{log_file, "$LOG_FILE"}.
{fauxton_root, "./share/www"}.
{user, "$COUCHDB_USER"}.
{node_name, "-name couchdb@127.0.0.1"}.
{cluster_port, 5984}.
{backend_port, 5986}.
EOF
cat > install.mk << EOF
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
#
# The contents of this file are auto-generated by configure
#
package_author_name = $PACKAGE_AUTHOR_NAME
with_fauxton = $WITH_FAUXTON
with_docs = $WITH_DOCS
user = $COUCHDB_USER
EOF
cat > $rootdir/config.erl << EOF
{with_curl, $WITH_CURL}.
{with_proper, $WITH_PROPER}.
{erlang_md5, $ERLANG_MD5}.
EOF
install_local_rebar() {
if [ ! -x "${rootdir}/bin/rebar" ]; then
if [ ! -d "${rootdir}/src/rebar" ]; then
git clone --depth 1 https://github.com/apache/couchdb-rebar.git ${rootdir}/src/rebar
fi
make -C ${rootdir}/src/rebar
mv ${rootdir}/src/rebar/rebar ${rootdir}/bin/rebar
make -C ${rootdir}/src/rebar clean
fi
}
if [ -z "${REBAR}" ]; then
install_local_rebar
REBAR=${rootdir}/bin/rebar
fi
# only update dependencies, when we are not in a release tarball
if [ -d .git -a $SKIP_DEPS -ne 1 ]; then
echo "==> updating dependencies"
${REBAR} get-deps update-deps
fi
echo "You have configured Apache CouchDB, time to relax. Relax."