372046933 commented on issue #1992:
URL:
https://github.com/apache/incubator-brpc/issues/1992#issuecomment-1316149328
@fansehep
```BUILD
http_archive(
name = "rules_perl", # 2021-09-23T03:21:58Z
sha256 =
"55fbe071971772758ad669615fc9aac9b126db6ae45909f0f36de499f6201dd3",
strip_prefix = "rules_perl-2f4f36f454375e678e81e5ca465d4d497c5c02da",
urls = [
"https://github.com/bazelbuild/rules_perl/archive/2f4f36f454375e678e81e5ca465d4d497c5c02da.tar.gz",
],
)
# Use rules_foreign_cc as fewer as possible.
#
# 1. Build very basic libraries without any further dependencies.
# 2. Build too complex to bazelize library.
http_archive(
name = "rules_foreign_cc",
sha256 =
"2a4d07cd64b0719b39a7c12218a3e507672b82a97b98c6a89d38565894cf7c51",
strip_prefix = "rules_foreign_cc-0.9.0",
url =
"https://github.com/bazelbuild/rules_foreign_cc/archive/0.9.0.tar.gz",
)
#
# Starlark rules
#
load("@rules_foreign_cc//foreign_cc:repositories.bzl",
"rules_foreign_cc_dependencies")
rules_foreign_cc_dependencies()
#
# Perl Dependencies
# (Required by building openssl)
#
load("@rules_perl//perl:deps.bzl", "perl_register_toolchains",
"perl_rules_dependencies")
perl_rules_dependencies()
perl_register_toolchains()
# bRPC cannot use boringssl. Build openssl.
http_archive(
name = "openssl", # 2022-11-1
build_file = "//third_party/openssl:openssl.foreign_rules.BUILD",
sha256 =
"c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa",
strip_prefix = "openssl-1.1.1s",
urls = [
"https://www.openssl.org/source/openssl-1.1.1s.tar.gz",
],
)
```
`openssl.foreign_rules.BUILD`
```BUILD
"""An openssl build file based on a snippet found in the github issue:
https://github.com/bazelbuild/rules_foreign_cc/issues/337
Note that the $(PERL) "make variable"
(https://docs.bazel.build/versions/main/be/make-variables.html)
is populated by the perl toolchain provided by rules_perl.
"""
load("@rules_foreign_cc//foreign_cc:defs.bzl", "configure_make",
"configure_make_variant")
# Read https://wiki.openssl.org/index.php/Compilation_and_Installation
filegroup(
name = "all_srcs",
srcs = glob(
include = ["**"],
exclude = ["*.bazel"],
),
)
CONFIGURE_OPTIONS = [
"no-comp",
"no-idea",
"no-weak-ssl-ciphers",
"no-shared",
]
LIB_NAME = "openssl"
MAKE_TARGETS = [
"build_libs",
"install_dev",
]
config_setting(
name = "msvc_compiler",
flag_values = {
"@bazel_tools//tools/cpp:compiler": "msvc-cl",
},
visibility = ["//visibility:public"],
)
alias(
name = "openssl",
actual = "openssl_default",
visibility = ["//visibility:public"],
)
alias(
name = "ssl",
actual = "openssl_default",
visibility = ["//visibility:public"],
)
alias(
name = "crypto",
actual = "openssl_default",
visibility = ["//visibility:public"],
)
configure_make(
name = "openssl_default",
configure_command = "config",
configure_in_place = True,
configure_options = CONFIGURE_OPTIONS,
args = ["-j `nproc`"],
env = select({
"@platforms//os:macos": {
"AR": "",
"PERL": "$$EXT_BUILD_ROOT$$/$(PERL)",
},
"//conditions:default": {
"PERL": "$$EXT_BUILD_ROOT$$/$(PERL)",
},
}),
lib_name = LIB_NAME,
lib_source = ":all_srcs",
copts = ["-fPIC"],
# Note that for Linux builds, libssl must come before libcrypto on the
linker command-line.
# As such, libssl must be listed before libcrypto
out_static_libs = [
"libssl.a",
"libcrypto.a",
],
targets = MAKE_TARGETS,
toolchains = ["@rules_perl//:current_toolchain"],
)
filegroup(
name = "gen_dir",
srcs = [":openssl"],
output_group = "gen_dir",
visibility = ["//visibility:public"],
)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]