| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- # Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- # Exceptions. See /LICENSE for license information.
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- """Rule to create variables for package naming."""
- load("@rules_pkg//pkg:providers.bzl", "PackageVariablesInfo")
- load("@rules_pkg//pkg:tar.bzl", "pkg_tar")
- load("@rules_python//python:defs.bzl", "py_test")
- load("//bazel/version:compute_version.bzl", "VERSION_ATTRS", "compute_version")
- def _pkg_naming_variables_impl(ctx):
- # TODO: Add support for digging the target CPU out of the toolchain here,
- # remapping it to a more canonical name, and add that to the variables. The
- # Bazel target CPU is already directly available, but it isn't likely
- # canonical.
- # TODO: Include the target OS as well as the target CPU. This likely needs
- # similar re-mapping as the CPU does.
- return PackageVariablesInfo(values = {
- "version": compute_version(ctx),
- })
- pkg_naming_variables = rule(
- implementation = _pkg_naming_variables_impl,
- attrs = VERSION_ATTRS,
- )
- def pkg_tar_and_test(name_base, package_file_name_base, install_data_manifest, **kwargs):
- """Create a `pkg_tar` and a test for both `.tar` and `.tar.gz` extensions.
- Args:
- name_base:
- The base name of the rules and tests. Will have `tar` or `tar_gz` added
- and then `_rule` for the `pkg_tar` and `_test` for the test.
- package_file_name_base:
- The base of the `package_file_name` attribute to `pkg_tar`. The file
- extensions will be appended after a `.`.
- install_data_manifest:
- The install data manifest file to compare with.
- **kwargs:
- Passed to `pkg_tar` for all the rest of its attributes.
- """
- for file_ext in ["tar", "tar.gz"]:
- target_ext = file_ext.replace(".", "_")
- tar_target = name_base + "_" + target_ext + "_rule"
- pkg_tar(
- name = tar_target,
- extension = file_ext,
- package_file_name = package_file_name_base + "." + file_ext,
- # The compressed tar is slow, exclude building and testing that.
- tags = ["manual"] if file_ext == "tar.gz" else [],
- **kwargs
- )
- py_test(
- name = name_base + "_" + target_ext + "_test",
- size = "small",
- srcs = ["toolchain_tar_test.py"],
- data = [":" + tar_target, install_data_manifest],
- env = {
- "INSTALL_DATA_MANIFEST": "$(location {})".format(install_data_manifest),
- "TAR_FILE": "$(location :{})".format(tar_target),
- },
- main = "toolchain_tar_test.py",
- # The compressed tar is slow, exclude building and testing that.
- tags = ["manual"] if file_ext == "tar.gz" else [],
- )
|