xref: /aosp_15_r20/external/bazelbuild-rules_license/examples/src/BUILD (revision f578df4fd057ffe2023728444759535685631548)
1*f578df4fSJingwen Chen# Copyright 2022 Google LLC
2*f578df4fSJingwen Chen#
3*f578df4fSJingwen Chen# Licensed under the Apache License, Version 2.0 (the "License");
4*f578df4fSJingwen Chen# you may not use this file except in compliance with the License.
5*f578df4fSJingwen Chen# You may obtain a copy of the License at
6*f578df4fSJingwen Chen#
7*f578df4fSJingwen Chen# https://www.apache.org/licenses/LICENSE-2.0
8*f578df4fSJingwen Chen#
9*f578df4fSJingwen Chen# Unless required by applicable law or agreed to in writing, software
10*f578df4fSJingwen Chen# distributed under the License is distributed on an "AS IS" BASIS,
11*f578df4fSJingwen Chen# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*f578df4fSJingwen Chen# See the License for the specific language governing permissions and
13*f578df4fSJingwen Chen# limitations under the License.
14*f578df4fSJingwen Chen# Examples of applications and interactions with licenses
15*f578df4fSJingwen Chen
16*f578df4fSJingwen Chenload("@rules_license//rules:compliance.bzl", "check_license", "licenses_used")
17*f578df4fSJingwen Chenload("@rules_license//examples/vndor/constant_gen:defs.bzl", "constant_gen")
18*f578df4fSJingwen Chen
19*f578df4fSJingwen Chenpackage(
20*f578df4fSJingwen Chen    default_package_metadata = ["//:license", "//:package_info"],
21*f578df4fSJingwen Chen    default_visibility = ["//examples:__subpackages__"],
22*f578df4fSJingwen Chen)
23*f578df4fSJingwen Chen
24*f578df4fSJingwen Chencc_binary(
25*f578df4fSJingwen Chen    name = "my_server",
26*f578df4fSJingwen Chen    srcs = ["server.cc"],
27*f578df4fSJingwen Chen    deps = [":message"],
28*f578df4fSJingwen Chen)
29*f578df4fSJingwen Chen
30*f578df4fSJingwen Chen# Sample
31*f578df4fSJingwen Chenconstant_gen(
32*f578df4fSJingwen Chen    name = "message",
33*f578df4fSJingwen Chen    text = "Hello, world.",
34*f578df4fSJingwen Chen    var = "server_message",
35*f578df4fSJingwen Chen)
36*f578df4fSJingwen Chen
37*f578df4fSJingwen Chen# TODO(aiuto): Turn this strictly into a compliance test.
38*f578df4fSJingwen Chencheck_license(
39*f578df4fSJingwen Chen    name = "check_server",
40*f578df4fSJingwen Chen    check_conditions = False,
41*f578df4fSJingwen Chen    license_texts = "server_licenses.txt",
42*f578df4fSJingwen Chen    report = "server_report.txt",
43*f578df4fSJingwen Chen    deps = [
44*f578df4fSJingwen Chen        ":my_server",
45*f578df4fSJingwen Chen    ],
46*f578df4fSJingwen Chen)
47*f578df4fSJingwen Chen
48*f578df4fSJingwen Chen#
49*f578df4fSJingwen Chen# Verify the licenses are what we expect. The golden output shows that
50*f578df4fSJingwen Chen# :my_server only uses the unencumbered license type.
51*f578df4fSJingwen Chen
52*f578df4fSJingwen Chenlicenses_used(
53*f578df4fSJingwen Chen    name = "server_licenses",
54*f578df4fSJingwen Chen    out = "server_licenses.json",
55*f578df4fSJingwen Chen    deps = [":my_server"],
56*f578df4fSJingwen Chen)
57*f578df4fSJingwen Chen
58*f578df4fSJingwen Chenpy_test(
59*f578df4fSJingwen Chen    name = "server_licenses_test",
60*f578df4fSJingwen Chen    srcs = ["server_licenses_test.py"],
61*f578df4fSJingwen Chen    data = [":server_licenses.json"],
62*f578df4fSJingwen Chen    python_version = "PY3",
63*f578df4fSJingwen Chen    deps = [
64*f578df4fSJingwen Chen        "@rules_license//tests:license_test_utils",
65*f578df4fSJingwen Chen    ],
66*f578df4fSJingwen Chen)
67*f578df4fSJingwen Chen
68*f578df4fSJingwen Chen# This server uses something under a restricted license
69*f578df4fSJingwen Chencc_binary(
70*f578df4fSJingwen Chen    name = "my_violating_server",
71*f578df4fSJingwen Chen    srcs = ["server.cc"],
72*f578df4fSJingwen Chen    deps = [
73*f578df4fSJingwen Chen        ":message",
74*f578df4fSJingwen Chen        "@rules_license//examples/vndor/acme",
75*f578df4fSJingwen Chen        "@rules_license//examples/vndor/libhhgttg",
76*f578df4fSJingwen Chen    ],
77*f578df4fSJingwen Chen)
78