]> code.ossystems Code Review - meta-freescale.git/commitdiff
optee[-imx]: update recipes to use python3
authorAndrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Wed, 22 Jan 2020 10:53:13 +0000 (10:53 +0000)
committerOtavio Salvador <otavio@ossystems.com.br>
Thu, 23 Jan 2020 20:51:00 +0000 (17:51 -0300)
Since Python2 is dropped in oe-core and classes are not available
anymore, optee components should be updated to utilize python3.

optee-os recipe received an additionl patch to re-target the Python
version in the source tree to python3.

Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
recipes-security/optee-imx/optee-client_3.2.0.imx.bb
recipes-security/optee-imx/optee-os/0001-scripts-update-scripts-to-use-python3.patch [new file with mode: 0644]
recipes-security/optee-imx/optee-os_3.2.0.imx.bb
recipes-security/optee-imx/optee-test_3.2.0.imx.bb
recipes-security/optee/optee-client-qoriq.bb
recipes-security/optee/optee-os-qoriq_git.bb
recipes-security/optee/optee-test-qoriq_git.bb

index 4fed4c104ca10ccfde998a28f8bcf6b726716068..f7b22e1a445eaf10a54c42c58bcaa447ed37f761 100644 (file)
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.optee.org/"
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=69663ab153298557a59c67a60a743e5b"
 
-inherit pythonnative systemd
+inherit python3native systemd
 
 SRCBRANCH = "imx_4.19.35_1.1.0"
 OPTEE_CLIENT_SRC ?= "git://source.codeaurora.org/external/imx/imx-optee-client.git;protocol=https"
diff --git a/recipes-security/optee-imx/optee-os/0001-scripts-update-scripts-to-use-python3.patch b/recipes-security/optee-imx/optee-os/0001-scripts-update-scripts-to-use-python3.patch
new file mode 100644 (file)
index 0000000..9621cf6
--- /dev/null
@@ -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
+
index c5328c9c77d49449fca6a3acdf648208019b82b9..be07f0ef3bcfd6bdcc5dfc12bf809afbe28a1aa7 100644 (file)
@@ -6,12 +6,16 @@ HOMEPAGE = "http://www.optee.org/"
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=69663ab153298557a59c67a60a743e5b"
 
-inherit deploy pythonnative autotools
-DEPENDS = "python-pycrypto-native u-boot-mkimage-native"
+inherit deploy python3native autotools
+DEPENDS = "python3-pycrypto-native u-boot-mkimage-native"
 
 SRCBRANCH = "imx_4.19.35_1.1.0"
 OPTEE_OS_SRC ?= "git://source.codeaurora.org/external/imx/imx-optee-os.git;protocol=https"
-SRC_URI = "${OPTEE_OS_SRC};branch=${SRCBRANCH}"
+SRC_URI = "\
+       ${OPTEE_OS_SRC};branch=${SRCBRANCH} \
+       file://0001-scripts-update-scripts-to-use-python3.patch \
+"
+
 SRCREV = "6a22e6e8a2840b245808527679f3397b7e620b3c"
 
 S = "${WORKDIR}/git"
index 8b1c232e89283dd4a50eee06d83b011d28ae0e9b..e36f33558aabc001eb8da6149828f7d6944b6549 100644 (file)
@@ -7,7 +7,7 @@ LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=daa2bcccc666345ab8940aab1315a4fa"
 
 DEPENDS = "optee-os optee-client python-pycrypto-native openssl"
-inherit pythonnative
+inherit python3native
 
 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 
index 4d1caa16e415d329b7086e003473cc02c403b893..af5fc095e6cd2941a49be963bdfa4b0b7692e4fa 100644 (file)
@@ -4,7 +4,7 @@ HOMEPAGE = "https://github.com/qoriq-open-source/optee_client"
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=69663ab153298557a59c67a60a743e5b"
 
-inherit pythonnative systemd
+inherit python3native systemd
 
 SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/optee_client;nobranch=1 \
 "
index fbde261609f2dd1167c4e92a1ff767f469a77a52..8b3159d69049c55e2edbf4733f0c872de8306e2b 100644 (file)
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=69663ab153298557a59c67a60a743e5b"
 
 DEPENDS = "python-pycrypto-native"
 
-inherit deploy pythonnative
+inherit deploy python3native
 
 SRCREV = "4e8d2e5307b99a91a0cac3ea3560ecb7d62898d6"
 SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/optee_os;nobranch=1 \
index 1c6ca22e2a127e0af4cba243b3b16014fc1731af..7aea24f9d82066112e9c963550e980b44dfb03c8 100644 (file)
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://${S}/LICENSE.md;md5=daa2bcccc666345ab8940aab1315a4fa"
 
 DEPENDS = "optee-client-qoriq optee-os-qoriq python-pycrypto-native"
 
-inherit pythonnative
+inherit python3native
 
 SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/optee_test;nobranch=1 \
     file://0001-fix-build-failure-with-GCC-9.patch \