xref: /aosp_15_r20/build/soong/genrule/Android.bp (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Workerpackage {
2*333d2b36SAndroid Build Coastguard Worker    default_applicable_licenses: ["Android-Apache-2.0"],
3*333d2b36SAndroid Build Coastguard Worker}
4*333d2b36SAndroid Build Coastguard Worker
5*333d2b36SAndroid Build Coastguard Workerbootstrap_go_package {
6*333d2b36SAndroid Build Coastguard Worker    name: "soong-genrule",
7*333d2b36SAndroid Build Coastguard Worker    pkgPath: "android/soong/genrule",
8*333d2b36SAndroid Build Coastguard Worker    deps: [
9*333d2b36SAndroid Build Coastguard Worker        "blueprint",
10*333d2b36SAndroid Build Coastguard Worker        "blueprint-pathtools",
11*333d2b36SAndroid Build Coastguard Worker        "sbox_proto",
12*333d2b36SAndroid Build Coastguard Worker        "soong",
13*333d2b36SAndroid Build Coastguard Worker        "soong-android",
14*333d2b36SAndroid Build Coastguard Worker        "soong-shared",
15*333d2b36SAndroid Build Coastguard Worker    ],
16*333d2b36SAndroid Build Coastguard Worker    srcs: [
17*333d2b36SAndroid Build Coastguard Worker        "allowlists.go",
18*333d2b36SAndroid Build Coastguard Worker        "genrule.go",
19*333d2b36SAndroid Build Coastguard Worker        "locations.go",
20*333d2b36SAndroid Build Coastguard Worker    ],
21*333d2b36SAndroid Build Coastguard Worker    testSrcs: [
22*333d2b36SAndroid Build Coastguard Worker        "genrule_test.go",
23*333d2b36SAndroid Build Coastguard Worker    ],
24*333d2b36SAndroid Build Coastguard Worker    pluginFor: ["soong_build"],
25*333d2b36SAndroid Build Coastguard Worker    // Used by plugins
26*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
27*333d2b36SAndroid Build Coastguard Worker}
28*333d2b36SAndroid Build Coastguard Worker
29*333d2b36SAndroid Build Coastguard Workergenrule {
30*333d2b36SAndroid Build Coastguard Worker    name: "nsjail_genrule_test_input",
31*333d2b36SAndroid Build Coastguard Worker    cmd: "echo nsjail_genrule_test_input > $(out)",
32*333d2b36SAndroid Build Coastguard Worker    out: ["nsjail_genrule_test_input.txt"],
33*333d2b36SAndroid Build Coastguard Worker}
34*333d2b36SAndroid Build Coastguard Worker
35*333d2b36SAndroid Build Coastguard Worker// Pseudo-test that's run on checkbuilds to verify consistent directory
36*333d2b36SAndroid Build Coastguard Worker// structure for genrules using sbox or nsjail.
37*333d2b36SAndroid Build Coastguard Workergenrule_defaults {
38*333d2b36SAndroid Build Coastguard Worker    name: "nsjail_genrule_test_gen_defaults",
39*333d2b36SAndroid Build Coastguard Worker    // verify both relative paths and its contents
40*333d2b36SAndroid Build Coastguard Worker    cmd: "(echo $(out) $(genDir) && sha256sum " +
41*333d2b36SAndroid Build Coastguard Worker        "$(location get_clang_version) " +
42*333d2b36SAndroid Build Coastguard Worker        "$(location py3-cmd) " +
43*333d2b36SAndroid Build Coastguard Worker        "$(location genrule.go) " +
44*333d2b36SAndroid Build Coastguard Worker        "$(location :nsjail_genrule_test_input) " +
45*333d2b36SAndroid Build Coastguard Worker        "$(locations *.go)) | sed 's@\\./@@g' > $(out)",
46*333d2b36SAndroid Build Coastguard Worker    tools: [
47*333d2b36SAndroid Build Coastguard Worker        "get_clang_version", // random tool
48*333d2b36SAndroid Build Coastguard Worker        "py3-cmd", // random prebuilt tool
49*333d2b36SAndroid Build Coastguard Worker    ],
50*333d2b36SAndroid Build Coastguard Worker    tool_files: ["genrule.go"], // random local file
51*333d2b36SAndroid Build Coastguard Worker    srcs: [
52*333d2b36SAndroid Build Coastguard Worker        ":nsjail_genrule_test_input", // random OutputFileProducer
53*333d2b36SAndroid Build Coastguard Worker        "*.go", // random glob
54*333d2b36SAndroid Build Coastguard Worker    ],
55*333d2b36SAndroid Build Coastguard Worker    out: ["nsjail_genrule_test.txt"],
56*333d2b36SAndroid Build Coastguard Worker}
57*333d2b36SAndroid Build Coastguard Worker
58*333d2b36SAndroid Build Coastguard Workergenrule {
59*333d2b36SAndroid Build Coastguard Worker    name: "nsjail_genrule_test_gen_without_nsjail",
60*333d2b36SAndroid Build Coastguard Worker    defaults: ["nsjail_genrule_test_gen_defaults"],
61*333d2b36SAndroid Build Coastguard Worker}
62*333d2b36SAndroid Build Coastguard Worker
63*333d2b36SAndroid Build Coastguard Workergenrule {
64*333d2b36SAndroid Build Coastguard Worker    name: "nsjail_genrule_test_gen_with_nsjail",
65*333d2b36SAndroid Build Coastguard Worker    defaults: ["nsjail_genrule_test_gen_defaults"],
66*333d2b36SAndroid Build Coastguard Worker    use_nsjail: true,
67*333d2b36SAndroid Build Coastguard Worker}
68*333d2b36SAndroid Build Coastguard Worker
69*333d2b36SAndroid Build Coastguard Workergenrule {
70*333d2b36SAndroid Build Coastguard Worker    name: "nsjail_genrule_test",
71*333d2b36SAndroid Build Coastguard Worker    srcs: [
72*333d2b36SAndroid Build Coastguard Worker        ":nsjail_genrule_test_gen_without_nsjail",
73*333d2b36SAndroid Build Coastguard Worker        ":nsjail_genrule_test_gen_with_nsjail",
74*333d2b36SAndroid Build Coastguard Worker    ],
75*333d2b36SAndroid Build Coastguard Worker    cmd: "diff $(in) > $(out)",
76*333d2b36SAndroid Build Coastguard Worker    out: ["nsjail_genrule_test"],
77*333d2b36SAndroid Build Coastguard Worker}
78