|
|
|
load("@rules_pkg//:pkg.bzl", "pkg_tar", "pkg_zip")
|
|
|
|
load(
|
|
|
|
"@rules_pkg//:mappings.bzl",
|
|
|
|
"pkg_attributes",
|
|
|
|
"pkg_filegroup",
|
|
|
|
"pkg_files",
|
|
|
|
"strip_prefix",
|
|
|
|
)
|
|
|
|
load("//:protobuf_release.bzl", "package_naming")
|
|
|
|
load(":build_systems.bzl", "gen_automake_file_lists", "gen_file_lists")
|
|
|
|
load(":cc_dist_library.bzl", "cc_dist_library")
|
|
|
|
|
|
|
|
package_naming(
|
|
|
|
name = "protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_files(
|
|
|
|
name = "wkt_protos_files",
|
|
|
|
srcs = [
|
|
|
|
"//:src/google/protobuf/any.proto",
|
|
|
|
"//:src/google/protobuf/api.proto",
|
|
|
|
"//:src/google/protobuf/descriptor.proto",
|
|
|
|
"//:src/google/protobuf/duration.proto",
|
|
|
|
"//:src/google/protobuf/empty.proto",
|
|
|
|
"//:src/google/protobuf/field_mask.proto",
|
|
|
|
"//:src/google/protobuf/source_context.proto",
|
|
|
|
"//:src/google/protobuf/struct.proto",
|
|
|
|
"//:src/google/protobuf/timestamp.proto",
|
|
|
|
"//:src/google/protobuf/type.proto",
|
|
|
|
"//:src/google/protobuf/wrappers.proto",
|
|
|
|
],
|
|
|
|
prefix = "include/google/protobuf",
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_files(
|
|
|
|
name = "compiler_plugin_protos_files",
|
|
|
|
srcs = ["//:src/google/protobuf/compiler/plugin.proto"],
|
|
|
|
prefix = "include/google/protobuf/compiler",
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Generates protoc release artifacts.
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
genrule(
|
|
|
|
name = "protoc_readme",
|
|
|
|
outs = ["readme.txt"],
|
|
|
|
cmd = """
|
|
|
|
echo "Protocol Buffers - Google's data interchange format
|
|
|
|
Copyright 2008 Google Inc.
|
|
|
|
https://developers.google.com/protocol-buffers/
|
|
|
|
This package contains a precompiled binary version of the protocol buffer
|
|
|
|
compiler (protoc). This binary is intended for users who want to use Protocol
|
|
|
|
Buffers in languages other than C++ but do not want to compile protoc
|
|
|
|
themselves. To install, simply place this binary somewhere in your PATH.
|
|
|
|
If you intend to use the included well known types then don't forget to
|
|
|
|
copy the contents of the 'include' directory somewhere as well, for example
|
|
|
|
into '/usr/local/include/'.
|
|
|
|
Please refer to our official github site for more installation instructions:
|
|
|
|
https://github.com/protocolbuffers/protobuf" > $@
|
|
|
|
""",
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_files(
|
|
|
|
name = "protoc_files",
|
|
|
|
srcs = ["//:protoc"],
|
|
|
|
attributes = pkg_attributes(mode = "0555"),
|
|
|
|
prefix = "bin/",
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "protoc_release",
|
|
|
|
srcs = [
|
|
|
|
":compiler_plugin_protos_files",
|
|
|
|
":protoc_files",
|
|
|
|
":protoc_readme",
|
|
|
|
":wkt_protos_files",
|
|
|
|
],
|
|
|
|
package_file_name = "protoc-{version}-{platform}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Source distribution packaging
|
|
|
|
#
|
|
|
|
# TODO: these will eventually replace autotools for release artifact packaging.
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "dist_common",
|
|
|
|
srcs = [
|
|
|
|
":dist_files",
|
|
|
|
"//:common_dist_files",
|
|
|
|
"//:cpp_dist_files", # to build protoc
|
|
|
|
"//benchmarks:all_dist_files",
|
|
|
|
"//build_defs:dist_files",
|
|
|
|
"//conformance:all_dist_files",
|
|
|
|
"@com_google_protobuf_examples//:dist_files",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "cpp_srcs",
|
|
|
|
srcs = [
|
|
|
|
":dist_common",
|
|
|
|
"//:cpp_dist_files",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_tar(
|
|
|
|
name = "dist_cpp_tar",
|
|
|
|
srcs = [":cpp_srcs"],
|
|
|
|
extension = "tar.gz",
|
|
|
|
package_dir = "protobuf-{version}",
|
|
|
|
package_file_name = "protobuf-cpp-{version}.tar.gz",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "dist_cpp_zip",
|
|
|
|
srcs = [":cpp_srcs"],
|
|
|
|
package_file_name = "protobuf-cpp-{version}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "csharp_srcs",
|
|
|
|
srcs = [
|
|
|
|
":dist_common",
|
|
|
|
"//:csharp_dist_files",
|
|
|
|
"//csharp:dist_files",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_tar(
|
|
|
|
name = "dist_csharp_tar",
|
|
|
|
srcs = [":csharp_srcs"],
|
|
|
|
extension = "tar.gz",
|
|
|
|
package_dir = "protobuf-{version}",
|
|
|
|
package_file_name = "protobuf-csharp-{version}.tar.gz",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "dist_csharp_zip",
|
|
|
|
srcs = [":csharp_srcs"],
|
|
|
|
package_file_name = "protobuf-csharp-{version}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "java_srcs",
|
|
|
|
srcs = [
|
|
|
|
":dist_common",
|
|
|
|
"//java:all_dist_files",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_tar(
|
|
|
|
name = "dist_java_tar",
|
|
|
|
srcs = [":java_srcs"],
|
|
|
|
extension = "tar.gz",
|
|
|
|
package_dir = "protobuf-{version}",
|
|
|
|
package_file_name = "protobuf-java-{version}.tar.gz",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "dist_java_zip",
|
|
|
|
srcs = [":java_srcs"],
|
|
|
|
package_file_name = "protobuf-java-{version}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "objectivec_srcs",
|
|
|
|
srcs = [
|
|
|
|
":dist_common",
|
|
|
|
"//:objectivec_dist_files",
|
|
|
|
"//objectivec:dist_files",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_tar(
|
|
|
|
name = "dist_objectivec_tar",
|
|
|
|
srcs = [":objectivec_srcs"],
|
|
|
|
extension = "tar.gz",
|
|
|
|
package_dir = "protobuf-{version}",
|
|
|
|
package_file_name = "protobuf-objectivec-{version}.tar.gz",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "dist_objectivec_zip",
|
|
|
|
srcs = [":objectivec_srcs"],
|
|
|
|
package_file_name = "protobuf-objectivec-{version}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "php_srcs",
|
|
|
|
srcs = [
|
|
|
|
":dist_common",
|
|
|
|
"//php:dist_files",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_tar(
|
|
|
|
name = "dist_php_tar",
|
|
|
|
srcs = [":php_srcs"],
|
|
|
|
extension = "tar.gz",
|
|
|
|
package_dir = "protobuf-{version}",
|
|
|
|
package_file_name = "protobuf-php-{version}.tar.gz",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "dist_php_zip",
|
|
|
|
srcs = [":php_srcs"],
|
|
|
|
package_file_name = "protobuf-php-{version}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "python_srcs",
|
|
|
|
srcs = [
|
|
|
|
":dist_common",
|
|
|
|
"//:python_dist_files",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_tar(
|
|
|
|
name = "dist_python_tar",
|
|
|
|
srcs = [":python_srcs"],
|
|
|
|
extension = "tar.gz",
|
|
|
|
package_dir = "protobuf-{version}",
|
|
|
|
package_file_name = "protobuf-python-{version}.tar.gz",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "dist_python_zip",
|
|
|
|
srcs = [":python_srcs"],
|
|
|
|
package_file_name = "protobuf-python-{version}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "ruby_srcs",
|
|
|
|
srcs = [
|
|
|
|
":dist_common",
|
|
|
|
"//ruby:dist_files",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_tar(
|
|
|
|
name = "dist_ruby_tar",
|
|
|
|
srcs = [":ruby_srcs"],
|
|
|
|
extension = "tar.gz",
|
|
|
|
package_dir = "protobuf-{version}",
|
|
|
|
package_file_name = "protobuf-ruby-{version}.tar.gz",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "dist_ruby_zip",
|
|
|
|
srcs = [":ruby_srcs"],
|
|
|
|
package_file_name = "protobuf-ruby-{version}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_filegroup(
|
|
|
|
name = "dist_all",
|
|
|
|
srcs = [
|
|
|
|
":cpp_srcs",
|
|
|
|
":csharp_srcs",
|
|
|
|
":java_srcs",
|
|
|
|
":objectivec_srcs",
|
|
|
|
":php_srcs",
|
|
|
|
":python_srcs",
|
|
|
|
":ruby_srcs",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_tar(
|
|
|
|
name = "dist_all_tar",
|
|
|
|
srcs = [":dist_all"],
|
|
|
|
extension = "tar.gz",
|
|
|
|
package_dir = "protobuf-{version}",
|
|
|
|
package_file_name = "protobuf-all-{version}.tar.gz",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
name = "dist_all_zip",
|
|
|
|
srcs = [":dist_all"],
|
|
|
|
package_file_name = "protobuf-all-{version}.zip",
|
|
|
|
package_variables = ":protobuf_pkg_naming",
|
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Generated file lists for build systems
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
gen_file_lists(
|
|
|
|
name = "gen_src_file_lists",
|
|
|
|
testonly = 1,
|
|
|
|
out_stem = "src_file_lists",
|
|
|
|
src_libs = {
|
|
|
|
# source rule: name in generated file
|
|
|
|
"//:protobuf": "libprotobuf",
|
|
|
|
"//:protoc_lib": "libprotoc",
|
|
|
|
"//:protobuf_lite": "libprotobuf_lite",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
|
|
|
|
gen_automake_file_lists(
|
|
|
|
name = "gen_automake_extra_dist_lists",
|
|
|
|
testonly = 1,
|
|
|
|
out = "extra_dist_file_lists.am",
|
|
|
|
src_libs = {
|
|
|
|
# source rule: name in generated file
|
|
|
|
"//:common_dist_files": "dist_common",
|
|
|
|
"//conformance:dist_files": "dist_conformance",
|
|
|
|
"//benchmarks:all_dist_files": "dist_benchmark",
|
|
|
|
"@com_google_protobuf_examples//:dist_files": "dist_example",
|
|
|
|
"//:csharp_dist_files": "dist_csharp",
|
|
|
|
"//csharp:dist_files": "dist_csharp2",
|
|
|
|
"//:objectivec_dist_files": "dist_objectivec",
|
|
|
|
"//objectivec:dist_files": "dist_objectivec2",
|
|
|
|
"//php:dist_files": "dist_php",
|
|
|
|
"//:python_dist_files": "dist_python",
|
|
|
|
"//ruby:dist_files": "dist_ruby",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Protobuf runtime libraries.
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
cc_dist_library(
|
|
|
|
name = "protobuf_lite",
|
|
|
|
linkopts = select({
|
|
|
|
"//build_defs:config_msvc": [],
|
|
|
|
"//conditions:default": ["-lpthread"],
|
|
|
|
}),
|
|
|
|
deps = [
|
|
|
|
"//:protobuf_lite",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_dist_library(
|
|
|
|
name = "protobuf",
|
|
|
|
linkopts = select({
|
|
|
|
"//build_defs:config_msvc": [],
|
|
|
|
"//conditions:default": [
|
|
|
|
"-lz",
|
|
|
|
"-lpthread",
|
|
|
|
],
|
|
|
|
}),
|
|
|
|
deps = [
|
|
|
|
"//:protobuf",
|
|
|
|
"//:protobuf_lite",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Distribution sources
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
pkg_files(
|
|
|
|
name = "dist_files",
|
|
|
|
srcs = glob(["*"]),
|
|
|
|
strip_prefix = strip_prefix.from_root(""),
|
|
|
|
)
|