diff options
author | aiuto <aiuto@google.com> | 2022-04-07 12:12:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-07 12:12:14 -0400 |
commit | 76f5651ed90209ffb9eff40fef3cee19a1f1e8a3 (patch) | |
tree | 635b00788a3f79b333a3aecebfa969d03355a82c | |
parent | 19438d57df2e50d90fdb93f23ae7b112dc5afbca (diff) | |
download | bazelbuild-rules_pkg-76f5651ed90209ffb9eff40fef3cee19a1f1e8a3.tar.gz |
Make the .bzl files available as input to a bzl_library (#567)
* Make the .bzl files available as input to a bzl_library, without having to resort to the invasivness of a shadow tree of just the .bzl files without the other distributable files.
-rw-r--r-- | doc_build/BUILD | 15 | ||||
-rw-r--r-- | pkg/BUILD | 22 | ||||
-rw-r--r-- | pkg/private/BUILD | 6 | ||||
-rw-r--r-- | pkg/private/deb/BUILD | 6 | ||||
-rw-r--r-- | pkg/private/make_starlark_library.bzl | 35 | ||||
-rw-r--r-- | pkg/private/tar/BUILD | 5 | ||||
-rw-r--r-- | pkg/private/zip/BUILD | 6 | ||||
-rw-r--r-- | pkg/releasing/BUILD | 5 |
8 files changed, 80 insertions, 20 deletions
diff --git a/doc_build/BUILD b/doc_build/BUILD index 12420b9..2b1f772 100644 --- a/doc_build/BUILD +++ b/doc_build/BUILD @@ -115,21 +115,10 @@ bzl_library( name = "rules_pkg_lib", srcs = [ "//:version.bzl", - "//pkg:mappings.bzl", - "//pkg:package_variables.bzl", - "//pkg:path.bzl", - "//pkg:providers.bzl", - "//pkg:rpm.bzl", - "//pkg:rpm_pfg.bzl", - "//pkg/legacy:rpm.bzl", - "//pkg/private:pkg_files.bzl", - "//pkg/private:util.bzl", - "//pkg/private/deb:deb.bzl", - "//pkg/private/tar:tar.bzl", - "//pkg/private/zip:zip.bzl", + "//pkg:bzl_srcs", "@bazel_skylib//lib:paths", ], - visibility = ["//visibility:private"], + visibility = ["//visibility:public"], ) py_binary( @@ -14,6 +14,7 @@ # -*- coding: utf-8 -*- load("@rules_python//python:defs.bzl", "py_binary", "py_library") +load("@rules_pkg//pkg/private:make_starlark_library.bzl", "starlark_library") package(default_applicable_licenses = ["//:license"]) @@ -42,7 +43,24 @@ filegroup( "//pkg/legacy:standard_package", "//pkg/rpm:standard_package", ], - visibility = ["//distro:__pkg__"], + visibility = [ + "//distro:__pkg__", + "//pkg:__pkg__", + ], +) + +starlark_library( + name = "bzl_srcs", + srcs = [ + ":standard_package", + "//pkg:pkg.bzl", + "//pkg/private:standard_package", + "//pkg/private/deb:standard_package", + "//pkg/private/tar:standard_package", + "//pkg/private/zip:standard_package", + "//pkg/releasing:standard_package", + ], + visibility = ["//visibility:public"], ) # Used by pkg_rpm in rpm.bzl. @@ -57,8 +75,8 @@ py_binary( }), visibility = ["//visibility:public"], deps = [ - "//pkg/private:archive", "//pkg:make_rpm_lib", + "//pkg/private:archive", ], ) diff --git a/pkg/private/BUILD b/pkg/private/BUILD index 87ac369..f782d16 100644 --- a/pkg/private/BUILD +++ b/pkg/private/BUILD @@ -29,7 +29,10 @@ filegroup( "*.bzl", "*.py", ]), - visibility = ["//distro:__pkg__"], + visibility = [ + "//distro:__pkg__", + "//pkg:__pkg__", + ], ) exports_files( @@ -39,6 +42,7 @@ exports_files( visibility = [ "//distro:__pkg__", "//doc_build:__pkg__", + "//pkg:__pkg__", ], ) diff --git a/pkg/private/deb/BUILD b/pkg/private/deb/BUILD index 43e26be..7c14cdb 100644 --- a/pkg/private/deb/BUILD +++ b/pkg/private/deb/BUILD @@ -28,7 +28,10 @@ filegroup( "*.bzl", "*.py", ]), - visibility = ["//distro:__pkg__"], + visibility = [ + "//distro:__pkg__", + "//pkg:__pkg__", + ], ) exports_files( @@ -38,6 +41,7 @@ exports_files( visibility = [ "//distro:__pkg__", "//doc_build:__pkg__", + "//pkg:__pkg__", ], ) diff --git a/pkg/private/make_starlark_library.bzl b/pkg/private/make_starlark_library.bzl new file mode 100644 index 0000000..c6b0dee --- /dev/null +++ b/pkg/private/make_starlark_library.bzl @@ -0,0 +1,35 @@ +"""Turn a label_list of mixed sources and bzl_library's into a bzl_library. + +The sources can be anything. Only the ones that end in ".bzl" will be added. +""" + +load("@bazel_skylib//:bzl_library.bzl", "StarlarkLibraryInfo") + +def _make_starlark_library(ctx): + direct = [] + transitive = [] + for src in ctx.attr.srcs: + if StarlarkLibraryInfo in src: + transitive.append(src[StarlarkLibraryInfo]) + else: + for file in src[DefaultInfo].files.to_list(): + if file.path.endswith(".bzl"): + # print(file.path) + direct.append(file) + all_files = depset(direct, transitive = transitive) + return [ + DefaultInfo(files = all_files, runfiles = ctx.runfiles(transitive_files = all_files)), + StarlarkLibraryInfo(srcs = direct, transitive_srcs = all_files), + ] + +starlark_library = rule( + implementation = _make_starlark_library, + attrs = { + "srcs": attr.label_list( + doc = "Any mix of source files. Only .bzl files will be used.", + allow_files = True, + cfg = "exec", + mandatory = True, + ), + }, +) diff --git a/pkg/private/tar/BUILD b/pkg/private/tar/BUILD index 0717eae..fb9ab50 100644 --- a/pkg/private/tar/BUILD +++ b/pkg/private/tar/BUILD @@ -28,7 +28,10 @@ filegroup( "*.bzl", "*.py", ]), - visibility = ["//distro:__pkg__"], + visibility = [ + "//distro:__pkg__", + "//pkg:__pkg__", + ], ) exports_files( diff --git a/pkg/private/zip/BUILD b/pkg/private/zip/BUILD index 0ff8d5c..eba4709 100644 --- a/pkg/private/zip/BUILD +++ b/pkg/private/zip/BUILD @@ -28,7 +28,10 @@ filegroup( "*.bzl", "*.py", ]), - visibility = ["//distro:__pkg__"], + visibility = [ + "//distro:__pkg__", + "//pkg:__pkg__", + ], ) exports_files( @@ -38,6 +41,7 @@ exports_files( visibility = [ "//distro:__pkg__", "//doc_build:__pkg__", + "//pkg:__pkg__", ], ) diff --git a/pkg/releasing/BUILD b/pkg/releasing/BUILD index b2c3738..2a38667 100644 --- a/pkg/releasing/BUILD +++ b/pkg/releasing/BUILD @@ -24,7 +24,10 @@ filegroup( "*.bzl", "*.py", ]), - visibility = ["//distro:__pkg__"], + visibility = [ + "//distro:__pkg__", + "//pkg:__pkg__", + ], ) py_library( |