From b3ddb954b8fff1172463b80fc3528f34478ed393 Mon Sep 17 00:00:00 2001 From: Tony Aiuto Date: Wed, 17 Jul 2019 08:31:40 -0700 Subject: [PATCH] Add --//tools/build_defs/pkg:incompatible_no_build_defs_pkg flag This flag turns off the rules //tools/build_defs/pkg:{pkg_deb, pkg_rpm, pkg_tar}. The code has moved to https://github.com/bazelbuild/rules_pkg/tree/master/pkg. Users should migrate to the new versions. RELNOTES: Adds flag --//tools/build_defs/pkg:incompatible_no_build_defs_pkg. This flag turns off the rules //tools/build_defs/pkg:{pkg_deb, pkg_rpm, pkg_tar}. Part of #8857 Closes #8858. PiperOrigin-RevId: 258574031 --- tools/BUILD | 2 ++ tools/build_defs/pkg/BUILD | 14 ++++++++++++++ tools/build_defs/pkg/pkg.bzl | 16 ++++++++++++++++ tools/build_defs/pkg/rpm.bzl | 10 +++++++++- tools/config/BUILD | 9 ++++++--- 5 files changed, 47 insertions(+), 4 deletions(-) diff --git a/tools/BUILD b/tools/BUILD index 38689a45aa8854..65c85e2eff39ea 100644 --- a/tools/BUILD +++ b/tools/BUILD @@ -37,6 +37,7 @@ filegroup( ], ) +# Sources in the built in repo '@bazel_tools' filegroup( name = "embedded_tools_srcs", srcs = glob(["**"]) + [ @@ -45,6 +46,7 @@ filegroup( "//tools/build_defs:embedded_tools", "//tools/build_rules:embedded_tools_srcs", "//tools/buildstamp:srcs", + "//tools/config:srcs", "//tools/coverage:srcs", "//tools/cpp:embedded_tools", "//tools/genrule:srcs", diff --git a/tools/build_defs/pkg/BUILD b/tools/build_defs/pkg/BUILD index 86d6bd02d11157..a5c40814fce047 100644 --- a/tools/build_defs/pkg/BUILD +++ b/tools/build_defs/pkg/BUILD @@ -1,6 +1,14 @@ # -*- coding: utf-8 -*- +load("//tools/config:common_settings.bzl", "bool_flag") + licenses(["notice"]) # Apache 2.0 +bool_flag( + name = "incompatible_no_build_defs_pkg", + build_setting_default = False, + visibility = ["//visibility:public"], +) + filegroup( name = "srcs", srcs = glob(["**"]), @@ -65,6 +73,9 @@ py_binary( py_binary( name = "make_deb", srcs = ["make_deb.py"], + deprecation = "The internal version of make_deb is deprecated. Please " + + "use the replacement for pkg_deb from " + + "https://github.com/bazelbuild/rules_pkg/blob/master/pkg.", python_version = "PY2", srcs_version = "PY2AND3", visibility = ["//visibility:public"], @@ -78,6 +89,9 @@ py_binary( py_binary( name = "make_rpm", srcs = ["make_rpm.py"], + deprecation = "The internal version of make_rpm is deprecated. Please " + + "use the replacement for pkg_rpm from " + + "https://github.com/bazelbuild/rules_pkg/blob/master/pkg.", python_version = "PY2", srcs_version = "PY2AND3", visibility = ["//visibility:public"], diff --git a/tools/build_defs/pkg/pkg.bzl b/tools/build_defs/pkg/pkg.bzl index c2deaeece5cc77..ddfdfa16b88791 100644 --- a/tools/build_defs/pkg/pkg.bzl +++ b/tools/build_defs/pkg/pkg.bzl @@ -14,6 +14,7 @@ """Rules for manipulation of various packaging.""" load(":path.bzl", "compute_data_path", "dest_path") +load("//tools/config:common_settings.bzl", "BuildSettingInfo") # Filetype to restrict inputs tar_filetype = [".tar", ".tar.gz", ".tgz", ".tar.xz", ".tar.bz2"] @@ -33,6 +34,10 @@ def _quote(filename, protect = "="): def _pkg_tar_impl(ctx): """Implementation of the pkg_tar rule.""" + if ctx.attr._no_build_defs_pkg_flag[BuildSettingInfo].value: + fail("The built-in version of pkg_deb has been removed. Please use" + + " https://github.com/bazelbuild/rules_pkg/blob/master/pkg.") + # Compute the relative path data_path = compute_data_path(ctx.outputs.out, ctx.attr.strip_prefix) @@ -123,6 +128,11 @@ def _pkg_tar_impl(ctx): def _pkg_deb_impl(ctx): """The implementation for the pkg_deb rule.""" + + if ctx.attr._no_build_defs_pkg_flag[BuildSettingInfo].value: + fail("The built-in version of pkg_deb has been removed. Please use" + + " https://github.com/bazelbuild/rules_pkg/blob/master/pkg.") + files = [ctx.file.data] args = [ "--output=" + ctx.outputs.deb.path, @@ -263,6 +273,9 @@ _real_pkg_tar = rule( executable = True, allow_files = True, ), + "_no_build_defs_pkg_flag": attr.label( + default = "//tools/build_defs/pkg:incompatible_no_build_defs_pkg", + ), }, ) @@ -328,6 +341,9 @@ _pkg_deb = rule( "out": attr.output(mandatory = True), "deb": attr.output(mandatory = True), "changes": attr.output(mandatory = True), + "_no_build_defs_pkg_flag": attr.label( + default = "//tools/build_defs/pkg:incompatible_no_build_defs_pkg", + ), }, ) diff --git a/tools/build_defs/pkg/rpm.bzl b/tools/build_defs/pkg/rpm.bzl index beb9ffff1c8ec5..e679ca0add76ec 100644 --- a/tools/build_defs/pkg/rpm.bzl +++ b/tools/build_defs/pkg/rpm.bzl @@ -13,6 +13,8 @@ # limitations under the License. """Rules to create RPM archives.""" +load("//tools/config:common_settings.bzl", "BuildSettingInfo") + rpm_filetype = [".rpm"] spec_filetype = [".spec"] @@ -20,6 +22,10 @@ spec_filetype = [".spec"] def _pkg_rpm_impl(ctx): """Implements to pkg_rpm rule.""" + if ctx.attr._no_build_defs_pkg_flag[BuildSettingInfo].value: + fail("The built-in version of pkg_rpm has been removed. Please use" + + " https://github.com/bazelbuild/rules_pkg/blob/master/pkg.") + files = [] args = ["--name=" + ctx.label.name] if ctx.attr.rpmbuild_path: @@ -151,7 +157,6 @@ pkg_rpm = rule( "release_file": attr.label(allow_single_file = True), "release": attr.string(), "debug": attr.bool(default = False), - # Implicit dependencies. "rpmbuild_path": attr.string(), "_make_rpm": attr.label( @@ -160,6 +165,9 @@ pkg_rpm = rule( executable = True, allow_files = True, ), + "_no_build_defs_pkg_flag": attr.label( + default = "//tools/build_defs/pkg:incompatible_no_build_defs_pkg", + ), }, executable = False, outputs = _pkg_rpm_outputs, diff --git a/tools/config/BUILD b/tools/config/BUILD index 7a757b28dc79e1..b87c7f2971704d 100644 --- a/tools/config/BUILD +++ b/tools/config/BUILD @@ -9,12 +9,15 @@ filegroup( name = "srcs", srcs = glob(["**"]), visibility = [ - "//tools:__pkg__", - "//tools/build_defs:__pkg__", + "//tools:__subpackages__", + "@bazel_tools//tools:__subpackages__", ], ) exports_files( ["common_settings.bzl"], - visibility = ["//tools:__subpackages__"], + visibility = [ + "//tools:__subpackages__", + "@bazel_tools//tools:__subpackages__", + ], )