11load ("@rules_pkg//pkg:mappings.bzl" , "filter_directory" , "pkg_attributes" , "pkg_files" , "pkg_mklink" , "strip_prefix" )
22load ("@rules_pkg//pkg:tar.bzl" , "pkg_tar" )
33load ("//bazel/rules:exclude_from_filegroup.bzl" , "exclude_from_filegroup" )
4+ load ("//bazel/rules:patchelf.bzl" , "set_runpath" )
45load ("//omd/packages/erlang:vars.bzl" , "PLACE_HOLDER" )
56
67OMD_ROOT_AWARE = [
@@ -27,13 +28,21 @@ LIB_OSMON_PRIV_BIN = [
2728 "lib/erlang/lib/os_mon-2.9.1/priv/bin/cpu_sup" ,
2829]
2930
30- LIB_ERTS_BIN = [
31+ LIB_CRYPTO_PRIV_LIB = [
32+ "lib/erlang/lib/crypto-5.4.2.3/priv/lib/crypto.so" ,
33+ "lib/erlang/lib/crypto-5.4.2.3/priv/lib/otp_test_engine.so" ,
34+ ]
35+
36+ LIB_ERL_INTERFACE_BIN = [
37+ "lib/erlang/lib/erl_interface-5.5.1/bin/erl_call" ,
38+ ]
39+
40+ LIB_ERTS_BIN_ELF = [
3141 "lib/erlang/erts-14.2.5.10/bin/beam.smp" ,
3242 "lib/erlang/erts-14.2.5.10/bin/ct_run" ,
3343 "lib/erlang/erts-14.2.5.10/bin/dialyzer" ,
3444 "lib/erlang/erts-14.2.5.10/bin/dyn_erl" ,
3545 "lib/erlang/erts-14.2.5.10/bin/epmd" ,
36- "lib/erlang/erts-14.2.5.10/bin/erl.src" ,
3746 "lib/erlang/erts-14.2.5.10/bin/erl_call" ,
3847 "lib/erlang/erts-14.2.5.10/bin/erl_child_setup" ,
3948 "lib/erlang/erts-14.2.5.10/bin/erlc" ,
@@ -42,30 +51,41 @@ LIB_ERTS_BIN = [
4251 "lib/erlang/erts-14.2.5.10/bin/heart" ,
4352 "lib/erlang/erts-14.2.5.10/bin/inet_gethost" ,
4453 "lib/erlang/erts-14.2.5.10/bin/run_erl" ,
45- "lib/erlang/erts-14.2.5.10/bin/start.src" ,
46- "lib/erlang/erts-14.2.5.10/bin/start_erl.src" ,
4754 "lib/erlang/erts-14.2.5.10/bin/to_erl" ,
4855 "lib/erlang/erts-14.2.5.10/bin/typer" ,
4956 "lib/erlang/erts-14.2.5.10/bin/yielding_c_fun" ,
5057]
5158
52- LIB_BIN = [
59+ LIB_ERTS_BIN_NOELF = [
60+ "lib/erlang/erts-14.2.5.10/bin/erl.src" ,
61+ "lib/erlang/erts-14.2.5.10/bin/start.src" ,
62+ "lib/erlang/erts-14.2.5.10/bin/start_erl.src" ,
63+ ]
64+
65+ LIB_ERTS_BIN = LIB_ERTS_BIN_ELF + LIB_ERTS_BIN_NOELF
66+
67+ LIB_BIN_ELF = [
5368 "lib/erlang/bin/ct_run" ,
5469 "lib/erlang/bin/dialyzer" ,
5570 "lib/erlang/bin/erl_call" ,
5671 "lib/erlang/bin/erlc" ,
5772 "lib/erlang/bin/escript" ,
58- "lib/erlang/bin/no_dot_erlang.boot" ,
5973 "lib/erlang/bin/run_erl" ,
74+ "lib/erlang/bin/to_erl" ,
75+ "lib/erlang/bin/typer" ,
76+ ]
77+
78+ LIB_BIN_NOELF = [
79+ "lib/erlang/bin/no_dot_erlang.boot" ,
6080 "lib/erlang/bin/start.boot" ,
6181 "lib/erlang/bin/start.script" ,
6282 "lib/erlang/bin/start_clean.boot" ,
6383 "lib/erlang/bin/start_erl" ,
6484 "lib/erlang/bin/start_sasl.boot" ,
65- "lib/erlang/bin/to_erl" ,
66- "lib/erlang/bin/typer" ,
6785]
6886
87+ LIB_BIN = LIB_BIN_ELF + LIB_BIN_NOELF
88+
6989exclude_from_filegroup (
7090 name = "erlang_purged" ,
7191 src = "@erlang//:gen_dir" ,
@@ -75,7 +95,7 @@ exclude_from_filegroup(
7595 "misc" ,
7696 "include" ,
7797 "src" ,
78- ] + OMD_ROOT_AWARE + LIB_OSMON_PRIV_BIN + LIB_ERTS_BIN + BIN_SYMLINKS ,
98+ ] + OMD_ROOT_AWARE + LIB_OSMON_PRIV_BIN + LIB_CRYPTO_PRIV_LIB + LIB_ERL_INTERFACE_BIN + LIB_ERTS_BIN + LIB_BIN + BIN_SYMLINKS ,
7999 tags = ["manual" ],
80100)
81101
@@ -143,6 +163,73 @@ genrule(
143163 tags = ["manual" ],
144164)
145165
166+ genrule (
167+ name = "erlang_lib_erl_interface_bin" ,
168+ srcs = [
169+ "@erlang//:gen_dir" ,
170+ ],
171+ outs = LIB_ERL_INTERFACE_BIN ,
172+ cmd = """
173+ #!/bin/bash
174+ for F in $(OUTS); do
175+ cp -L $(location @erlang//:gen_dir)/%s/$${F#$(RULEDIR)/} $$F
176+ chmod 750 $$F
177+ done
178+ """ % PLACE_HOLDER ,
179+ tags = ["manual" ],
180+ )
181+
182+ genrule (
183+ name = "erlang_lib_crypto_priv_lib" ,
184+ srcs = [
185+ "@erlang//:gen_dir" ,
186+ ],
187+ outs = LIB_CRYPTO_PRIV_LIB ,
188+ cmd = """
189+ #!/bin/bash
190+ for F in $(OUTS); do
191+ cp -L $(location @erlang//:gen_dir)/%s/$${F#$(RULEDIR)/} $$F
192+ chmod 750 $$F
193+ done
194+ """ % PLACE_HOLDER ,
195+ tags = ["manual" ],
196+ )
197+
198+ set_runpath (
199+ name = "erl_interface_bin_runpath" ,
200+ srcs = LIB_ERL_INTERFACE_BIN ,
201+ rpaths = ["$ORIGIN/../../../../../lib" ],
202+ tags = ["manual" ],
203+ )
204+
205+ set_runpath (
206+ name = "erts_bin_runpath" ,
207+ srcs = LIB_ERTS_BIN_ELF ,
208+ rpaths = ["$ORIGIN/../../../../lib" ],
209+ tags = ["manual" ],
210+ )
211+
212+ set_runpath (
213+ name = "osmon_priv_bin_runpath" ,
214+ srcs = LIB_OSMON_PRIV_BIN ,
215+ rpaths = ["$ORIGIN/../../../../../../lib" ],
216+ tags = ["manual" ],
217+ )
218+
219+ set_runpath (
220+ name = "crypto_priv_lib_runpath" ,
221+ srcs = LIB_CRYPTO_PRIV_LIB ,
222+ rpaths = ["$ORIGIN/../../../../../../lib" ],
223+ tags = ["manual" ],
224+ )
225+
226+ set_runpath (
227+ name = "lib_bin_runpath" ,
228+ srcs = LIB_BIN_ELF ,
229+ rpaths = ["$ORIGIN/../../../lib" ],
230+ tags = ["manual" ],
231+ )
232+
146233pkg_files (
147234 name = "omd_root_aware_pkg" ,
148235 srcs = [
@@ -174,17 +261,37 @@ pkg_mklink(
174261
175262pkg_files (
176263 name = "lib_osmon_priv_bin_pkg" ,
177- srcs = LIB_OSMON_PRIV_BIN ,
264+ srcs = [ ":osmon_priv_bin_runpath" ] ,
178265 attributes = pkg_attributes (
179266 mode = "0755" ,
180267 ),
181268 prefix = "lib/erlang/lib/os_mon-2.9.1/priv/bin" ,
182269 tags = ["manual" ],
183270)
184271
272+ pkg_files (
273+ name = "lib_crypto_priv_lib_pkg" ,
274+ srcs = [":crypto_priv_lib_runpath" ],
275+ attributes = pkg_attributes (
276+ mode = "0755" ,
277+ ),
278+ prefix = "lib/erlang/lib/crypto-5.4.2.3/priv/lib" ,
279+ tags = ["manual" ],
280+ )
281+
282+ pkg_files (
283+ name = "lib_erl_interface_bin_pkg" ,
284+ srcs = [":erl_interface_bin_runpath" ],
285+ attributes = pkg_attributes (
286+ mode = "0755" ,
287+ ),
288+ prefix = "lib/erlang/lib/erl_interface-5.5.1/bin" ,
289+ tags = ["manual" ],
290+ )
291+
185292pkg_files (
186293 name = "lib_erts_bin_pkg" ,
187- srcs = LIB_ERTS_BIN ,
294+ srcs = [ ":erts_bin_runpath" ] + LIB_ERTS_BIN_NOELF ,
188295 attributes = pkg_attributes (
189296 mode = "0755" ,
190297 ),
@@ -194,7 +301,7 @@ pkg_files(
194301
195302pkg_files (
196303 name = "lib_bin_pkg" ,
197- srcs = LIB_BIN ,
304+ srcs = [ ":lib_bin_runpath" ] + LIB_BIN_NOELF ,
198305 attributes = pkg_attributes (
199306 mode = "0755" ,
200307 ),
@@ -223,6 +330,8 @@ pkg_tar(
223330 srcs = [
224331 ":epmd_lib_link" ,
225332 ":lib_bin_pkg" ,
333+ ":lib_crypto_priv_lib_pkg" ,
334+ ":lib_erl_interface_bin_pkg" ,
226335 ":lib_erts_bin_pkg" ,
227336 ":lib_osmon_priv_bin_pkg" ,
228337 ":omd_root_aware_pkg" ,
0 commit comments