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