在macos上构建AOSP时,主机输出二进制文件丢失



我正在用M1在macOS Monterey上构建AOSP(12(。总体而言,它运行良好(即使macOS不受官方支持,也能成功生成图像(。

然而,我也在linux机器上为相同的目标构建了相同的树(只是rsync ed文件(,我看到了out/host/$platform/bin文件之间的区别。

以下是linux-x86的文件(129个文件(:

aapt
aapt2
adb
add_img_to_target_files
aftltool
ahat
apex_compression_tool
apexer
apksigner
appcompat.sh
append2simg
aprotoc
assemble_vintf
atest-dev
avbtool
badblocks
bcc
bcc_strip_attr
bit
blk_alloc_to_base_fs
boot_signer
brillo_update_payload
brotli
bsdiff
BugReport
build_image
build_sepolicy
build_super_image
build_verity_metadata
build_verity_tree
care_map_generator
checkfc
check_ota_package_signature
check_partition_sizes
checkpolicy
checkseapp
check_target_files_signatures
check_target_files_vintf
checkvintf
conv_apex_manifest
conv_linker_config
deapexer
debugfs_static
defrag.f2fs
delta_generator
dexdiag
dexdump
dexlist
dump.f2fs
e2fsck
e2fsdroid
fastboot
fc_sort
fec
fec32
find_shareduid_violation
flags_health_check
fsck.f2fs
fs_config
generate_verity_key
host_init_verifier
hprof-conv
idmap2
img2simg
imgdiff
img_from_target_files
incident_report
insertkeys.py
ld.mc
lib
lpdump
lpmake
lpunpack
lz4
make_f2fs
make_f2fs_casefold
make_recovery_patch
mdnsd
merge_target_files
minigzip
mkbootfs
mkbootimg
mke2fs
mke2fs.conf
mkerofsimage.sh
mkf2fsuserimg.sh
mkfs.erofs
mksquashfs
mksquashfsimage.sh
mkuserimg_mke2fs
oatdump
ota_from_target_files
post_process_props
property_info_checker
repack_bootimg
resize2fs
resize.f2fs
secilc
sefcontext_compile
sepolicy-analyze
sepolicy_tests
sgdisk
sign_apex
signapk
sign_target_files_apks
simg2img
sload_f2fs
sqlite3
tinyplay
toybox
treble_sepolicy_tests
tune2fs
tzdatacheck
unpack_bootimg
unwind_info
unwind_reg_info
unwind_symbols
update_host_simulator
update-vndk-list.sh
validatekeymaps
validate_target_files
veridex
verity_signer
verity_verifier
version_policy
viewcompiler
vintffm
zipalign
zopflipng

以下是darwin-x86的文件(77个文件(:

BugReport
aapt2
adb
aprotoc
assemble_vintf
atest-dev
avbtool
badblocks
bcc
bcc_strip_attr
bit
blk_alloc_to_base_fs
boot_signer
brotli
bsdiff
build_image
build_sepolicy
build_super_image
check_partition_sizes
checkfc
checkpolicy
checkseapp
checkvintf
conv_linker_config
deapexer
debugfs_static
defrag.f2fs
dump.f2fs
e2fsck
e2fsdroid
fastboot
fc_sort
fec
flags_health_check
fsck.f2fs
idmap2
imgdiff
incident_report
insertkeys.py
ld.mc
lpdump
lpmake
lz4
make_f2fs
make_f2fs_casefold
mdnsd
minigzip
mkbootfs
mkbootimg
mke2fs
mke2fs.conf
mkf2fsuserimg.sh
mkuserimg_mke2fs
post_process_props
property_info_checker
resize.f2fs
resize2fs
secilc
sefcontext_compile
sepolicy-analyze
sepolicy_tests
sgdisk
signapk
simg2img
sload_f2fs
sqlite3
toybox
treble_sepolicy_tests
tune2fs
tzdatacheck
unpack_bootimg
update-vndk-list.sh
validatekeymaps
version_policy
viewcompiler
vintffm
zopflipng

我在两台机器上使用了相同的命令:mmma,然后使用常规的make来获得这些结果。

因此,make dist在Linux机器上运行良好,但在macOS机器上不运行,因为至少缺少host_init_verifier

可能出了什么问题?

好的,发现了:

  1. otatoolsdarwin(build/make/core/Makefile(上被禁用。

  2. host_init_verifierdarwin:上也被禁用

build/core/definitions.mk:

ifdef TARGET_BUILD_UNBUNDLED
# TODO (b/185624993): Remove the chck on TARGET_BUILD_UNBUNDLED when host_init_verifier can run
# without requiring the HIDL interface map.
$(2): $(1)
else ifneq ($(HOST_OS),darwin)
# Host init verifier doesn't exist on darwin.
$(2): 
$(1) 
$(HOST_INIT_VERIFIER) 
$(call intermediates-dir-for,ETC,passwd_system)/passwd_system 
$(call intermediates-dir-for,ETC,passwd_system_ext)/passwd_system_ext 
$(call intermediates-dir-for,ETC,passwd_vendor)/passwd_vendor 
$(call intermediates-dir-for,ETC,passwd_odm)/passwd_odm 
$(call intermediates-dir-for,ETC,passwd_product)/passwd_product 
$(call intermediates-dir-for,ETC,plat_property_contexts)/plat_property_contexts 
$(call intermediates-dir-for,ETC,system_ext_property_contexts)/system_ext_property_contexts 
$(call intermediates-dir-for,ETC,product_property_contexts)/product_property_contexts 
$(call intermediates-dir-for,ETC,vendor_property_contexts)/vendor_property_contexts 
$(call intermediates-dir-for,ETC,odm_property_contexts)/odm_property_contexts
$(hide) $(HOST_INIT_VERIFIER) 
-p $(call intermediates-dir-for,ETC,passwd_system)/passwd_system 
-p $(call intermediates-dir-for,ETC,passwd_system_ext)/passwd_system_ext 
-p $(call intermediates-dir-for,ETC,passwd_vendor)/passwd_vendor 
-p $(call intermediates-dir-for,ETC,passwd_odm)/passwd_odm 
-p $(call intermediates-dir-for,ETC,passwd_product)/passwd_product 
--property-contexts=$(call intermediates-dir-for,ETC,plat_property_contexts)/plat_property_contexts 
--property-contexts=$(call intermediates-dir-for,ETC,system_ext_property_contexts)/system_ext_property_contexts 
--property-contexts=$(call intermediates-dir-for,ETC,product_property_contexts)/product_property_contexts 
--property-contexts=$(call intermediates-dir-for,ETC,vendor_property_contexts)/vendor_property_contexts 
--property-contexts=$(call intermediates-dir-for,ETC,odm_property_contexts)/odm_property_contexts 
$$<
else
$(2): $(1)
endif
@echo "Copy init script: $$@"
$$(copy-file-to-target)
endef

最新更新