| #!/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_FAUXTON=1 |
| WITH_DOCS=1 |
| 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 |
| --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 |
| ;; |
| |
| --disable-fauxton) |
| WITH_FAUXTON=0 |
| shift |
| continue |
| ;; |
| |
| --disable-docs) |
| WITH_DOCS=0 |
| 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}. |
| EOF |
| |
| install_local_rebar() { |
| if [ ! -x "${rootdir}/bin/rebar" ]; then |
| if [ ! -d "${rootdir}/src/rebar" ]; then |
| git clone --depth 1 --branch 2.6.0-couchdb 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." |