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