summaryrefslogtreecommitdiffstats
path: root/meta-rcar-gen3/recipes-bsp/optee
diff options
context:
space:
mode:
authorKhang Nguyen <khang.nguyen.xw@renesas.com>2020-05-04 18:07:55 +0900
committerKhang Nguyen <khang.nguyen.xw@renesas.com>2020-05-04 18:17:34 +0900
commit8999dcbafa3d1cb5349e95caf33485e8d7baf57a (patch)
tree3b107bf10c04850d77f9b7ed2c48f6caac00de6e /meta-rcar-gen3/recipes-bsp/optee
parent008d6ed05548f4f38af831fc0b4b778eec512d9a (diff)
rcar-gen3: Switch to python3
This updates recipes to use Python3 instead of Python2 which is deprecated in Yocto. Signed-off-by: Khang Nguyen <khang.nguyen.xw@renesas.com> Signed-off-by: Takamitsu Honda <takamitsu.honda.pv@renesas.com> Change-Id: Id2594e5bb0e0003b22af8d183bef340587a9c1aa
Diffstat (limited to 'meta-rcar-gen3/recipes-bsp/optee')
-rw-r--r--meta-rcar-gen3/recipes-bsp/optee/optee-client_git.bb2
-rw-r--r--meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-scripts-update-scripts-to-use-python3.patch427
-rw-r--r--meta-rcar-gen3/recipes-bsp/optee/optee-os_git.bb5
3 files changed, 431 insertions, 3 deletions
diff --git a/meta-rcar-gen3/recipes-bsp/optee/optee-client_git.bb b/meta-rcar-gen3/recipes-bsp/optee/optee-client_git.bb
index 0a484e4..0319f21 100644
--- a/meta-rcar-gen3/recipes-bsp/optee/optee-client_git.bb
+++ b/meta-rcar-gen3/recipes-bsp/optee/optee-client_git.bb
@@ -14,7 +14,7 @@ SRC_URI += " \
file://0001-Fix-for-teec_trace.c-snprintf-Werror-format-truncati.patch \
"
-inherit pythonnative systemd
+inherit python3native systemd
SYSTEMD_SERVICE_${PN} = "optee.service"
COMPATIBLE_MACHINE = "salvator-x|h3ulcb|m3ulcb|m3nulcb|ebisu"
diff --git a/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-scripts-update-scripts-to-use-python3.patch b/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-scripts-update-scripts-to-use-python3.patch
new file mode 100644
index 0000000..9621cf6
--- /dev/null
+++ b/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-scripts-update-scripts-to-use-python3.patch
@@ -0,0 +1,427 @@
+From 0d4941123b5a88351f5954f6de00892f85ed5abc Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
+Date: Mon, 20 Jan 2020 22:32:13 +0000
+Subject: [PATCH] scripts: update scripts to use python3
+
+Python2 is deprecated effective Jan. 2020, and is not available in
+several distributions.
+
+Update scripts here to re-target then onto python version 3.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
+---
+ scripts/gen_hashed_bin.py | 282 ++++++++++++++++++++------------------
+ scripts/gen_ld_sects.py | 8 +-
+ scripts/pem_to_pub_c.py | 2 +-
+ scripts/sign.py | 2 +-
+ scripts/symbolize.py | 2 +-
+ scripts/ta_bin_to_c.py | 2 +-
+ scripts/tee_bin_parser.py | 2 +-
+ 7 files changed, 157 insertions(+), 143 deletions(-)
+
+diff --git a/scripts/gen_hashed_bin.py b/scripts/gen_hashed_bin.py
+index 32350a47..a76a62cc 100755
+--- a/scripts/gen_hashed_bin.py
++++ b/scripts/gen_hashed_bin.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # SPDX-License-Identifier: BSD-2-Clause
+ #
+ # Copyright (c) 2014-2017, Linaro Limited
+@@ -14,163 +14,177 @@ import hashlib
+ arch_id = {'arm32': 0, 'arm64': 1}
+ image_id = {'pager': 0, 'paged': 1}
+
++
+ def write_header_v1(outf, init_size, args, paged_size):
+- magic = 0x4554504f # 'OPTE'
+- version = 1;
+- outf.write(struct.pack('<IBBHIIIII', \
+- magic, version, arch_id[args.arch], args.flags, init_size, \
+- args.init_load_addr_hi, args.init_load_addr_lo, \
+- args.init_mem_usage, paged_size))
++ magic = 0x4554504f # 'OPTE'
++ version = 1
++ outf.write(struct.pack('<IBBHIIIII',
++ magic,
++ version,
++ arch_id[args.arch],
++ args.flags,
++ init_size,
++ args.init_load_addr_hi,
++ args.init_load_addr_lo,
++ args.init_mem_usage,
++ paged_size))
++
+
+ def write_header_v2(outf, init_size, args, paged_size):
+- magic = 0x4554504f # 'OPTE'
+- version = 2
+- nb_images = 1 if paged_size == 0 else 2
+- outf.write(struct.pack('<IBBHI', \
+- magic, version, arch_id[args.arch], args.flags, nb_images))
+- outf.write(struct.pack('<IIII', \
+- args.init_load_addr_hi, args.init_load_addr_lo, \
+- image_id['pager'], init_size))
+- if nb_images == 2:
+- outf.write(struct.pack('<IIII', \
+- 0xffffffff, 0xffffffff, image_id['paged'], paged_size))
++ magic = 0x4554504f # 'OPTE'
++ version = 2
++ nb_images = 1 if paged_size == 0 else 2
++ outf.write(struct.pack('<IBBHI', magic, version,
++ arch_id[args.arch], args.flags, nb_images))
++ outf.write(struct.pack('<IIII',
++ args.init_load_addr_hi, args.init_load_addr_lo,
++ image_id['pager'], init_size))
++ if nb_images == 2:
++ outf.write(
++ struct.pack(
++ '<IIII',
++ 0xffffffff,
++ 0xffffffff,
++ image_id['paged'],
++ paged_size))
++
+
+ def append_to(outf, start_offs, in_fname, max_bytes=0xffffffff):
+- #print "Appending %s@0x%x 0x%x bytes at position 0x%x" % \
+- #( in_fname, start_offs, max_bytes, int(outf.tell()) )
+- inf = open(in_fname, 'rb');
+- inf.seek(start_offs)
+- while True :
+- nbytes = min(16 * 1024, max_bytes)
+- if nbytes == 0 :
+- break
+- #print "Reading %s %d bytes" % (in_fname, nbytes)
+- buf = inf.read(nbytes)
+- if not buf :
+- break
+- outf.write(buf)
+- max_bytes -= len(buf)
+- inf.close()
++ inf = open(in_fname, 'rb')
++ inf.seek(start_offs)
++ while True:
++ nbytes = min(16 * 1024, max_bytes)
++ if nbytes == 0:
++ break
++ buf = inf.read(nbytes)
++ if not buf:
++ break
++ outf.write(buf)
++ max_bytes -= len(buf)
++ inf.close()
++
+
+ def append_hashes(outf, in_fname):
+- page_size = 4 * 1024
+-
+- inf = open(in_fname, 'r')
+- while True :
+- page = inf.read(page_size)
+- if len(page) == page_size :
+- #print "Writing hash at position 0x%x" % \
+- #int(outf.tell())
+- outf.write(hashlib.sha256(page).digest())
+- elif len(page) == 0 :
+- break
+- else :
+- print("Error: short read, got " + repr(len(page)))
+- sys.exit(1)
+-
+- inf.close()
++ page_size = 4 * 1024
++
++ inf = open(in_fname, 'rb')
++ while True:
++ page = inf.read(page_size)
++ if len(page) == page_size:
++ outf.write(hashlib.sha256(page).digest())
++ elif len(page) == 0:
++ break
++ else:
++ print("Error: short read, got {}".format(len(page)))
++ sys.exit(1)
++
++ inf.close()
++
+
+ def int_parse(str):
+- return int(str, 0)
++ return int(str, 0)
++
+
+ def get_args():
+- parser = argparse.ArgumentParser()
+- parser.add_argument('--arch', required=True, \
+- choices=arch_id.keys(), \
+- help='Architecture')
++ parser = argparse.ArgumentParser()
++ parser.add_argument('--arch', required=True,
++ choices=list(arch_id.keys()),
++ help='Architecture')
+
+- parser.add_argument('--flags', \
+- type=int, default=0, \
+- help='Flags, currently none defined')
++ parser.add_argument('--flags',
++ type=int, default=0,
++ help='Flags, currently none defined')
+
+- parser.add_argument('--init_size', \
+- required=True, type=int_parse, \
+- help='Size of initialization part of binary')
++ parser.add_argument('--init_size',
++ required=True, type=int_parse,
++ help='Size of initialization part of binary')
+
+- parser.add_argument('--init_load_addr_hi', \
+- type=int_parse, default=0, \
+- help='Upper 32 bits of load address of binary')
++ parser.add_argument('--init_load_addr_hi',
++ type=int_parse, default=0,
++ help='Upper 32 bits of load address of binary')
+
+- parser.add_argument('--init_load_addr_lo', \
+- required=True, type=int_parse, \
+- help='Lower 32 bits of load address of binary')
++ parser.add_argument('--init_load_addr_lo',
++ required=True, type=int_parse,
++ help='Lower 32 bits of load address of binary')
+
+- parser.add_argument('--init_mem_usage', \
+- required=True, type=int_parse, \
+- help='Total amount of used memory when initializing');
++ parser.add_argument('--init_mem_usage',
++ required=True, type=int_parse,
++ help='Total amount of used memory when initializing')
+
+- parser.add_argument('--tee_pager_bin', \
+- required=True, \
+- help='The input tee_pager.bin')
++ parser.add_argument('--tee_pager_bin',
++ required=True,
++ help='The input tee_pager.bin')
+
+- parser.add_argument('--tee_pageable_bin', \
+- required=True, \
+- help='The input tee_pageable.bin')
++ parser.add_argument('--tee_pageable_bin',
++ required=True,
++ help='The input tee_pageable.bin')
+
+- parser.add_argument('--out', \
+- required=False, type=argparse.FileType('wb'), \
+- help='The output tee.bin')
++ parser.add_argument('--out',
++ required=False, type=argparse.FileType('wb'),
++ help='The output tee.bin')
+
+- parser.add_argument('--out_header_v2', \
+- required=False, type=argparse.FileType('wb'), \
+- help='The output tee_header_v2.bin')
++ parser.add_argument('--out_header_v2',
++ required=False, type=argparse.FileType('wb'),
++ help='The output tee_header_v2.bin')
+
+- parser.add_argument('--out_pager_v2', \
+- required=False, type=argparse.FileType('wb'), \
+- help='The output tee_pager_v2.bin')
++ parser.add_argument('--out_pager_v2',
++ required=False, type=argparse.FileType('wb'),
++ help='The output tee_pager_v2.bin')
+
+- parser.add_argument('--out_pageable_v2', \
+- required=False, type=argparse.FileType('wb'), \
+- help='The output tee_pageable_v2.bin')
++ parser.add_argument('--out_pageable_v2',
++ required=False, type=argparse.FileType('wb'),
++ help='The output tee_pageable_v2.bin')
++
++ return parser.parse_args()
+
+- return parser.parse_args();
+
+ def main():
+- args = get_args()
+- init_bin_size = args.init_size
+- tee_pager_fname = args.tee_pager_bin
+- tee_pageable_fname = args.tee_pageable_bin
+- pager_input_size = os.path.getsize(tee_pager_fname);
+- paged_input_size = os.path.getsize(tee_pageable_fname);
+- hash_size = paged_input_size / (4 * 1024) * \
+- hashlib.sha256().digest_size
+-
+- if paged_input_size % (4 * 1024) != 0:
+- print("Error: pageable size not a multiple of 4K:" + \
+- repr(paged_input_size))
+- sys.exit(1)
+-
+- init_size = pager_input_size + \
+- min(init_bin_size, paged_input_size) + \
+- hash_size
+- paged_size = paged_input_size - \
+- min(init_bin_size, paged_input_size)
+-
+- if args.out is not None:
+- outf = args.out
+- write_header_v1(outf, init_size, args, paged_size)
+- append_to(outf, 0, tee_pager_fname)
+- append_to(outf, 0, tee_pageable_fname, init_bin_size)
+- append_hashes(outf, tee_pageable_fname)
+- append_to(outf, init_bin_size, tee_pageable_fname)
+- outf.close()
+-
+- if args.out_header_v2 is not None:
+- outf = args.out_header_v2
+- write_header_v2(outf, init_size, args, paged_size)
+- outf.close()
+-
+- if args.out_pager_v2 is not None:
+- outf = args.out_pager_v2
+- append_to(outf, 0, tee_pager_fname)
+- append_to(outf, 0, tee_pageable_fname, init_bin_size)
+- append_hashes(outf, tee_pageable_fname)
+- outf.close()
+-
+- if args.out_pageable_v2 is not None:
+- outf = args.out_pageable_v2
+- append_to(outf, init_bin_size, tee_pageable_fname)
+- outf.close()
++ args = get_args()
++ init_bin_size = args.init_size
++ tee_pager_fname = args.tee_pager_bin
++ tee_pageable_fname = args.tee_pageable_bin
++ pager_input_size = os.path.getsize(tee_pager_fname)
++ paged_input_size = os.path.getsize(tee_pageable_fname)
++ hash_size = paged_input_size // (4 * 1024) * \
++ hashlib.sha256().digest_size
++
++ if paged_input_size % (4 * 1024) != 0:
++ print("Error: pageable size not a multiple of 4K: {}".format(
++ paged_input_size))
++ sys.exit(1)
++
++ init_size = pager_input_size + \
++ min(init_bin_size, paged_input_size) + \
++ hash_size
++ paged_size = paged_input_size - \
++ min(init_bin_size, paged_input_size)
++
++ if args.out is not None:
++ outf = args.out
++ write_header_v1(outf, init_size, args, paged_size)
++ append_to(outf, 0, tee_pager_fname)
++ append_to(outf, 0, tee_pageable_fname, init_bin_size)
++ append_hashes(outf, tee_pageable_fname)
++ append_to(outf, init_bin_size, tee_pageable_fname)
++ outf.close()
++
++ if args.out_header_v2 is not None:
++ outf = args.out_header_v2
++ write_header_v2(outf, init_size, args, paged_size)
++ outf.close()
++
++ if args.out_pager_v2 is not None:
++ outf = args.out_pager_v2
++ append_to(outf, 0, tee_pager_fname)
++ append_to(outf, 0, tee_pageable_fname, init_bin_size)
++ append_hashes(outf, tee_pageable_fname)
++ outf.close()
++
++ if args.out_pageable_v2 is not None:
++ outf = args.out_pageable_v2
++ append_to(outf, init_bin_size, tee_pageable_fname)
++ outf.close()
++
+
+ if __name__ == "__main__":
+- main()
++ main()
+diff --git a/scripts/gen_ld_sects.py b/scripts/gen_ld_sects.py
+index c5dc3a7b..2bdbb192 100755
+--- a/scripts/gen_ld_sects.py
++++ b/scripts/gen_ld_sects.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # SPDX-License-Identifier: BSD-2-Clause
+ #
+ # Copyright (c) 2017, Linaro Limited
+@@ -8,8 +8,8 @@ import sys
+ import re
+
+ def usage():
+- print "Usage: {0} <section reg exp match> [<skip section>...]".format( \
+- sys.argv[0])
++ print("Usage: {0} <section reg exp match> [<skip section>...]".format( \
++ sys.argv[0]))
+ sys.exit (1)
+
+ def main():
+@@ -55,7 +55,7 @@ def main():
+ if sect_name in skip_sections :
+ continue
+
+- print '\t*({0})'.format(sect_name)
++ print ('\t*({0})'.format(sect_name))
+
+ if __name__ == "__main__":
+ main()
+diff --git a/scripts/pem_to_pub_c.py b/scripts/pem_to_pub_c.py
+index 6b8fa365..0b03d62e 100755
+--- a/scripts/pem_to_pub_c.py
++++ b/scripts/pem_to_pub_c.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # SPDX-License-Identifier: BSD-2-Clause
+ #
+ # Copyright (c) 2015, Linaro Limited
+diff --git a/scripts/sign.py b/scripts/sign.py
+index ad47479b..348b40a2 100755
+--- a/scripts/sign.py
++++ b/scripts/sign.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright (c) 2015, 2017, Linaro Limited
+ #
+diff --git a/scripts/symbolize.py b/scripts/symbolize.py
+index 1eecf758..0e9bd3ed 100755
+--- a/scripts/symbolize.py
++++ b/scripts/symbolize.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # SPDX-License-Identifier: BSD-2-Clause
+ #
+ # Copyright (c) 2017, Linaro Limited
+diff --git a/scripts/ta_bin_to_c.py b/scripts/ta_bin_to_c.py
+index cabddbbd..f325fda0 100755
+--- a/scripts/ta_bin_to_c.py
++++ b/scripts/ta_bin_to_c.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # SPDX-License-Identifier: BSD-2-Clause
+ #
+ # Copyright (c) 2017, Linaro Limited
+diff --git a/scripts/tee_bin_parser.py b/scripts/tee_bin_parser.py
+index 5f7dd3f0..07da5791 100755
+--- a/scripts/tee_bin_parser.py
++++ b/scripts/tee_bin_parser.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # SPDX-License-Identifier: BSD-2-Clause
+ #
+ # Copyright (c) 2016, Linaro Limited
+--
+2.17.1
+
diff --git a/meta-rcar-gen3/recipes-bsp/optee/optee-os_git.bb b/meta-rcar-gen3/recipes-bsp/optee/optee-os_git.bb
index 553174b..90fc18f 100644
--- a/meta-rcar-gen3/recipes-bsp/optee/optee-os_git.bb
+++ b/meta-rcar-gen3/recipes-bsp/optee/optee-os_git.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = " \
PACKAGE_ARCH = "${MACHINE_ARCH}"
-inherit deploy pythonnative
+inherit deploy python3native
PV = "3.1.0+renesas+git${SRCPV}"
@@ -24,12 +24,13 @@ SRC_URI = " \
SRC_URI_append = " \
file://0001-core-define-syscall_t-as-void-void.patch \
+ file://0001-scripts-update-scripts-to-use-python3.patch \
"
COMPATIBLE_MACHINE = "(salvator-x|h3ulcb|m3ulcb|m3nulcb|ebisu)"
PLATFORM = "rcar"
-DEPENDS = "python-pycrypto-native"
+DEPENDS = "python3-pycrypto-native"
export CROSS_COMPILE64="${TARGET_PREFIX}"