From 0d61dde6747dcd21e11a494db86c5cc30e90205f Mon Sep 17 00:00:00 2001 From: Dick Olsson Date: Wed, 22 Jul 2020 07:11:41 +0000 Subject: [PATCH] boot/optee-os: depend on host-python3 Recent versions of OP-TEE depend on Python 3. Currently, OP-TEE is building with the Python interpreter provided by the user. This patch includes an upstream patch that makes the interpreter configurable, and makes use of this configuration with host-python3. Signed-off-by: Dick Olsson Signed-off-by: Thomas Petazzoni --- ...e-ta-Configurable-Python-interpreter.patch | 249 ++++++++++++++++++ boot/optee-os/optee-os.mk | 5 +- 2 files changed, 252 insertions(+), 2 deletions(-) create mode 100644 boot/optee-os/0003-mk-core-ta-Configurable-Python-interpreter.patch diff --git a/boot/optee-os/0003-mk-core-ta-Configurable-Python-interpreter.patch b/boot/optee-os/0003-mk-core-ta-Configurable-Python-interpreter.patch new file mode 100644 index 0000000000..911a09b986 --- /dev/null +++ b/boot/optee-os/0003-mk-core-ta-Configurable-Python-interpreter.patch @@ -0,0 +1,249 @@ +From 49c7d2557d92993a1e09e50c961b9d4f7ab1091b Mon Sep 17 00:00:00 2001 +From: Dick Olsson +Date: Wed, 22 Jul 2020 08:49:12 +0200 +Subject: [PATCH] mk: core: ta: Configurable Python interpreter + +Build systems that manage multiple different python interpreters need +explicit control over which version of the interpreter to use. +This patch enables one to override the default interpreter with the path +to a specific one. + +Signed-off-by: Dick Olsson +Reviewed-by: Jens Wiklander +Reviewed-by: Jerome Forissier +--- + core/arch/arm/arm.mk | 2 ++ + core/arch/arm/kernel/link.mk | 22 +++++++++++----------- + core/sub.mk | 10 +++++----- + mk/config.mk | 6 ++++++ + mk/lib.mk | 2 +- + ta/arch/arm/link.mk | 2 +- + ta/arch/arm/link_shlib.mk | 2 +- + ta/ta.mk | 2 +- + 8 files changed, 28 insertions(+), 20 deletions(-) + +diff --git a/core/arch/arm/arm.mk b/core/arch/arm/arm.mk +index 5c9f16ef..878035c5 100644 +--- a/core/arch/arm/arm.mk ++++ b/core/arch/arm/arm.mk +@@ -245,6 +245,7 @@ ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE32 ?= $$(CROSS_COMPILE)_nl_ + ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE_ta_arm32 ?= $$(CROSS_COMPILE32)_nl_ + ta-mk-file-export-add-ta_arm32 += COMPILER ?= gcc_nl_ + ta-mk-file-export-add-ta_arm32 += COMPILER_ta_arm32 ?= $$(COMPILER)_nl_ ++ta-mk-file-export-add-ta_arm32 += PYTHON3 ?= python3_nl_ + endif + + ifneq ($(filter ta_arm64,$(ta-targets)),) +@@ -275,6 +276,7 @@ ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE64 ?= $$(CROSS_COMPILE)_nl_ + ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE_ta_arm64 ?= $$(CROSS_COMPILE64)_nl_ + ta-mk-file-export-add-ta_arm64 += COMPILER ?= gcc_nl_ + ta-mk-file-export-add-ta_arm64 += COMPILER_ta_arm64 ?= $$(COMPILER)_nl_ ++ta-mk-file-export-add-ta_arm64 += PYTHON3 ?= python3_nl_ + endif + + # Set cross compiler prefix for each TA target +diff --git a/core/arch/arm/kernel/link.mk b/core/arch/arm/kernel/link.mk +index 1b89b895..69375ad6 100644 +--- a/core/arch/arm/kernel/link.mk ++++ b/core/arch/arm/kernel/link.mk +@@ -62,13 +62,13 @@ cleanfiles += $(link-out-dir)/text_unpaged.ld.S + $(link-out-dir)/text_unpaged.ld.S: $(link-out-dir)/unpaged.o + @$(cmd-echo-silent) ' GEN $@' + $(q)$(READELFcore) -S -W $< | \ +- ./scripts/gen_ld_sects.py .text. > $@ ++ $(PYTHON3) ./scripts/gen_ld_sects.py .text. > $@ + + cleanfiles += $(link-out-dir)/rodata_unpaged.ld.S + $(link-out-dir)/rodata_unpaged.ld.S: $(link-out-dir)/unpaged.o + @$(cmd-echo-silent) ' GEN $@' + $(q)$(READELFcore) -S -W $< | \ +- ./scripts/gen_ld_sects.py .rodata. > $@ ++ $(PYTHON3) ./scripts/gen_ld_sects.py .rodata. > $@ + + + cleanfiles += $(link-out-dir)/init_entries.txt +@@ -92,12 +92,12 @@ cleanfiles += $(link-out-dir)/text_init.ld.S + $(link-out-dir)/text_init.ld.S: $(link-out-dir)/init.o + @$(cmd-echo-silent) ' GEN $@' + $(q)$(READELFcore) -S -W $< | \ +- ./scripts/gen_ld_sects.py .text. > $@ ++ $(PYTHON3) ./scripts/gen_ld_sects.py .text. > $@ + + cleanfiles += $(link-out-dir)/rodata_init.ld.S + $(link-out-dir)/rodata_init.ld.S: $(link-out-dir)/init.o + @$(cmd-echo-silent) ' GEN $@' +- $(q)$(READELFcore) -S -W $< | ./scripts/gen_ld_sects.py .rodata. > $@ ++ $(q)$(READELFcore) -S -W $< | $(PYTHON3) ./scripts/gen_ld_sects.py .rodata. > $@ + + -include $(link-script-dep) + +@@ -176,39 +176,39 @@ cleanfiles += $(link-out-dir)/tee-pager.bin + $(link-out-dir)/tee-pager.bin: $(link-out-dir)/tee.elf scripts/gen_tee_bin.py + @echo Warning: $@ is deprecated + @$(cmd-echo-silent) ' GEN $@' +- $(q)scripts/gen_tee_bin.py --input $< --out_tee_pager_bin $@ ++ $(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_tee_pager_bin $@ + + cleanfiles += $(link-out-dir)/tee-pageable.bin + $(link-out-dir)/tee-pageable.bin: $(link-out-dir)/tee.elf scripts/gen_tee_bin.py + @echo Warning: $@ is deprecated + @$(cmd-echo-silent) ' GEN $@' +- $(q)scripts/gen_tee_bin.py --input $< --out_tee_pageable_bin $@ ++ $(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_tee_pageable_bin $@ + + all: $(link-out-dir)/tee.bin + cleanfiles += $(link-out-dir)/tee.bin + $(link-out-dir)/tee.bin: $(link-out-dir)/tee.elf scripts/gen_tee_bin.py + @$(cmd-echo-silent) ' GEN $@' +- $(q)scripts/gen_tee_bin.py --input $< --out_tee_bin $@ ++ $(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_tee_bin $@ + + all: $(link-out-dir)/tee-header_v2.bin + cleanfiles += $(link-out-dir)/tee-header_v2.bin + $(link-out-dir)/tee-header_v2.bin: $(link-out-dir)/tee.elf \ + scripts/gen_tee_bin.py + @$(cmd-echo-silent) ' GEN $@' +- $(q)scripts/gen_tee_bin.py --input $< --out_header_v2 $@ ++ $(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_header_v2 $@ + + all: $(link-out-dir)/tee-pager_v2.bin + cleanfiles += $(link-out-dir)/tee-pager_v2.bin + $(link-out-dir)/tee-pager_v2.bin: $(link-out-dir)/tee.elf scripts/gen_tee_bin.py + @$(cmd-echo-silent) ' GEN $@' +- $(q)scripts/gen_tee_bin.py --input $< --out_pager_v2 $@ ++ $(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_pager_v2 $@ + + all: $(link-out-dir)/tee-pageable_v2.bin + cleanfiles += $(link-out-dir)/tee-pageable_v2.bin + $(link-out-dir)/tee-pageable_v2.bin: $(link-out-dir)/tee.elf \ + scripts/gen_tee_bin.py + @$(cmd-echo-silent) ' GEN $@' +- $(q)scripts/gen_tee_bin.py --input $< --out_pageable_v2 $@ ++ $(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_pageable_v2 $@ + + all: $(link-out-dir)/tee.symb_sizes + cleanfiles += $(link-out-dir)/tee.symb_sizes +@@ -222,5 +222,5 @@ mem_usage: $(link-out-dir)/tee.mem_usage + + $(link-out-dir)/tee.mem_usage: $(link-out-dir)/tee.elf + @$(cmd-echo-silent) ' GEN $@' +- $(q)./scripts/mem_usage.py $< > $@ ++ $(q)$(PYTHON3) ./scripts/mem_usage.py $< > $@ + endif +diff --git a/core/sub.mk b/core/sub.mk +index 03cc6bc7..0959c9a9 100644 +--- a/core/sub.mk ++++ b/core/sub.mk +@@ -9,13 +9,13 @@ ifeq ($(CFG_WITH_USER_TA),y) + gensrcs-y += ta_pub_key + produce-ta_pub_key = ta_pub_key.c + depends-ta_pub_key = $(TA_SIGN_KEY) scripts/pem_to_pub_c.py +-recipe-ta_pub_key = scripts/pem_to_pub_c.py --prefix ta_pub_key \ ++recipe-ta_pub_key = $(PYTHON3) scripts/pem_to_pub_c.py --prefix ta_pub_key \ + --key $(TA_SIGN_KEY) --out $(sub-dir-out)/ta_pub_key.c + + gensrcs-y += ldelf + produce-ldelf = ldelf_hex.c + depends-ldelf = scripts/gen_ldelf_hex.py $(out-dir)/ldelf/ldelf.elf +-recipe-ldelf = scripts/gen_ldelf_hex.py --input $(out-dir)/ldelf/ldelf.elf \ ++recipe-ldelf = $(PYTHON3) scripts/gen_ldelf_hex.py --input $(out-dir)/ldelf/ldelf.elf \ + --output $(sub-dir-out)/ldelf_hex.c + endif + +@@ -25,7 +25,7 @@ early-ta-$1-uuid := $(firstword $(subst ., ,$(notdir $1))) + gensrcs-y += early-ta-$1 + produce-early-ta-$1 = early_ta_$$(early-ta-$1-uuid).c + depends-early-ta-$1 = $1 scripts/ta_bin_to_c.py +-recipe-early-ta-$1 = scripts/ta_bin_to_c.py --compress --ta $1 \ ++recipe-early-ta-$1 = $(PYTHON3) scripts/ta_bin_to_c.py --compress --ta $1 \ + --out $(sub-dir-out)/early_ta_$$(early-ta-$1-uuid).c + endef + $(foreach f, $(EARLY_TA_PATHS), $(eval $(call process_early_ta,$(f)))) +@@ -40,7 +40,7 @@ core-embed-fdt-c = $(out-dir)/$(arch-dir)/dts/$(CFG_EMBED_DTB_SOURCE_FILE:.dts=. + gensrcs-y += embedded_secure_dtb + produce-embedded_secure_dtb = arch/$(ARCH)/dts/$(CFG_EMBED_DTB_SOURCE_FILE:.dts=.c) + depends-embedded_secure_dtb = $(core-embed-fdt-dtb) scripts/bin_to_c.py +-recipe-embedded_secure_dtb = scripts/bin_to_c.py \ ++recipe-embedded_secure_dtb = $(PYTHON3) scripts/bin_to_c.py \ + --bin $(core-embed-fdt-dtb) \ + --vname embedded_secure_dtb \ + --out $(core-embed-fdt-c) +@@ -58,7 +58,7 @@ $(conf-mk-xz-base64): $(conf-mk-file) + gensrcs-y += conf_str + produce-conf_str = conf.mk.xz.base64.c + depends-conf_str = $(conf-mk-xz-base64) +-recipe-conf_str = scripts/bin_to_c.py --text --bin $(conf-mk-xz-base64) \ ++recipe-conf_str = $(PYTHON3) scripts/bin_to_c.py --text --bin $(conf-mk-xz-base64) \ + --out $(sub-dir-out)/conf.mk.xz.base64.c \ + --vname conf_str + endif +diff --git a/mk/config.mk b/mk/config.mk +index 70732c4d..1fe65576 100644 +--- a/mk/config.mk ++++ b/mk/config.mk +@@ -32,6 +32,12 @@ endif + # Supported values: undefined, 1, 2 and 3. 3 gives more warnings. + WARNS ?= 3 + ++# Path to the Python interpreter used by the build system. ++# This variable is set to the default python3 interpreter in the user's ++# path. But build environments that require more explicit control can ++# set the path to a specific interpreter through this variable. ++PYTHON3 ?= python3 ++ + # Define DEBUG=1 to compile without optimization (forces -O0) + # DEBUG=1 + +diff --git a/mk/lib.mk b/mk/lib.mk +index 6e890893..3bd422d6 100644 +--- a/mk/lib.mk ++++ b/mk/lib.mk +@@ -72,7 +72,7 @@ $(lib-shlibstrippedfile): $(lib-shlibfile) + + $(lib-shlibtafile): $(lib-shlibstrippedfile) $(TA_SIGN_KEY) + @$(cmd-echo-silent) ' SIGN $$@' +- $$(q)$$(SIGN) --key $(TA_SIGN_KEY) --uuid $(libuuid) --in $$< --out $$@ ++ $$(q)$$(PYTHON3) $$(SIGN) --key $(TA_SIGN_KEY) --uuid $(libuuid) --in $$< --out $$@ + + $(lib-libuuidln): $(lib-shlibfile) + @$(cmd-echo-silent) ' LN $$@' +diff --git a/ta/arch/arm/link.mk b/ta/arch/arm/link.mk +index db7d0b9a..b95c0cba 100644 +--- a/ta/arch/arm/link.mk ++++ b/ta/arch/arm/link.mk +@@ -2,7 +2,7 @@ link-script$(sm) = $(ta-dev-kit-dir$(sm))/src/ta.ld.S + link-script-pp$(sm) = $(link-out-dir$(sm))/ta.lds + link-script-dep$(sm) = $(link-out-dir$(sm))/.ta.ld.d + +-SIGN_ENC ?= $(ta-dev-kit-dir$(sm))/scripts/sign_encrypt.py ++SIGN_ENC ?= $(PYTHON3) $(ta-dev-kit-dir$(sm))/scripts/sign_encrypt.py + TA_SIGN_KEY ?= $(ta-dev-kit-dir$(sm))/keys/default_ta.pem + + ifeq ($(CFG_ENCRYPT_TA),y) +diff --git a/ta/arch/arm/link_shlib.mk b/ta/arch/arm/link_shlib.mk +index ed81e59a..cc177ef0 100644 +--- a/ta/arch/arm/link_shlib.mk ++++ b/ta/arch/arm/link_shlib.mk +@@ -47,5 +47,5 @@ $(link-out-dir)/$(shlibuuid).elf: $(link-out-dir)/$(shlibname).so + $(link-out-dir)/$(shlibuuid).ta: $(link-out-dir)/$(shlibname).stripped.so \ + $(TA_SIGN_KEY) + @$(cmd-echo-silent) ' SIGN $@' +- $(q)$(SIGN) --key $(TA_SIGN_KEY) --uuid $(shlibuuid) \ ++ $(q)$(PYTHON3) $(SIGN) --key $(TA_SIGN_KEY) --uuid $(shlibuuid) \ + --in $< --out $@ +diff --git a/ta/ta.mk b/ta/ta.mk +index 918880f4..59ed87f7 100644 +--- a/ta/ta.mk ++++ b/ta/ta.mk +@@ -67,7 +67,7 @@ $$(arm32-user-sysregs-out)/$$(arm32-user-sysregs-$(1)-h): \ + $(1) scripts/arm32_sysreg.py + @$(cmd-echo-silent) ' GEN $$@' + $(q)mkdir -p $$(dir $$@) +- $(q)scripts/arm32_sysreg.py --guard __$$(arm32-user-sysregs-$(1)-h) \ ++ $(q)$(PYTHON3) scripts/arm32_sysreg.py --guard __$$(arm32-user-sysregs-$(1)-h) \ + < $$< > $$@ + + endef #process-arm32-user-sysreg +-- +2.20.1 + diff --git a/boot/optee-os/optee-os.mk b/boot/optee-os/optee-os.mk index c6d1bbd48a..03ce08ffb2 100644 --- a/boot/optee-os/optee-os.mk +++ b/boot/optee-os/optee-os.mk @@ -21,7 +21,7 @@ else OPTEE_OS_SITE = $(call github,OP-TEE,optee_os,$(OPTEE_OS_VERSION)) endif -OPTEE_OS_DEPENDENCIES = host-openssl host-python-pycryptodomex host-python-pyelftools +OPTEE_OS_DEPENDENCIES = host-openssl host-python3 host-python3-pycryptodomex host-python3-pyelftools # On 64bit targets, OP-TEE OS can be built in 32bit mode, or # can be built in 64bit mode and support 32bit and 64bit @@ -32,7 +32,8 @@ OPTEE_OS_MAKE_OPTS = \ CROSS_COMPILE="$(TARGET_CROSS)" \ CROSS_COMPILE_core="$(TARGET_CROSS)" \ CROSS_COMPILE_ta_arm64="$(TARGET_CROSS)" \ - CROSS_COMPILE_ta_arm32="$(TARGET_CROSS)" + CROSS_COMPILE_ta_arm32="$(TARGET_CROSS)" \ + PYTHON3="$(HOST_DIR)/bin/python3" ifeq ($(BR2_aarch64),y) OPTEE_OS_MAKE_OPTS += \ -- 2.30.2