Reputation: 2460
I make Android N or P project on QCOM platform first time, it fails immediately with errors as follow:
[ 0% 106/102275] build out/target/product/XXXX/abl.elf FAILED: out/target/product/XXXX/abl.elf /bin/bash -c "make -j4 -C bootable/bootloader/edk2 BOOTLOADER_OUT=../../../out/target/product/XXXX/obj/ABL_OBJ all BUILD_SYSTEM_ROOT_IMAGE=1 VERIFIED_BOOT=0 VERIFIED_BOOT_2=1 VERIFIED_BOOT_LE=0 USER_BUILD_VARIANT=0 DISABLE_PARALLEL_DOWNLOAD_FLASH=0 CLANG_BIN=/home/abc/3tb_volume/projects/PROJECT_QP/vendor/qcom/proprietary/llvm-arm-toolchain-ship/6.0/bin/ CLANG_PREFIX=/home/abc/3tb_volume/projects/PROJECT_QP/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android- ABL_USE_SDLLVM=true ABL_SAFESTACK=true SAFESTACK_SUPPORTED_CLANG_VERSION=6.0 CLANG_GCC_TOOLCHAIN=/home/abc/3tb_volume/projects/PROJECT_QP/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 TARGET_ARCHITECTURE=AARCH64 BOARD_BOOTLOADER_PRODUCT_NAME=XXXX"
...
make[1]: * read jobs pipe: Bad file descriptor. Stop. make[1]: * Waiting for unfinished jobs.... make[1]: Leaving directory '/home/abc/3tb_volume/projects/PROJECT_QP/out/target/product/XXXX/obj/ABL_OBJ/Build/DEBUG_CLANG35/AARCH64/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm'
build.py... : error 7000: Failed to execute command make tbuild [/home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/../../../out/target/product/XXXX/obj/ABL_OBJ/Build/DEBUG_CLANG35/AARCH64/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm]
build.py... : error F002: Failed to build module /home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf [AARCH64, CLANG35, DEBUG]
make: *** [makefile:133: ABL_FV_IMG] Error 1 make: Leaving directory '/home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2' [ 0% 109/102275] target thumb C++: memory_replay_tests_32 <= system/extras/memory_replay/Action.cpp ninja: build stopped: subcommand failed. 11:08:40 ninja failed with: exit status 1
failed to build some targets (01:23 (mm:ss))I have checked the "bootable/bootloader/edk2" directory with command: . edksetup.sh
The result is OK!
abc@abc:~/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2$ . edksetup.sh Loading previous configuration from /home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/Conf/BuildEnv.sh WORKSPACE: /home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2 EDK_TOOLS_PATH: /home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/BaseTools CONF_PATH: /home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/Con
Upvotes: 0
Views: 1794
Reputation: 66
I ran into this issue as well. I found the solution here: https://patchwork.kernel.org/patch/10780137/ It is not the same code but the problem is the exact same problem.
The issue is that the command is expecting to inherit file descriptors from previous commands, but by default in make this does not happen. So you need to add the '+' to that line in the edk2 makefile Here is the patch I used to get it to work:
--- a/makefile 2019-09-25 13:00:28.064160817 -0500
+++ b/makefile 2019-09-25 13:00:34.957369325 -0500
@@ -129,7 +129,7 @@
$(MAKEPATH)make -C $(EDK_TOOLS) $(PREBUILT_HOST_TOOLS) -j1
ABL_FV_IMG: EDK_TOOLS_BIN
- @. ./edksetup.sh BaseTools && \
+ +@. ./edksetup.sh BaseTools && \
build -p $(WORKSPACE)/QcomModulePkg/QcomModulePkg.dsc \
-a $(ARCHITECTURE) \
-t $(TARGET_TOOLS) \
Upvotes: 1