Introduce the below command-line tool: textnotice outputs a NOTICE text file constructed from the license texts of the transitive closure of dependencies. Bug: 68860345 Bug: 151177513 Bug: 151953481 Bug: 213388645 Bug: 210912771 Test: m all Test: m systemlicense Test: m textnotice; out/soong/host/linux-x85/textnotice ... where ... is the path to the .meta_lic file for the system image. In my case if $ export PRODUCT=$(realpath $ANDROID_PRODUCT_OUT --relative-to=$PWD) ... can be expressed as: ${PRODUCT}/gen/META/lic_intermediates/${PRODUCT}/system.img.meta_lic Change-Id: Ia691869fd8e58ef008024f48c23b1a4b4435677a
Libraries shipped inside container with restricted license
Testdata build graph structure:
A restricted licensed library sandwiched between a notice library and a notice binary. The source-code for the libraries needs to be shared when shipped as part of the container with the binaries.
strict digraph {
rankdir=LR;
bin1 [label="bin/bin1.meta_lic\nnotice"];
bin2 [label="bin/bin2.meta_lic\nnotice"];
bin3 [label="bin/bin3.meta_lic\nnotice"];
container [label="container.zip.meta_lic\nnotice"];
libapache [label="lib/libapache.so.meta_lic\nnotice"];
libcxx [label="lib/libc++.so.meta_lic\nnotice"];
libgpl [label="lib/libgpl.so.meta_lic\nrestricted"];
container -> bin1[label="static"];
container -> bin2 [label="static"];
container -> bin3 [label="static"];
container -> libapache [label="static"];
container -> libcxx [label="static"];
container -> libgpl [label="static"];
bin1 -> libcxx [label="dynamic"];
bin2 -> libapache [label="dynamic"];
bin2 -> libcxx [label="dynamic"];
bin3 -> libapache [label="dynamic"];
bin3 -> libcxx [label="dynamic"];
bin3 -> libgpl [label="dynamic"];
libapache -> libcxx [label="dynamic"];
libgpl -> libcxx [label="dynamic"];
{rank=same; container}
}