% 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. % Set the path to the configuration environment generated % by `./configure`. COUCHDB_ROOT = filename:dirname(SCRIPT). os:putenv("COUCHDB_ROOT", COUCHDB_ROOT). ConfigureEnv = filename:join(COUCHDB_ROOT, "config.erl"). os:putenv("COUCHDB_CONFIG", ConfigureEnv). os:putenv("COUCHDB_APPS_CONFIG_DIR", filename:join([COUCHDB_ROOT, "rel/apps"])). SubDirs = [ %% must be compiled first as it has a custom behavior "src/couch_epi", "src/couch_log", "src/chttpd", "src/couch", "src/couch_index", "src/couch_mrview", "src/couch_replicator", "src/couch_plugins", "src/couch_event", "src/couch_stats", "src/couch_peruser", "src/couch_tests", "src/ddoc_cache", "src/fabric", "src/global_changes", "src/mango", "src/mem3", "src/rexi", "src/setup", "rel" ], DepDescs = [ %% Independent Apps {config, "config", {tag, "1.0.4"}}, {b64url, "b64url", {tag, "1.0.1"}}, {ets_lru, "ets-lru", {tag, "1.0.0"}}, {khash, "khash", {tag, "1.0.1"}}, {snappy, "snappy", {tag, "CouchDB-1.0.1"}}, {ioq, "ioq", {tag, "1.0.1"}}, %% Non-Erlang deps {docs, {url, "https://github.com/apache/couchdb-documentation"}, {tag, "2.1.2"}, [raw]}, {fauxton, {url, "https://github.com/apache/couchdb-fauxton"}, {tag, "v1.1.15"}, [raw]}, %% Third party deps {folsom, "folsom", {tag, "CouchDB-0.8.2"}}, {hyper, "hyper", {tag, "CouchDB-2.2.0-3"}}, {ibrowse, "ibrowse", {tag, "CouchDB-4.0.1"}}, {jiffy, "jiffy", {tag, "CouchDB-0.14.11-2"}}, {mochiweb, "mochiweb", {tag, "v2.17.0"}}, {meck, "meck", {tag, "0.8.8"}}, {bcrypt, {url, "https://github.com/apache/couchdb-erlang-bcrypt"}, {tag, "1.0.2"}}, {triq, "triq", {tag, "v1.2.0"}} ], BaseUrl = "https://github.com/apache/", MakeDep = fun ({AppName, {url, Url}, Version}) -> {AppName, ".*", {git, Url, Version}}; ({AppName, {url, Url}, Version, Options}) -> {AppName, ".*", {git, Url, Version}, Options}; ({AppName, RepoName, Version}) -> Url = BaseUrl ++ "couchdb-" ++ RepoName ++ ".git", {AppName, ".*", {git, Url, Version}}; ({AppName, RepoName, Version, Options}) -> Url = BaseUrl ++ "couchdb-" ++ RepoName ++ ".git", {AppName, ".*", {git, Url, Version}, Options} end, ErlOpts = case os:getenv("ERL_OPTS") of false -> []; Opts -> [list_to_atom(O) || O <- string:tokens(Opts, ",")] end, AddConfig = [ {require_otp_vsn, "17|18|19|20"}, {deps_dir, "src"}, {deps, lists:map(MakeDep, DepDescs)}, {sub_dirs, SubDirs}, {lib_dirs, ["src"]}, {erl_opts, [{i, "../"} | ErlOpts]}, {eunit_opts, [verbose]}, {plugins, [eunit_plugin]}, {dialyzer, [ {plt_location, local}, {plt_location, COUCHDB_ROOT}, {plt_extra_apps, [ asn1, bcrypt, compiler, crypto, inets, kernel, os_mon, runtime_tools, sasl, setup, ssl, stdlib, syntax_tools, xmerl]}, {warnings, [unmatched_returns, error_handling, race_conditions]}]}, {post_hooks, [{compile, "escript support/build_js.escript"}]} ], C = lists:foldl(fun({K, V}, CfgAcc) -> lists:keystore(K, 1, CfgAcc, {K, V}) end, CONFIG, AddConfig).