@@ -11,10 +11,10 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
1111
1212http_archive(
1313 name = " bazel_skylib" ,
14- sha256 = " af87959afe497dc8dfd4c6cb66e1279cb98ccc84284619ebfec27d9c09a903de " ,
14+ sha256 = " 66ffd9315665bfaafc96b52278f57c7e2dd09f5ede279ea6d39b2be471e7e3aa " ,
1515 urls = [
16- " https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.0 /bazel-skylib-1.2.0 .tar.gz" ,
17- " https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.0 /bazel-skylib-1.2.0 .tar.gz" ,
16+ " https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.4.2 /bazel-skylib-1.4.2 .tar.gz" ,
17+ " https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.2 /bazel-skylib-1.4.2 .tar.gz" ,
1818 ],
1919)
2020
@@ -24,8 +24,8 @@ bazel_skylib_workspace()
2424
2525http_archive(
2626 name = " rules_erlang" ,
27- strip_prefix = " rules_erlang-3.15.2 " ,
28- urls = [" https://github.com/rabbitmq/rules_erlang/archive/refs/tags/3.15.2 .zip" ],
27+ strip_prefix = " rules_erlang-4.0.0-beta.1 " ,
28+ urls = [" https://github.com/rabbitmq/rules_erlang/archive/refs/tags/4.0.0-beta.1 .zip" ],
2929)
3030
3131load(
@@ -47,27 +47,114 @@ register_defaults()
4747### ` BUILD ` file
4848
4949``` starlark
50- load(" @rules_erlang//:erlang_app.bzl" , " erlang_app" , " test_erlang_app" )
50+ load(" @rules_erlang//:compile_many.bzl" , " compile_many" )
51+ load(" @rules_erlang//:dialyze.bzl" , " DEFAULT_PLT_APPS" , " dialyze" , " plt" )
52+ load(" @rules_erlang//:erlang_app_sources.bzl" , " erlang_app_sources" )
53+ load(" @rules_erlang//:erlc_opts_file.bzl" , " erlc_opts_file" )
54+ load(" @rules_erlang//:eunit2.bzl" , " eunit" )
5155load(" @rules_erlang//:xref.bzl" , " xref" )
52- load(" @rules_erlang//:dialyze.bzl" , " dialyze" , " plt" )
53- load(" @rules_erlang//:ct.bzl" , " ct_suite" , " assert_suites2" )
56+ load(" @rules_erlang//private:extract_app.bzl" , " extract_app" )
5457
5558APP_NAME = " my_cool_app"
56- APP_VERSION = " 0.1.0"
5759
58- erlang_app(
60+ erlc_opts_file(
61+ name = " erlc_opts_file" ,
62+ values = select({
63+ " @rules_erlang//:debug_build" : [
64+ " +debug_info" ,
65+ " +recv_opt_info" ,
66+ " +warn_export_vars" ,
67+ " +warn_shadow_vars" ,
68+ " +warn_obsolete_guard" ,
69+ ],
70+ " //conditions:default" : [
71+ " +debug_info" ,
72+ " +recv_opt_info" ,
73+ " +warn_export_vars" ,
74+ " +warn_shadow_vars" ,
75+ " +warn_obsolete_guard" ,
76+ " +deterministic" ,
77+ ],
78+ }),
79+ out = " erlc_opts_file" ,
80+ )
81+
82+ erlc_opts_file(
83+ name = " test_erlc_opts_file" ,
84+ values = select({
85+ " @rules_erlang//:debug_build" : [
86+ " +debug_info" ,
87+ " -DTEST=1" ,
88+ ],
89+ " //conditions:default" : [
90+ " +debug_info" ,
91+ " -DTEST=1" ,
92+ " +deterministic" ,
93+ ],
94+ }),
95+ out = " test_erlc_opts_file" ,
96+ )
97+
98+ erlang_app_sources(
99+ name = " %s _srcs" % APP_NAME ,
100+ app_name = APP_NAME ,
101+ app_src = " :app_src" ,
102+ erlc_opts_file = " :erlc_opts_file" ,
103+ visibility = [" //visibility:public" ],
104+ )
105+
106+ erlang_app_sources(
107+ name = " test_%s _srcs" % APP_NAME ,
108+ app_name = APP_NAME ,
109+ app_src = " :app_src" ,
110+ erlc_opts_file = " :test_erlc_opts_file" ,
111+ visibility = [" //visibility:public" ],
112+ )
113+
114+ compile_many(
115+ name = " apps" ,
116+ apps = [
117+ " :%s _srcs" % APP_NAME ,
118+ ],
119+ )
120+
121+ compile_many(
122+ name = " test_apps" ,
123+ apps = [
124+ " :test_%s _srcs" % APP_NAME ,
125+ ],
126+ testonly = True ,
127+ )
128+
129+ extract_app(
130+ name = " erlang_app" ,
131+ erl_libs = " :apps" ,
59132 app_name = APP_NAME ,
60- app_version = APP_VERSION ,
133+ visibility = [ " //visibility:public " ] ,
61134)
62135
63- test_erlang_app(
136+ extract_app(
137+ name = " test_erlang_app" ,
138+ erl_libs = " :test_apps" ,
64139 app_name = APP_NAME ,
65- app_version = APP_VERSION ,
140+ beam_dest = " test" ,
141+ testonly = True ,
66142)
67143
68- xref()
144+ xref(name = " xref" )
145+
146+ plt(
147+ name = " deps_plt" ,
148+ apps = DEFAULT_PLT_APPS ,
149+ for_target = " :erlang_app" ,
150+ )
151+
152+ dialyze(
153+ name = " dialyze" ,
154+ plt = " :deps_plt" ,
155+ )
69156
70- dialyze( )
157+ eunit( name = " xref " )
71158
72159ct_suite(
73160 name = " unit_SUITE" ,
0 commit comments