From 45e2605485e2f7a525e7561d1d668144d5ad696e Mon Sep 17 00:00:00 2001 From: William Yang Date: Wed, 15 Jun 2022 11:18:24 +0200 Subject: [PATCH] build: workaround for windows build --- apps/emqx/rebar.config.script | 32 ++++++++++++++++---------- apps/emqx/src/emqx_quic_connection.erl | 5 ++++ apps/emqx/src/emqx_quic_stream.erl | 1 - apps/emqx_connector/rebar.config | 2 +- mix.exs | 3 ++- rebar.config.erl | 3 ++- 6 files changed, 30 insertions(+), 16 deletions(-) diff --git a/apps/emqx/rebar.config.script b/apps/emqx/rebar.config.script index 888e911f3..136e79190 100644 --- a/apps/emqx/rebar.config.script +++ b/apps/emqx/rebar.config.script @@ -13,26 +13,34 @@ IsWin32 = fun() -> end, IsMacOS = fun() -> - {unix, darwin} =:= os:type() - end, + {unix, darwin} =:= os:type() +end, IsQuicSupp = fun() -> - not (IsCentos6() orelse IsWin32() - orelse IsMacOS() orelse - false =/= os:getenv("BUILD_WITHOUT_QUIC") - ) - orelse "1" == os:getenv("BUILD_WITH_QUIC") - end, + not (IsCentos6() orelse IsWin32() orelse + IsMacOS() orelse + false =/= os:getenv("BUILD_WITHOUT_QUIC")) orelse + "1" == os:getenv("BUILD_WITH_QUIC") +end, Bcrypt = {bcrypt, {git, "https://github.com/emqx/erlang-bcrypt.git", {tag, "0.6.0"}}}, Quicer = {quicer, {git, "https://github.com/emqx/quic.git", {tag, "0.0.11"}}}. ExtraDeps = fun(C) -> {deps, Deps0} = lists:keyfind(deps, 1, C), - Deps = - Deps0 ++ [Bcrypt || not IsWin32()] ++ - [Quicer || IsQuicSupp()], - lists:keystore(deps, 1, C, {deps, Deps}) + {erl_opts, ErlOpts0} = lists:keyfind(erl_opts, 1, C), + IsQuic = IsQuicSupp(), + New = [ + {deps, Deps0 ++ [Bcrypt || not IsWin32()] ++ [Quicer || IsQuic]}, + {erl_opts, ErlOpts0 ++ [{d, 'BUILD_WITHOUT_QUIC'} || not IsQuic]} + ], + lists:foldl( + fun({Key, _Val} = KV, Acc) -> + lists:keystore(Key, 1, Acc, KV) + end, + C, + New + ) end, ExtraDeps(CONFIG). diff --git a/apps/emqx/src/emqx_quic_connection.erl b/apps/emqx/src/emqx_quic_connection.erl index b44a4f1c2..e9a392187 100644 --- a/apps/emqx/src/emqx_quic_connection.erl +++ b/apps/emqx/src/emqx_quic_connection.erl @@ -15,7 +15,12 @@ %%-------------------------------------------------------------------- -module(emqx_quic_connection). + +-ifndef(BUILD_WITHOUT_QUIC). -include_lib("quicer/include/quicer.hrl"). +-else. +-define(QUIC_CONNECTION_SHUTDOWN_FLAG_NONE, 0). +-endif. %% Callbacks -export([ diff --git a/apps/emqx/src/emqx_quic_stream.erl b/apps/emqx/src/emqx_quic_stream.erl index bed5805e2..4f40902ab 100644 --- a/apps/emqx/src/emqx_quic_stream.erl +++ b/apps/emqx/src/emqx_quic_stream.erl @@ -16,7 +16,6 @@ %% MQTT/QUIC Stream -module(emqx_quic_stream). --include_lib("quicer/include/quicer.hrl"). %% emqx transport Callbacks -export([ diff --git a/apps/emqx_connector/rebar.config b/apps/emqx_connector/rebar.config index eb1a62773..b114e0884 100644 --- a/apps/emqx_connector/rebar.config +++ b/apps/emqx_connector/rebar.config @@ -21,7 +21,7 @@ %% eredis_cluster's dependency getting resolved earlier. %% Here we pin 1.5.2 to avoid surprises in the future. {poolboy, {git, "https://github.com/emqx/poolboy.git", {tag, "1.5.2"}}}, - {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.5.1"}}} + {emqtt, {git, "https://github.com/qzhuyan/emqtt", {branch, "dev/william/bump-quicer"}}} ]}. {shell, [ diff --git a/mix.exs b/mix.exs index 8125ee9f1..372e79d94 100644 --- a/mix.exs +++ b/mix.exs @@ -58,7 +58,8 @@ defmodule EMQXUmbrella.MixProject do {:ecpool, github: "emqx/ecpool", tag: "0.5.2"}, {:replayq, "0.3.4", override: true}, {:pbkdf2, github: "emqx/erlang-pbkdf2", tag: "2.0.4", override: true}, - {:emqtt, github: "emqx/emqtt", tag: "1.5.1", override: true}, + # {:emqtt, github: "emqx/emqtt", tag: "1.5.1", override: true}, + {:emqtt, github: "qzhuyan/emqtt", branch: "dev/william/bump-quicer", override: true}, {:rulesql, github: "emqx/rulesql", tag: "0.1.4"}, {:observer_cli, "1.7.1"}, {:system_monitor, github: "ieQu1/system_monitor", tag: "3.0.3"}, diff --git a/rebar.config.erl b/rebar.config.erl index 1d04d773f..58ebb24ef 100644 --- a/rebar.config.erl +++ b/rebar.config.erl @@ -138,7 +138,8 @@ common_compile_opts(Edition, Vsn) -> {compile_info, [{emqx_vsn, Vsn}]}, {d, 'EMQX_RELEASE_EDITION', Edition} ] ++ - [{d, 'EMQX_BENCHMARK'} || os:getenv("EMQX_BENCHMARK") =:= "1"]. + [{d, 'EMQX_BENCHMARK'} || os:getenv("EMQX_BENCHMARK") =:= "1"] ++ + [{d, 'BUILD_WITHOUT_QUIC'} || not is_quicer_supported()]. prod_compile_opts(Edition, Vsn) -> [