1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-06-06 02:40:18 +00:00

optee: upgraded recipes to 3.10

The optee recipes were upgraded due to issues booting with 3.8
on qemuarm64-secureboot, which were resolved by the upgrade.
The 3.8 recipes are retained for backwards compatibility.

optee-test and optee-examples were modified to pass a sysroot
to the LIBGCC_LOCATE_CFLAGS parameter, to ensure proper location
of the libgcc library.

Recipes have been renamed to reflect their current version.
As this makes the PV variables redundent, these have been removed.

Patch 0006 has been refreshed to work with 3.10 without fuzzing.
The original copy has been retained for the 3.8 recipes to use.

Change-Id: Iacaba02d64570a790d5cc20eca8be58246e39019
Signed-off-by: Brett Warren <brett.warren@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Brett Warren
2020-10-19 14:23:45 +01:00
committed by Jon Mason
parent a636818415
commit 715c9f8f98
10 changed files with 283 additions and 18 deletions
@@ -0,0 +1,59 @@
SUMMARY = "OP-TEE Client API"
DESCRIPTION = "Open Portable Trusted Execution Environment - Normal World Client side of the TEE"
HOMEPAGE = "https://www.op-tee.org/"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=69663ab153298557a59c67a60a743e5b"
require optee.inc
inherit python3native systemd update-rc.d
SRCREV = "2a77cf88d956c34cb4a1c191bea6113e327f5fe0"
SRC_URI = " \
git://github.com/OP-TEE/optee_client.git \
file://tee-supplicant.service \
file://tee-supplicant.sh \
"
S = "${WORKDIR}/git"
B = "${WORKDIR}/build"
EXTRA_OEMAKE = "O=${B}"
do_compile() {
cd ${S}
oe_runmake
}
do_compile[cleandirs] = "${B}"
do_install() {
cd ${S}
oe_runmake install
install -D -p -m0755 ${B}/export/usr/sbin/tee-supplicant ${D}${sbindir}/tee-supplicant
install -D -p -m0644 ${B}/export/usr/lib/libteec.so.1.0 ${D}${libdir}/libteec.so.1.0
ln -sf libteec.so.1.0 ${D}${libdir}/libteec.so
ln -sf libteec.so.1.0 ${D}${libdir}/libteec.so.1
install -d ${D}${includedir}
install -p -m0644 ${B}/export/usr/include/*.h ${D}${includedir}
install -D -p -m0644 ${WORKDIR}/tee-supplicant.service ${D}${systemd_system_unitdir}/tee-supplicant.service
install -D -p -m0755 ${WORKDIR}/tee-supplicant.sh ${D}${sysconfdir}/init.d/tee-supplicant
sed -i -e s:@sysconfdir@:${sysconfdir}:g \
-e s:@sbindir@:${sbindir}:g \
${D}${systemd_system_unitdir}/tee-supplicant.service \
${D}${sysconfdir}/init.d/tee-supplicant
}
SYSTEMD_SERVICE_${PN} = "tee-supplicant.service"
INITSCRIPT_PACKAGES = "${PN}"
INITSCRIPT_NAME_${PN} = "tee-supplicant"
INITSCRIPT_PARAMS_${PN} = "start 10 1 2 3 4 5 . stop 90 0 6 ."
@@ -5,8 +5,6 @@ HOMEPAGE = "https://www.op-tee.org/"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=69663ab153298557a59c67a60a743e5b"
PV = "3.8.0+git${SRCPV}"
require optee.inc
inherit python3native systemd update-rc.d
@@ -0,0 +1,52 @@
SUMMARY = "OP-TEE examples"
DESCRIPTION = "Open Portable Trusted Execution Environment - Sample Applications"
HOMEPAGE = "https://github.com/linaro-swg/optee_examples"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=cd95ab417e23b94f381dafc453d70c30"
DEPENDS = "optee-client optee-os python3-pycryptodomex-native"
inherit python3native
require optee.inc
SRC_URI = "git://github.com/linaro-swg/optee_examples.git \
file://0001-make-Pass-ldflags-during-link.patch \
"
SRCREV = "c6eb00a9d83bf068a37e4806c97f582bb16e2973"
S = "${WORKDIR}/git"
B = "${WORKDIR}/build"
OPTEE_CLIENT_EXPORT = "${STAGING_DIR_HOST}${prefix}"
TEEC_EXPORT = "${STAGING_DIR_HOST}${prefix}"
TA_DEV_KIT_DIR = "${STAGING_INCDIR}/optee/export-user_ta"
EXTRA_OEMAKE = " TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} \
OPTEE_CLIENT_EXPORT=${OPTEE_CLIENT_EXPORT} \
TEEC_EXPORT=${TEEC_EXPORT} \
HOST_CROSS_COMPILE=${TARGET_PREFIX} \
TA_CROSS_COMPILE=${TARGET_PREFIX} \
LIBGCC_LOCATE_CFLAGS=--sysroot=${STAGING_DIR_HOST} \
V=1 \
OUTPUT_DIR=${B} \
"
do_compile() {
cd ${S}
oe_runmake
}
do_compile[cleandirs] = "${B}"
do_install () {
mkdir -p ${D}${nonarch_base_libdir}/optee_armtz
mkdir -p ${D}${bindir}
install -D -p -m0755 ${B}/ca/* ${D}${bindir}
install -D -p -m0444 ${B}/ta/* ${D}${nonarch_base_libdir}/optee_armtz
}
FILES_${PN} += "${nonarch_base_libdir}/optee_armtz/"
# Imports machine specific configs from staging to build
PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -5,8 +5,6 @@ HOMEPAGE = "https://github.com/linaro-swg/optee_examples"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=cd95ab417e23b94f381dafc453d70c30"
PV = "3.8.0+git${SRCPV}"
DEPENDS = "optee-client optee-os python3-pycryptodomex-native"
inherit python3native
@@ -30,6 +28,7 @@ EXTRA_OEMAKE = " TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} \
TEEC_EXPORT=${TEEC_EXPORT} \
HOST_CROSS_COMPILE=${TARGET_PREFIX} \
TA_CROSS_COMPILE=${TARGET_PREFIX} \
LIBGCC_LOCATE_CFLAGS=--sysroot=${STAGING_DIR_HOST} \
V=1 \
OUTPUT_DIR=${B} \
"
@@ -1,25 +1,22 @@
From 030cd84cf0df1c27355ec02e0226317684897a97 Mon Sep 17 00:00:00 2001
From 017994c477e2d082395460de83a7828d4e7d4b70 Mon Sep 17 00:00:00 2001
From: Joshua Watt <JPEWhacker@gmail.com>
Date: Tue, 26 May 2020 14:38:02 -0500
Subject: [PATCH 6/6] allow setting sysroot for libgcc lookup
Subject: [PATCH] allow setting sysroot for libgcc lookup
---
mk/gcc.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mk/gcc.mk b/mk/gcc.mk
index c53a23b1..330b200a 100644
index adc77a24..e238b9f3 100644
--- a/mk/gcc.mk
+++ b/mk/gcc.mk
@@ -12,7 +12,7 @@ nostdinc$(sm) := -nostdinc -isystem $(shell $(CC$(sm)) \
@@ -13,7 +13,7 @@ nostdinc$(sm) := -nostdinc -isystem $(shell $(CC$(sm)) \
-print-file-name=include 2> /dev/null)
# Get location of libgcc from gcc
-libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
+libgcc$(sm) := $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \
-print-libgcc-file-name 2> /dev/null)
# Define these to something to discover accidental use
--
2.17.1
libstdc++$(sm) := $(shell $(CXX$(sm)) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \
-print-file-name=libstdc++.a 2> /dev/null)
@@ -0,0 +1,25 @@
From 030cd84cf0df1c27355ec02e0226317684897a97 Mon Sep 17 00:00:00 2001
From: Joshua Watt <JPEWhacker@gmail.com>
Date: Tue, 26 May 2020 14:38:02 -0500
Subject: [PATCH 6/6] allow setting sysroot for libgcc lookup
---
mk/gcc.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mk/gcc.mk b/mk/gcc.mk
index c53a23b1..330b200a 100644
--- a/mk/gcc.mk
+++ b/mk/gcc.mk
@@ -12,7 +12,7 @@ nostdinc$(sm) := -nostdinc -isystem $(shell $(CC$(sm)) \
-print-file-name=include 2> /dev/null)
# Get location of libgcc from gcc
-libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
+libgcc$(sm) := $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \
-print-libgcc-file-name 2> /dev/null)
# Define these to something to discover accidental use
--
2.17.1
@@ -0,0 +1,83 @@
SUMMARY = "OP-TEE Trusted OS"
DESCRIPTION = "Open Portable Trusted Execution Environment - Trusted side of the TEE"
HOMEPAGE = "https://www.op-tee.org/"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=c1f21c4f72f372ef38a5a4aee55ec173"
inherit deploy python3native
require optee.inc
DEPENDS = "python3-pycryptodome-native python3-pycryptodomex-native python3-pyelftools-native"
SRCREV = "d1c635434c55b7d75eadf471bde04926bd1e50a7"
SRC_URI = " \
git://github.com/OP-TEE/optee_os.git \
file://0006-allow-setting-sysroot-for-libgcc-lookup.patch \
"
S = "${WORKDIR}/git"
B = "${WORKDIR}/build"
OPTEEMACHINE ?= "${MACHINE}"
OPTEEMACHINE_aarch64_qemuall ?= "vexpress-qemu_armv8a"
OPTEE_ARCH = "null"
OPTEE_ARCH_armv7a = "arm32"
OPTEE_ARCH_aarch64 = "arm64"
OPTEE_CORE = "${@d.getVar('OPTEE_ARCH').upper()}"
EXTRA_OEMAKE = " \
PLATFORM=${OPTEEMACHINE} \
CFG_${OPTEE_CORE}_core=y \
CROSS_COMPILE_core=${HOST_PREFIX} \
CROSS_COMPILE_ta_${OPTEE_ARCH}=${HOST_PREFIX} \
NOWERROR=1 \
V=1 \
ta-targets=ta_${OPTEE_ARCH} \
LIBGCC_LOCATE_CFLAGS=--sysroot=${STAGING_DIR_HOST} \
O=${B} \
"
CFLAGS[unexport] = "1"
LDFLAGS[unexport] = "1"
CPPFLAGS[unexport] = "1"
AS[unexport] = "1"
LD[unexport] = "1"
do_configure[noexec] = "1"
do_compile() {
cd ${S}
oe_runmake all CFG_TEE_TA_LOG_LEVEL=0
}
do_compile[cleandirs] = "${B}"
do_install() {
#install core in firmware
install -d ${D}${nonarch_base_libdir}/firmware/
install -m 644 ${B}/core/*.bin ${D}${nonarch_base_libdir}/firmware/
#install TA devkit
install -d ${D}${includedir}/optee/export-user_ta/
for f in ${B}/export-ta_${OPTEE_ARCH}/* ; do
cp -aR $f ${D}${includedir}/optee/export-user_ta/
done
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
do_deploy() {
install -d ${DEPLOYDIR}/optee
install -m 644 ${D}${nonarch_base_libdir}/firmware/* ${DEPLOYDIR}/optee/
}
addtask deploy before do_build after do_install
SYSROOT_DIRS += "${nonarch_base_libdir}/firmware"
FILES_${PN} = "${nonarch_base_libdir}/firmware/"
FILES_${PN}-dev = "${includedir}/optee/"
INSANE_SKIP_${PN}-dev = "staticdev"
INHIBIT_PACKAGE_STRIP = "1"
@@ -5,8 +5,6 @@ HOMEPAGE = "https://www.op-tee.org/"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=c1f21c4f72f372ef38a5a4aee55ec173"
PV = "3.8.0+git${SRCPV}"
inherit deploy python3native
require optee.inc
@@ -20,7 +18,7 @@ SRC_URI = " \
file://0003-arm64-Disable-outline-atomics-when-compiling.patch \
file://0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch \
file://0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch \
file://0006-allow-setting-sysroot-for-libgcc-lookup.patch \
file://allow-setting-sysroot-for-libgcc-lookup-for-3.8.0.patch\
file://missing-mkdir.patch \
"
@@ -0,0 +1,55 @@
SUMMARY = "OP-TEE sanity testsuite"
DESCRIPTION = "Open Portable Trusted Execution Environment - Test suite"
HOMEPAGE = "https://www.op-tee.org/"
LICENSE = "BSD & GPLv2"
LIC_FILES_CHKSUM = "file://${S}/LICENSE.md;md5=daa2bcccc666345ab8940aab1315a4fa"
inherit python3native
require optee.inc
DEPENDS = "optee-client optee-os python3-pycryptodomex-native"
SRCREV = "30efcbeaf8864d0f2a5c4be593a5411001fab31b"
SRC_URI = "git://github.com/OP-TEE/optee_test.git \
file://0001-host-xtest-Adjust-order-of-including-compiler.h.patch \
"
S = "${WORKDIR}/git"
B = "${WORKDIR}/build"
OPTEE_CLIENT_EXPORT = "${STAGING_DIR_HOST}${prefix}"
TEEC_EXPORT = "${STAGING_DIR_HOST}${prefix}"
TA_DEV_KIT_DIR = "${STAGING_INCDIR}/optee/export-user_ta"
EXTRA_OEMAKE = " TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} \
OPTEE_CLIENT_EXPORT=${OPTEE_CLIENT_EXPORT} \
TEEC_EXPORT=${TEEC_EXPORT} \
CROSS_COMPILE_HOST=${TARGET_PREFIX} \
CROSS_COMPILE_TA=${TARGET_PREFIX} \
LIBGCC_LOCATE_CFLAGS=--sysroot=${STAGING_DIR_HOST} \
V=1 \
O=${B} \
"
do_compile() {
cd ${S}
# Top level makefile doesn't seem to handle parallel make gracefully
oe_runmake xtest
oe_runmake ta
}
do_compile[cleandirs] = "${B}"
do_install () {
install -D -p -m0755 ${B}/xtest/xtest ${D}${bindir}/xtest
# install path should match the value set in optee-client/tee-supplicant
# default TEEC_LOAD_PATH is /lib
mkdir -p ${D}${nonarch_base_libdir}/optee_armtz/
install -D -p -m0444 ${B}/ta/*/*.ta ${D}${nonarch_base_libdir}/optee_armtz/
}
FILES_${PN} += "${nonarch_base_libdir}/optee_armtz/"
# Imports machine specific configs from staging to build
PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -10,8 +10,6 @@ require optee.inc
DEPENDS = "optee-client optee-os python3-pycryptodomex-native"
PV = "3.8.0+git${SRCPV}"
SRCREV = "30481e381cb4285706e7516853495a7699c93b2c"
SRC_URI = "git://github.com/OP-TEE/optee_test.git \
file://0001-host-xtest-Adjust-order-of-including-compiler.h.patch \
@@ -29,6 +27,7 @@ EXTRA_OEMAKE = " TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} \
TEEC_EXPORT=${TEEC_EXPORT} \
CROSS_COMPILE_HOST=${TARGET_PREFIX} \
CROSS_COMPILE_TA=${TARGET_PREFIX} \
LIBGCC_LOCATE_CFLAGS=--sysroot=${STAGING_DIR_HOST} \
V=1 \
O=${B} \
"