Jelajahi Sumber

build: conditionally build jq

JimMoen 3 tahun lalu
induk
melakukan
4c7bddd4bb
2 mengubah file dengan 17 tambahan dan 6 penghapusan
  1. 10 1
      mix.exs
  2. 7 5
      rebar.config.erl

+ 10 - 1
mix.exs

@@ -600,7 +600,10 @@ defmodule EMQXUmbrella.MixProject do
   end
 
   defp enable_jq?() do
-    not win32?()
+    not Enum.any?([
+      build_without_jq?(),
+      win32?()
+    ]) or "1" == System.get_env("BUILD_WITH_JQ")
   end
 
   defp enable_quicer?() do
@@ -641,6 +644,12 @@ defmodule EMQXUmbrella.MixProject do
     {:unix, :darwin} == :os.type()
   end
 
+  defp build_without_jq?() do
+    opt = System.get_env("BUILD_WITHOUT_JQ", "false")
+
+    String.downcase(opt) != "false"
+  end
+
   defp build_without_quic?() do
     opt = System.get_env("BUILD_WITHOUT_QUIC", "false")
 

+ 7 - 5
rebar.config.erl

@@ -47,7 +47,7 @@ deps(Config) ->
     {deps, OldDeps} = lists:keyfind(deps, 1, Config),
     MoreDeps =
         [bcrypt() || provide_bcrypt_dep()] ++
-            [jq() || provide_jq()] ++
+            [jq() || is_jq_supported()] ++
             [quicer() || is_quicer_supported()],
     lists:keystore(deps, 1, Config, {deps, OldDeps ++ MoreDeps}).
 
@@ -77,6 +77,11 @@ is_cover_enabled() ->
 is_enterprise(ce) -> false;
 is_enterprise(ee) -> true.
 
+is_jq_supported() ->
+    not (false =/= os:getenv("BUILD_WITHOUT_JQ") orelse
+        is_win32()) orelse
+        "1" == os:getenv("BUILD_WITH_JQ").
+
 is_quicer_supported() ->
     not (false =/= os:getenv("BUILD_WITHOUT_QUIC") orelse
         is_macos() orelse
@@ -343,7 +348,7 @@ relx_apps(ReleaseType, Edition) ->
     ] ++
         [quicer || is_quicer_supported()] ++
         [bcrypt || provide_bcrypt_release(ReleaseType)] ++
-        [jq || provide_jq()] ++
+        [jq || is_jq_supported()] ++
         [{observer, load} || is_app(observer)] ++
         relx_apps_per_edition(Edition).
 
@@ -456,9 +461,6 @@ is_debug(VarName) ->
 provide_bcrypt_dep() ->
     not is_win32().
 
-provide_jq() ->
-    not is_win32().
-
 provide_bcrypt_release(ReleaseType) ->
     provide_bcrypt_dep() andalso ReleaseType =:= cloud.