diff options
author | Jan Lehnardt <jan@apache.org> | 2021-03-14 13:06:57 +0100 |
---|---|---|
committer | Jan Lehnardt <jan@apache.org> | 2021-03-15 11:23:39 +0100 |
commit | de511fb9f5c5d8d093d6b1f565e06a1e2b6558f2 (patch) | |
tree | 2df0eb62bc66503a0c6e93390159da9749878ac0 | |
parent | 94766ce8291339d4ce36614cb9fe9d97470924e3 (diff) | |
download | couchdb-de511fb9f5c5d8d093d6b1f565e06a1e2b6558f2.tar.gz |
feat: somewhat hacky version detection
-rw-r--r-- | rebar.config.script | 5 | ||||
-rw-r--r-- | src/chttpd/src/chttpd.erl | 14 | ||||
-rw-r--r-- | src/couch/include/couch_db.hrl | 10 | ||||
-rw-r--r-- | src/couch/rebar.config.script | 3 | ||||
-rw-r--r-- | src/couch/src/couch_httpd.erl | 4 | ||||
-rw-r--r-- | src/mango/rebar.config.script | 5 |
6 files changed, 24 insertions, 17 deletions
diff --git a/rebar.config.script b/rebar.config.script index 532906c60..463d58cb5 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -92,6 +92,9 @@ case VerList of _ -> ok end. +[OptMajorVersion|_] = VerList. +OtpMajorVersion20 = case OptMajorVersion of 20 -> "true"; _ -> "false" end. +os:putenv("COUCHDB_OTP_MAJOR_VERSION_20", OtpMajorVersion20). % Set the path to the configuration environment generated % by `./configure`. @@ -200,7 +203,7 @@ AddConfig = [ {deps, lists:map(MakeDep, DepDescs ++ OptionalDeps)}, {sub_dirs, SubDirs}, {lib_dirs, ["src"]}, - {erl_opts, [{i, "../"} | ErlOpts]}, + {erl_opts, [{i, "../"}, {d, 'OTP_MAJOR_VSN_20', os:getenv("COUCHDB_OTP_MAJOR_VERSION_20")}, verbose] ++ ErlOpts}, {eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}, {plugins, [eunit_plugin]}, {dialyzer, [ diff --git a/src/chttpd/src/chttpd.erl b/src/chttpd/src/chttpd.erl index a677c191a..f2ac5c897 100644 --- a/src/chttpd/src/chttpd.erl +++ b/src/chttpd/src/chttpd.erl @@ -268,15 +268,15 @@ before_request(HttpReq) -> try chttpd_stats:init(), chttpd_plugin:before_request(HttpReq) - catch ?STACKTRACE(Tag, Error, Stack) - {error, catch_error(HttpReq, Tag, Error, Stack)} + catch ?STACKTRACE(ErrorType, Error, Stack) + {error, catch_error(HttpReq, ErrorType, Error, Stack)} end. after_request(HttpReq, HttpResp0) -> {ok, HttpResp1} = try chttpd_plugin:after_request(HttpReq, HttpResp0) - catch ?STACKTRACE(_Tag, Error, Stack) + catch ?STACKTRACE(_ErrorType, Error, Stack) send_error(HttpReq, {Error, nil, Stack}), {ok, HttpResp0#httpd_resp{status = aborted}} end, @@ -309,8 +309,8 @@ process_request(#httpd{mochi_req = MochiReq} = HttpReq) -> Response -> {HttpReq, Response} end - catch ?STACKTRACE(Tag, Error, Stack) - {HttpReq, catch_error(HttpReq, Tag, Error, Stack)} + catch ?STACKTRACE(ErrorType, Error, Stack) + {HttpReq, catch_error(HttpReq, ErrorType, Error, Stack)} end. handle_req_after_auth(HandlerKey, HttpReq) -> @@ -320,8 +320,8 @@ handle_req_after_auth(HandlerKey, HttpReq) -> AuthorizedReq = chttpd_auth:authorize(possibly_hack(HttpReq), fun chttpd_auth_request:authorize_request/1), {AuthorizedReq, HandlerFun(AuthorizedReq)} - catch ?STACKTRACE(Tag, Error, Stack) - {HttpReq, catch_error(HttpReq, Tag, Error, Stack)} + catch ?STACKTRACE(ErrorType, Error, Stack) + {HttpReq, catch_error(HttpReq, ErrorType, Error, Stack)} end. catch_error(_HttpReq, throw, {http_head_abort, Resp}, _Stack) -> diff --git a/src/couch/include/couch_db.hrl b/src/couch/include/couch_db.hrl index 61e5f73d7..26e715761 100644 --- a/src/couch/include/couch_db.hrl +++ b/src/couch/include/couch_db.hrl @@ -232,16 +232,16 @@ % end, % for features specific to Erlang/OTP version 20.x (and later versions) --ifdef(ERLANG_OTP_VERSION_20). +-ifdef(OTP_MAJOR_VSN_20). -else. -define(ERLANG_OTP_VERSION_21_FEATURES, true). -endif. % Get the stacktrace in a way that is backwards compatible -ifdef(ERLANG_OTP_VERSION_21_FEATURES). --define(STACKTRACE(ErrorType, Error, ErrorStackTrace), - ErrorType:Error:ErrorStackTrace ->). +-define(STACKTRACE(ErrorType, Error, Stack), + ErrorType:Error:Stack ->). -else. --define(STACKTRACE(ErrorType, Error, ErrorStackTrace), +-define(STACKTRACE(ErrorType, Error, Stack), ErrorType:Error -> - ErrorStackTrace = erlang:get_stacktrace(),). + Stack = erlang:get_stacktrace(),). -endif. diff --git a/src/couch/rebar.config.script b/src/couch/rebar.config.script index 5c9e6335f..0125615d7 100644 --- a/src/couch/rebar.config.script +++ b/src/couch/rebar.config.script @@ -215,7 +215,8 @@ AddConfig = [ {erl_opts, PlatformDefines ++ [ {d, 'COUCHDB_VERSION', Version}, {d, 'COUCHDB_GIT_SHA', GitSha}, - {i, "../"} + {i, "../"}, + {d, 'OTP_MAJOR_VSN_20', os:getenv("COUCHDB_OTP_MAJOR_VERSION_20")} ] ++ MD5Config ++ ProperConfig}, {port_env, PortEnvOverrides}, {eunit_compile_opts, PlatformDefines} diff --git a/src/couch/src/couch_httpd.erl b/src/couch/src/couch_httpd.erl index 6c0fd8761..a1798b705 100644 --- a/src/couch/src/couch_httpd.erl +++ b/src/couch/src/couch_httpd.erl @@ -375,9 +375,9 @@ handle_request_int(MochiReq, DefaultFun, couch_log:error("function_clause error in HTTP request",[]), couch_log:info("Stacktrace: ~p",[Stack]), send_error(HttpReq, function_clause); - ?STACKTRACE(Tag, Error, Stack) + ?STACKTRACE(ErrorType, Error, Stack) couch_log:error("Uncaught error in HTTP request: ~p", - [{Tag, Error}]), + [{ErrorType, Error}]), couch_log:info("Stacktrace: ~p",[Stack]), send_error(HttpReq, Error) end, diff --git a/src/mango/rebar.config.script b/src/mango/rebar.config.script index d62cc69db..a9da9b18b 100644 --- a/src/mango/rebar.config.script +++ b/src/mango/rebar.config.script @@ -18,7 +18,10 @@ if not HaveDreyfus -> CONFIG; true -> {erl_opts, Opts} -> Opts; false -> [] end, - NewOpts = [{d, 'HAVE_DREYFUS'} | CurrOpts], + NewOpts = [ + {d, 'HAVE_DREYFUS'}, + {d, 'OTP_MAJOR_VSN_20', os:getenv("COUCHDB_OTP_MAJOR_VERSION_20")} + ] ++ CurrOpts, lists:keystore(erl_opts, 1, CONFIG, {erl_opts, NewOpts}) end. |