diff options
author | Ronny Berndt <ronny@apache.org> | 2022-12-05 11:10:56 +0100 |
---|---|---|
committer | Ronny Berndt <ronny@apache.org> | 2022-12-05 11:48:59 +0100 |
commit | c1b7df8889d756bad36b76eb98d5b64b34ad3fb5 (patch) | |
tree | 3536986138b47c26498c54192a45e881a39a4274 | |
parent | e1b7bd34109601847db0fc2d1f1e56d9a53ae0e9 (diff) | |
download | couchdb-c1b7df8889d756bad36b76eb98d5b64b34ad3fb5.tar.gz |
trying to hook into rebar.config.script
-rw-r--r-- | src/chttpd/src/chttpd_node.erl | 3 | ||||
-rw-r--r-- | src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp | 2 | ||||
-rw-r--r-- | src/couch/rebar.config.script | 13 | ||||
-rw-r--r-- | src/couch/src/couch_spidermonkey.erl (renamed from src/couch/priv/couch_spidermonkey/couch_spidermonkey.erl) | 4 |
4 files changed, 17 insertions, 5 deletions
diff --git a/src/chttpd/src/chttpd_node.erl b/src/chttpd/src/chttpd_node.erl index a63236db7..193db3d4d 100644 --- a/src/chttpd/src/chttpd_node.erl +++ b/src/chttpd/src/chttpd_node.erl @@ -56,7 +56,8 @@ handle_node_req(#httpd{method = 'GET', path_parts = [_, _Node, <<"_versions">>]} }, javascript_engine => #{ name => <<"spidermonkey">>, - version => couch_server:get_spidermonkey_version() + version => couch_server:get_spidermonkey_version(), + version_dyn => list_to_binary(couch_spidermonkey:get_spidermonkey_version()) } }); handle_node_req(#httpd{path_parts = [_, _Node, <<"_versions">>]} = Req) -> diff --git a/src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp b/src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp index 15b1e1d71..b33cd8d6f 100644 --- a/src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp +++ b/src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp @@ -32,7 +32,7 @@ get_spidermonkey_version(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) //ignore "JavaScript-C" string result = FULLVERSION.substr(js_len, full_len-js_len); - return enif_make_string(env, result.c_str(), ERL_NIF_LATIN1); + return enif_make_binary(env, result.c_str()); } static ErlNifFunc nif_functions[] = { diff --git a/src/couch/rebar.config.script b/src/couch/rebar.config.script index f0b465135..c77dadd02 100644 --- a/src/couch/rebar.config.script +++ b/src/couch/rebar.config.script @@ -194,7 +194,8 @@ IcuEnv = [{"DRV_CFLAGS", "$DRV_CFLAGS -DPIC -O2 -fno-common"}, {"LDFLAGS", "$LDFLAGS"}, {"CFLAGS", "$CFLAGS"}]. IcuDarwinEnv = [{"CFLAGS", "-DXP_UNIX -I/usr/local/opt/icu4c/include -I/opt/homebrew/opt/icu4c/include"}, - {"LDFLAGS", "-L/usr/local/opt/icu4c/lib -L/opt/homebrew/opt/icu4c/lib"}]. + {"LDFLAGS", "-L/usr/local/Cellar/spidermonkey/91.13.0_1/lib -L/usr/local/opt/icu4c/lib -L/opt/homebrew/opt/icu4c/lib"}, + {"CXXFLAGS", "-I/usr/local/Cellar/spidermonkey/91.13.0_1/include"}]. IcuBsdEnv = [{"CFLAGS", "-DXP_UNIX -I/usr/local/include"}, {"LDFLAGS", "-L/usr/local/lib"}]. IcuWinEnv = [{"CFLAGS", "$DRV_CFLAGS /DXP_WIN"}, @@ -203,6 +204,9 @@ IcuWinEnv = [{"CFLAGS", "$DRV_CFLAGS /DXP_WIN"}, ComparePath = "priv/couch_ejson_compare.so". CompareSrc = ["priv/couch_ejson_compare/*.c"]. +SpiderPath = "priv/couch_spidermonkey.so". +SpiderSrc = ["priv/couch_spidermonkey/*.cpp"]. + BaseSpecs = [ %% couchjs {".*", CouchJSPath, CouchJSSrc, [{env, CouchJSEnv}]}, @@ -210,7 +214,12 @@ BaseSpecs = [ {"darwin", ComparePath, CompareSrc, [{env, IcuEnv ++ IcuDarwinEnv}]}, {"linux", ComparePath, CompareSrc, [{env, IcuEnv}]}, {"bsd", ComparePath, CompareSrc, [{env, IcuEnv ++ IcuBsdEnv}]}, - {"win32", ComparePath, CompareSrc, [{env, IcuWinEnv}]} + {"win32", ComparePath, CompareSrc, [{env, IcuWinEnv}]}, + % couch_spidermonkey + {"darwin", SpiderPath, SpiderSrc, [{env, IcuEnv ++ IcuDarwinEnv}]}, + {"linux", SpiderPath, SpiderSrc, [{env, IcuEnv}]}, + {"bsd", SpiderPath, SpiderSrc, [{env, IcuEnv ++ IcuBsdEnv}]}, + {"win32", SpiderPath, SpiderSrc, [{env, IcuWinEnv}]} ]. SpawnSpec = [ diff --git a/src/couch/priv/couch_spidermonkey/couch_spidermonkey.erl b/src/couch/src/couch_spidermonkey.erl index 801d46111..c97cb3f26 100644 --- a/src/couch/priv/couch_spidermonkey/couch_spidermonkey.erl +++ b/src/couch/src/couch_spidermonkey.erl @@ -13,7 +13,9 @@ -on_load(init/0). init() -> - ok = erlang:load_nif("./couch_spidermonkey", 0). + Dir = code:priv_dir(couch), + couch_log:info("Priv-Dir: ~p", [filename:join(Dir, ?MODULE)]), + ok = erlang:load_nif(filename:join(Dir, ?MODULE), 0). get_spidermonkey_version() -> exit(nif_library_not_loaded).
\ No newline at end of file |