xref: /aosp_15_r20/system/apex/apexer/Android.bp (revision 33f3758387333dbd2962d7edbd98681940d895da)
1*33f37583SAndroid Build Coastguard Worker// Copyright (C) 2018 The Android Open Source Project
2*33f37583SAndroid Build Coastguard Worker//
3*33f37583SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*33f37583SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*33f37583SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*33f37583SAndroid Build Coastguard Worker//
7*33f37583SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*33f37583SAndroid Build Coastguard Worker//
9*33f37583SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*33f37583SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*33f37583SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*33f37583SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*33f37583SAndroid Build Coastguard Worker// limitations under the License.
14*33f37583SAndroid Build Coastguard Worker
15*33f37583SAndroid Build Coastguard Workerpackage {
16*33f37583SAndroid Build Coastguard Worker    default_applicable_licenses: ["Android-Apache-2.0"],
17*33f37583SAndroid Build Coastguard Worker}
18*33f37583SAndroid Build Coastguard Worker
19*33f37583SAndroid Build Coastguard Workerapexer_tools = [
20*33f37583SAndroid Build Coastguard Worker    "aapt2",
21*33f37583SAndroid Build Coastguard Worker    "avbtool",
22*33f37583SAndroid Build Coastguard Worker    "conv_apex_manifest",
23*33f37583SAndroid Build Coastguard Worker    "e2fsdroid",
24*33f37583SAndroid Build Coastguard Worker    "mke2fs",
25*33f37583SAndroid Build Coastguard Worker    "resize2fs",
26*33f37583SAndroid Build Coastguard Worker    "sefcontext_compile",
27*33f37583SAndroid Build Coastguard Worker    "zipalign",
28*33f37583SAndroid Build Coastguard Worker    "make_f2fs",
29*33f37583SAndroid Build Coastguard Worker    "sload_f2fs",
30*33f37583SAndroid Build Coastguard Worker    "make_erofs",
31*33f37583SAndroid Build Coastguard Worker    // TODO(b/124476339) apex doesn't follow 'required' dependencies so we need to include this
32*33f37583SAndroid Build Coastguard Worker    // manually for 'avbtool'.
33*33f37583SAndroid Build Coastguard Worker    "fec",
34*33f37583SAndroid Build Coastguard Worker]
35*33f37583SAndroid Build Coastguard Worker
36*33f37583SAndroid Build Coastguard Worker// TODO(b/157110982): cannot specify "required" dependency on go binary
37*33f37583SAndroid Build Coastguard Workerapexer_go_tools = [
38*33f37583SAndroid Build Coastguard Worker    "merge_zips",
39*33f37583SAndroid Build Coastguard Worker    "soong_zip",
40*33f37583SAndroid Build Coastguard Worker]
41*33f37583SAndroid Build Coastguard Worker
42*33f37583SAndroid Build Coastguard Workerpython_library_host {
43*33f37583SAndroid Build Coastguard Worker    name: "apex_manifest",
44*33f37583SAndroid Build Coastguard Worker    srcs: [
45*33f37583SAndroid Build Coastguard Worker        "apex_manifest.py",
46*33f37583SAndroid Build Coastguard Worker    ],
47*33f37583SAndroid Build Coastguard Worker    libs: [
48*33f37583SAndroid Build Coastguard Worker        "apex_manifest_proto",
49*33f37583SAndroid Build Coastguard Worker    ],
50*33f37583SAndroid Build Coastguard Worker}
51*33f37583SAndroid Build Coastguard Worker
52*33f37583SAndroid Build Coastguard Worker// This is a hack to move mke2fs_conf into the current folder for bazel builds.
53*33f37583SAndroid Build Coastguard Worker// Normally bazel would keep it under a system/extras/ext4_utils/ folder.
54*33f37583SAndroid Build Coastguard Workergenrule {
55*33f37583SAndroid Build Coastguard Worker    name: "mke2fs_conf_for_apexer",
56*33f37583SAndroid Build Coastguard Worker    srcs: [":mke2fs_conf"],
57*33f37583SAndroid Build Coastguard Worker    out: ["mke2fs.conf"],
58*33f37583SAndroid Build Coastguard Worker    cmd: "cp $(in) $(out)",
59*33f37583SAndroid Build Coastguard Worker}
60*33f37583SAndroid Build Coastguard Worker
61*33f37583SAndroid Build Coastguard Workerpython_binary_host {
62*33f37583SAndroid Build Coastguard Worker    name: "apexer",
63*33f37583SAndroid Build Coastguard Worker    srcs: [
64*33f37583SAndroid Build Coastguard Worker        "apexer.py",
65*33f37583SAndroid Build Coastguard Worker    ],
66*33f37583SAndroid Build Coastguard Worker    // TODO(b/157625953) mke2fs.conf can't embedded directly.
67*33f37583SAndroid Build Coastguard Worker    data: [
68*33f37583SAndroid Build Coastguard Worker        ":mke2fs_conf_for_apexer",
69*33f37583SAndroid Build Coastguard Worker    ],
70*33f37583SAndroid Build Coastguard Worker    version: {
71*33f37583SAndroid Build Coastguard Worker        py3: {
72*33f37583SAndroid Build Coastguard Worker            embedded_launcher: true,
73*33f37583SAndroid Build Coastguard Worker        },
74*33f37583SAndroid Build Coastguard Worker    },
75*33f37583SAndroid Build Coastguard Worker    libs: [
76*33f37583SAndroid Build Coastguard Worker        "apex_manifest",
77*33f37583SAndroid Build Coastguard Worker        "apex_build_info_proto",
78*33f37583SAndroid Build Coastguard Worker        "manifest_utils",
79*33f37583SAndroid Build Coastguard Worker    ],
80*33f37583SAndroid Build Coastguard Worker    required: apexer_tools,
81*33f37583SAndroid Build Coastguard Worker}
82*33f37583SAndroid Build Coastguard Worker
83*33f37583SAndroid Build Coastguard Workerpython_binary_host {
84*33f37583SAndroid Build Coastguard Worker    name: "conv_apex_manifest",
85*33f37583SAndroid Build Coastguard Worker    srcs: [
86*33f37583SAndroid Build Coastguard Worker        "conv_apex_manifest.py",
87*33f37583SAndroid Build Coastguard Worker    ],
88*33f37583SAndroid Build Coastguard Worker    version: {
89*33f37583SAndroid Build Coastguard Worker        py3: {
90*33f37583SAndroid Build Coastguard Worker            embedded_launcher: true,
91*33f37583SAndroid Build Coastguard Worker        },
92*33f37583SAndroid Build Coastguard Worker    },
93*33f37583SAndroid Build Coastguard Worker    libs: [
94*33f37583SAndroid Build Coastguard Worker        "apex_manifest_proto",
95*33f37583SAndroid Build Coastguard Worker    ],
96*33f37583SAndroid Build Coastguard Worker}
97*33f37583SAndroid Build Coastguard Worker
98*33f37583SAndroid Build Coastguard Worker// TODO(b/148659029): this test can't run in TEST_MAPPING.
99*33f37583SAndroid Build Coastguard Workerpython_test_host {
100*33f37583SAndroid Build Coastguard Worker    name: "apexer_test",
101*33f37583SAndroid Build Coastguard Worker    pkg_path: "apexer_test",
102*33f37583SAndroid Build Coastguard Worker    main: "apexer_test.py",
103*33f37583SAndroid Build Coastguard Worker    srcs: [
104*33f37583SAndroid Build Coastguard Worker        "apexer_test.py",
105*33f37583SAndroid Build Coastguard Worker    ],
106*33f37583SAndroid Build Coastguard Worker    data: [
107*33f37583SAndroid Build Coastguard Worker        ":apexer_test_host_tools",
108*33f37583SAndroid Build Coastguard Worker        "testdata/com.android.example.apex.avbpubkey",
109*33f37583SAndroid Build Coastguard Worker        "testdata/com.android.example.apex.pem",
110*33f37583SAndroid Build Coastguard Worker        "testdata/com.android.example.apex.pk8",
111*33f37583SAndroid Build Coastguard Worker        "testdata/com.android.example.apex.x509.pem",
112*33f37583SAndroid Build Coastguard Worker        "testdata/manifest.json",
113*33f37583SAndroid Build Coastguard Worker    ],
114*33f37583SAndroid Build Coastguard Worker    device_common_data: [
115*33f37583SAndroid Build Coastguard Worker        ":com.android.example.apex",
116*33f37583SAndroid Build Coastguard Worker        ":com.android.example-legacy.apex",
117*33f37583SAndroid Build Coastguard Worker        ":com.android.example-logging_parent.apex",
118*33f37583SAndroid Build Coastguard Worker        ":com.android.example-overridden_package_name.apex",
119*33f37583SAndroid Build Coastguard Worker    ],
120*33f37583SAndroid Build Coastguard Worker    test_suites: ["general-tests"],
121*33f37583SAndroid Build Coastguard Worker    libs: [
122*33f37583SAndroid Build Coastguard Worker        "apex_manifest",
123*33f37583SAndroid Build Coastguard Worker    ],
124*33f37583SAndroid Build Coastguard Worker    version: {
125*33f37583SAndroid Build Coastguard Worker        py3: {
126*33f37583SAndroid Build Coastguard Worker            embedded_launcher: true,
127*33f37583SAndroid Build Coastguard Worker        },
128*33f37583SAndroid Build Coastguard Worker    },
129*33f37583SAndroid Build Coastguard Worker}
130*33f37583SAndroid Build Coastguard Worker
131*33f37583SAndroid Build Coastguard Workerapexer_deps_minus_go_tools = apexer_tools + [
132*33f37583SAndroid Build Coastguard Worker    "apexer",
133*33f37583SAndroid Build Coastguard Worker    "deapexer",
134*33f37583SAndroid Build Coastguard Worker    "debugfs_static",
135*33f37583SAndroid Build Coastguard Worker    "blkid",
136*33f37583SAndroid Build Coastguard Worker    "fsck.erofs",
137*33f37583SAndroid Build Coastguard Worker]
138*33f37583SAndroid Build Coastguard Worker
139*33f37583SAndroid Build Coastguard Workerapexer_deps_tools = apexer_deps_minus_go_tools + apexer_go_tools
140*33f37583SAndroid Build Coastguard Worker
141*33f37583SAndroid Build Coastguard Workergenrule_defaults {
142*33f37583SAndroid Build Coastguard Worker    name: "apexer_test_host_tools_list",
143*33f37583SAndroid Build Coastguard Worker    tools: apexer_deps_tools + [
144*33f37583SAndroid Build Coastguard Worker        "signapk",
145*33f37583SAndroid Build Coastguard Worker    ],
146*33f37583SAndroid Build Coastguard Worker    srcs: [
147*33f37583SAndroid Build Coastguard Worker        ":current_android_jar",
148*33f37583SAndroid Build Coastguard Worker    ],
149*33f37583SAndroid Build Coastguard Worker}
150*33f37583SAndroid Build Coastguard Worker
151*33f37583SAndroid Build Coastguard Workergenrule {
152*33f37583SAndroid Build Coastguard Worker    name: "apexer_test_host_tools",
153*33f37583SAndroid Build Coastguard Worker    srcs: [
154*33f37583SAndroid Build Coastguard Worker        ":current_android_jar",
155*33f37583SAndroid Build Coastguard Worker    ],
156*33f37583SAndroid Build Coastguard Worker    out: ["apexer_test_host_tools.zip"],
157*33f37583SAndroid Build Coastguard Worker    tools: apexer_deps_tools + [
158*33f37583SAndroid Build Coastguard Worker        // To force signapk.jar generated in out/host
159*33f37583SAndroid Build Coastguard Worker        "signapk",
160*33f37583SAndroid Build Coastguard Worker        "bundletool",
161*33f37583SAndroid Build Coastguard Worker    ],
162*33f37583SAndroid Build Coastguard Worker    cmd: "HOST_OUT_BIN=$$(dirname $(location apexer)) && " +
163*33f37583SAndroid Build Coastguard Worker        "HOST_SOONG_OUT=$$(dirname $$HOST_OUT_BIN) && " +
164*33f37583SAndroid Build Coastguard Worker        "SIGNAPK_JAR=$$(find $${HOST_SOONG_OUT}/framework -name \"signapk*\") && " +
165*33f37583SAndroid Build Coastguard Worker        "BUNDLETOOL_JAR=$$(find $${HOST_SOONG_OUT}/framework -name \"bundletool*.jar\") && " +
166*33f37583SAndroid Build Coastguard Worker        "LIBCPLUSPLUS=$$(find $${HOST_SOONG_OUT}/lib64 -name \"libc++.*\") && " +
167*33f37583SAndroid Build Coastguard Worker        "LIBCONSCRYPT_OPENJDK_JNI=$$(find $${HOST_SOONG_OUT}/lib64 -name \"libconscrypt_openjdk_jni.*\") && " +
168*33f37583SAndroid Build Coastguard Worker        "BASE=$(genDir)/binary_files && " +
169*33f37583SAndroid Build Coastguard Worker        "BIN=$$BASE/bin && " +
170*33f37583SAndroid Build Coastguard Worker        "LIB=$$BASE/lib64 && " +
171*33f37583SAndroid Build Coastguard Worker        "mkdir -p $$BIN && " +
172*33f37583SAndroid Build Coastguard Worker        "mkdir -p $$LIB && " +
173*33f37583SAndroid Build Coastguard Worker        "cp $(in) $$BIN && " +
174*33f37583SAndroid Build Coastguard Worker        "cp $(location apexer) $$BIN && " +
175*33f37583SAndroid Build Coastguard Worker        "cp $(location conv_apex_manifest) $$BIN && " +
176*33f37583SAndroid Build Coastguard Worker        "cp $(location deapexer) $$BIN && " +
177*33f37583SAndroid Build Coastguard Worker        "cp $(location avbtool) $$BIN && " +
178*33f37583SAndroid Build Coastguard Worker        "cp $(location aapt2) $$BIN && " +
179*33f37583SAndroid Build Coastguard Worker        "cp $(location e2fsdroid) $$BIN && " +
180*33f37583SAndroid Build Coastguard Worker        "cp $(location make_erofs) $$BIN && " +
181*33f37583SAndroid Build Coastguard Worker        "cp $(location merge_zips) $$BIN && " +
182*33f37583SAndroid Build Coastguard Worker        "cp $(location mke2fs) $$BIN && " +
183*33f37583SAndroid Build Coastguard Worker        "cp $(location resize2fs) $$BIN && " +
184*33f37583SAndroid Build Coastguard Worker        "cp $(location sefcontext_compile) $$BIN && " +
185*33f37583SAndroid Build Coastguard Worker        "cp $(location soong_zip) $$BIN && " +
186*33f37583SAndroid Build Coastguard Worker        "cp $(location fec) $$BIN && " +
187*33f37583SAndroid Build Coastguard Worker        "cp $(location zipalign) $$BIN && " +
188*33f37583SAndroid Build Coastguard Worker        "cp $(location debugfs_static) $$BIN && " +
189*33f37583SAndroid Build Coastguard Worker        "cp $(location blkid) $$BIN && " +
190*33f37583SAndroid Build Coastguard Worker        "cp $(location fsck.erofs) $$BIN && " +
191*33f37583SAndroid Build Coastguard Worker        "cp $$SIGNAPK_JAR $$BIN && " +
192*33f37583SAndroid Build Coastguard Worker        "cp $$BUNDLETOOL_JAR $$BIN && " +
193*33f37583SAndroid Build Coastguard Worker        "cp $$LIBCPLUSPLUS $$LIB && " +
194*33f37583SAndroid Build Coastguard Worker        "cp $$LIBCONSCRYPT_OPENJDK_JNI $$LIB && " +
195*33f37583SAndroid Build Coastguard Worker        "$(location soong_zip) -C $$BASE -D $$BASE -o $(out) && " +
196*33f37583SAndroid Build Coastguard Worker        "rm -rf $$BASE",
197*33f37583SAndroid Build Coastguard Worker}
198