From patchwork Tue Dec 21 08:42:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Stephan X-Patchwork-Id: 1761 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0DB9AC433EF for ; Tue, 21 Dec 2021 08:43:08 +0000 (UTC) Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by mx.groups.io with SMTP id smtpd.web08.3592.1640076186154686759 for ; Tue, 21 Dec 2021 00:43:06 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b=Uh5AfNWH; spf=pass (domain: baylibre.com, ip: 209.85.128.42, mailfrom: jstephan@baylibre.com) Received: by mail-wm1-f42.google.com with SMTP id b73so8572620wmd.0 for ; Tue, 21 Dec 2021 00:43:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=gb52hKqQ/gsP2nhVrwDcp2lMM/RcVAeq7koUVicEiec=; b=Uh5AfNWHQaisIl598HYSsd3+b0tg+pP0GPkeXxSkczPal80myDhtpFYXBPkOR3IRsR 044TyAMtutC8KbysDFLS8iG9rdPHo7j7TbHHsnZR5z3TPqDKM826DqYOf710Y1d8VfGB Y7PrS1UQC+6UNl7qD0Ij0HBOSf0b+ET8D8XWj2W2riUc9WlmHfi9RauAZbzBhEW3c09f me8fI8VzBRgW+YMJZsC8yKTHLOuEL65SpKQCbwV94f4EIK3ZxCURBQCD+rmcYrUpwlQV JEmi47f8LjCywfFbmeHRGzwW8WNdvIX2G5DOmnOnClBBhB2aS9cB9JXqYWeafkkjjt2g Iofw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=gb52hKqQ/gsP2nhVrwDcp2lMM/RcVAeq7koUVicEiec=; b=oBkoT2uTEsHrjN53cvzOFFJEbfntO4cVLv0NOG1H7hEzDEz9oc7QUJAQqeyCq2HQrC hrQWWP7qtpU1xZPym9JX0SEMgauEWTqJfmWgWZFHOUkTI6JXnnmqPALh8jxWXzd/1WxT bTlaW81w1Pfo4crpGSZm9oRnqUU9dBUzVjyS7htdEeokhN7UvUHUmuw8+jAvb2xo5hvw 5Dj8Chv6TlgB9kjLczsGz7DUweRyjNaFgiIKNsMkrO4fkVIGbZi/etyJiEAbYsoSw9Zu omRt8Nkkv/pmDixRJSioaL8pvIJXz2yTF0KzaRuAsjCtbDmHdHUcn4QdZCUK6GmHazjs uYnQ== X-Gm-Message-State: AOAM532WfxGLyBYCJOg3TWF+dTlwLqlPCNJzqXJF4vPYNo+BZdBC3Nbf FFOnVeL+LP0oUt1Bd9nloE8uFm6DCfco/ha/ X-Google-Smtp-Source: ABdhPJwqwrTRyCZmgh+BuQCt+ub5qXzHnZR5ov37PDQ8LXiUiwFWtiAOVAu03QtprI2KxGIQj2KNQA== X-Received: by 2002:a1c:f60a:: with SMTP id w10mr1654959wmc.53.1640076184247; Tue, 21 Dec 2021 00:43:04 -0800 (PST) Received: from localhost.localdomain (179.160.117.78.rev.sfr.net. [78.117.160.179]) by smtp.gmail.com with ESMTPSA id d62sm1680617wmd.3.2021.12.21.00.43.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Dec 2021 00:43:03 -0800 (PST) From: Julien STEPHAN To: yocto@lists.yoctoproject.org Cc: Julien STEPHAN Subject: [meta-tensorflow][PATCH 1/3] tensorflow: do not fail on chmod failure Date: Tue, 21 Dec 2021 09:42:20 +0100 Message-Id: <20211221084222.1442456-1-jstephan@baylibre.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 21 Dec 2021 08:43:08 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/yocto/message/55632 every recipe using tensorflow.inc will inherits the do_compile:append task but sometimes, the chmod inside this task fails because the target files are not generated, we can safely ignore the chmod exit code and always return 0 Signed-off-by: Julien STEPHAN --- recipes-framework/tensorflow/tensorflow.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-framework/tensorflow/tensorflow.inc b/recipes-framework/tensorflow/tensorflow.inc index e30cca5..25d2ebf 100644 --- a/recipes-framework/tensorflow/tensorflow.inc +++ b/recipes-framework/tensorflow/tensorflow.inc @@ -39,6 +39,6 @@ TF_CONFIG ?= " \ inherit tensorflow_ver do_compile:append() { - chmod a+w ${BAZEL_DIR}/output_base/execroot/org_tensorflow/bazel-out/*/bin/tensorflow/lite/python/schema_py_srcs_no_include_all - chmod a+w ${BAZEL_DIR}/output_base/execroot/org_tensorflow/bazel-out/*/bin/tensorflow/lite/python/schema_py_srcs_no_include_all/tflite + chmod a+w ${BAZEL_DIR}/output_base/execroot/org_tensorflow/bazel-out/*/bin/tensorflow/lite/python/schema_py_srcs_no_include_all || true + chmod a+w ${BAZEL_DIR}/output_base/execroot/org_tensorflow/bazel-out/*/bin/tensorflow/lite/python/schema_py_srcs_no_include_all/tflite || true } From patchwork Tue Dec 21 08:42:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Stephan X-Patchwork-Id: 1762 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08789C433F5 for ; Tue, 21 Dec 2021 08:43:09 +0000 (UTC) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by mx.groups.io with SMTP id smtpd.web11.3555.1640076187869424588 for ; Tue, 21 Dec 2021 00:43:08 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b=0DA7egnx; spf=pass (domain: baylibre.com, ip: 209.85.221.68, mailfrom: jstephan@baylibre.com) Received: by mail-wr1-f68.google.com with SMTP id s1so19960693wra.6 for ; Tue, 21 Dec 2021 00:43:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vyi31QTvt24tNo84RHwnjdctX5y8ASjXN4hNmIRAyBM=; b=0DA7egnxdqP7zQjKu8jEbeaUgI0+UANptnmVKXAXaspKR+5Pu0JFK3M14Oi1cD5u1E 7mT5jp82rxcI6gtD+HxLDmFEqtE2uenQK2sz0d0Z2xQfUUt7A/uz/FTvGKDIqJsRY8iw RI54o7xDfY81IO/4iVJQqB9hdPXmbimM+RdES+ZMqJ4/+FpgP4UG+5cnADCQ21kvQ+XT /AFNFMGgyhydW/0E+m+0kD8DdnWUBNBUb7P5j/GaUwnLIZ1dFxx9pmwgQL7rIEpCLiY2 OsSTJyx91u7Imj3ulSRh+B4NxQ54X4e7fgjJ/BCtkE9FwSLfpIU4e7wy1JAzqeIoyMyX Izug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vyi31QTvt24tNo84RHwnjdctX5y8ASjXN4hNmIRAyBM=; b=Ah5Y+2eXUlTZ3wiCd4uvHzbu/SrIs8PHo3ZbDm5PmLcT5tQk30SwXLVoODy3F/0y2u aCx2JYoNuDcTYKriB8IbT4BTTpcc3jbcbRowwA9AQNUczynN/a7rqYqf8HfmJK7Otdon 5OOeEz1ov6ArfqEHnow+rFXVdhwgCAxlK42GjafpH4rVDgm1SYSkIJAulDSfoS6Pam/Q UTtlxWjg2BOtCFVhK0g6LUkZWUX+XxVs6LCxXWnA2eoifuHZIQFwJfrX3UNakfz6eD9b XwAOA9J1DHVEygTnoSjMRNL14K3n7ora4iU8fpRIN86IznxZ77IIWxcdySrj7HRQY2Sq SBBg== X-Gm-Message-State: AOAM531N55zzEeSuZ0AZVFKwQwv+SWlJ8zcHW8y+xMlzW+qlEv1NkOsp QHcb0vAj5/8QaRWweu6GVGnzw7LARhg5FKMO X-Google-Smtp-Source: ABdhPJzvSAS7xJkENUiFy0zUmr5lKhBmVT1rMz5lBMSsF1rAfViZ6+xPXonu/AQ46LfGGo+d65GJkQ== X-Received: by 2002:a5d:6e8d:: with SMTP id k13mr1707512wrz.449.1640076186347; Tue, 21 Dec 2021 00:43:06 -0800 (PST) Received: from localhost.localdomain (179.160.117.78.rev.sfr.net. [78.117.160.179]) by smtp.gmail.com with ESMTPSA id d62sm1680617wmd.3.2021.12.21.00.43.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Dec 2021 00:43:06 -0800 (PST) From: Julien STEPHAN To: yocto@lists.yoctoproject.org Cc: Julien STEPHAN Subject: [meta-tensorflow][PATCH 2/3] bazel.class: rename BAZEL_ARGS to BAZEL_STARTUP_OPTIONS Date: Tue, 21 Dec 2021 09:42:21 +0100 Message-Id: <20211221084222.1442456-2-jstephan@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211221084222.1442456-1-jstephan@baylibre.com> References: <20211221084222.1442456-1-jstephan@baylibre.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 21 Dec 2021 08:43:09 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/yocto/message/55633 BAZEL_ARGS variable contains bazel startup options so rename the variable to be more explicit. Moreover upstream tensorflow uses the variable name BAZEL_STARTUP_OPTIONS inside https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/tools/pip_package/build_pip_package_with_bazel.sh#L97 so we can keep consistency with upstream and this would be useful for future tensorflow-lite recipe Signed-off-by: Julien STEPHAN --- classes/bazel.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/bazel.bbclass b/classes/bazel.bbclass index e232d30..ccdfd74 100644 --- a/classes/bazel.bbclass +++ b/classes/bazel.bbclass @@ -7,7 +7,7 @@ inherit bazel-base BAZEL_DIR ?= "${WORKDIR}/bazel" BAZEL_OUTPUTBASE_DIR ?= "${BAZEL_DIR}/output_base" -export BAZEL_ARGS="--output_user_root=${BAZEL_DIR}/user_root \ +export BAZEL_STARTUP_OPTIONS="--output_user_root=${BAZEL_DIR}/user_root \ --output_base=${BAZEL_OUTPUTBASE_DIR} \ --bazelrc=${S}/bazelrc \ --batch \ @@ -19,7 +19,7 @@ do_prepare_recipe_sysroot[postfuncs] += "do_install_bazel" do_install_bazel() { mkdir -p ${BAZEL_DIR} install -m 0755 ${STAGING_BINDIR_NATIVE}/bazel ${BAZEL_DIR} - create_cmdline_wrapper ${BAZEL} \$BAZEL_ARGS + create_cmdline_wrapper ${BAZEL} \$BAZEL_STARTUP_OPTIONS zip -A ${BAZEL}.real } From patchwork Tue Dec 21 08:42:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Stephan X-Patchwork-Id: 1763 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE06DC433F5 for ; Tue, 21 Dec 2021 08:43:11 +0000 (UTC) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by mx.groups.io with SMTP id smtpd.web08.3594.1640076190353628588 for ; Tue, 21 Dec 2021 00:43:10 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b=a7i2bXJm; spf=pass (domain: baylibre.com, ip: 209.85.128.68, mailfrom: jstephan@baylibre.com) Received: by mail-wm1-f68.google.com with SMTP id a83-20020a1c9856000000b00344731e044bso1564880wme.1 for ; Tue, 21 Dec 2021 00:43:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/nljxcXhzh9aQdsp2InFXAyv+Dwr7RrrMkjnJgy1g/A=; b=a7i2bXJmqpOWoGz402IlqjhOM2bwPgEJClTqtAFhKiEBhJ147MFNuvC5tcs4GShyxd 4tuauXLLzPL4jip8up4pi35XISDr0L0sEKBbcEMqd9x1DhakcfQniD7litls5UwmTNJl DmndrTwNItiuCB1Wkm0qtfVM+w89xc0Klx3UwkGkamWRviNK3cHqIcrzqut3TXIp6wrt yqp9yx3sinsW7sPj83Cp0eQpocy35eGLhqKX3b1yd9rAbtTJoyS2hTrTw+aeNp0PVTgu rVCeBd4KBagvWLHA0TXCIQf1PXjRYHCb/9u+E4FWLJcqzybJceZQglbydYZSaIwejMRo ewcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/nljxcXhzh9aQdsp2InFXAyv+Dwr7RrrMkjnJgy1g/A=; b=m1jkBApDyZ54z/YDlBzKoPitXNXGI/16AmccACiSMCZkivZxkFvifLUzhu4jrxJBqe 6XKnqzPldTxtOJ05Cl0QS1G+a28oPKk1qVk6z09ws91MBQ7fnIC2l/5uPEzJSxXAXEkE CMyfq4IlfpZucY+T7jsYtrlrXby7qzqHH/TBhL7r7PkUai9GXcIWmhHuJDyQO1rQq9kV 7X/FeX6sOTKZlayiRcu+WbKweiv3bDULiB12A3rC15VDUA9qhqweK1Zn/U+eKts6JmE1 IudhMy0NyzKc6xI3OsYJi95//x7t0NvETJy4WfdzZXqYK0pfCfwM/BhD1X5wnL9eQ2kS gqKw== X-Gm-Message-State: AOAM532QgRFfoRm7VEshaddP1F65Vt7yl43Nyk6f/3FmAaT1EL5S0uA7 IEQREn8W+Q9YfCbi3WfDbXLiF6WZ2J3ia/G5 X-Google-Smtp-Source: ABdhPJzWXoEoRi3ii795OMHIuyxSuZi8ZtJb4PKJ+r4ZeIIqeBXdnNAHQbAPNxWkrUs/osqEpYuVKQ== X-Received: by 2002:a1c:f20e:: with SMTP id s14mr1672547wmc.186.1640076188661; Tue, 21 Dec 2021 00:43:08 -0800 (PST) Received: from localhost.localdomain (179.160.117.78.rev.sfr.net. [78.117.160.179]) by smtp.gmail.com with ESMTPSA id d62sm1680617wmd.3.2021.12.21.00.43.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Dec 2021 00:43:08 -0800 (PST) From: Julien STEPHAN To: yocto@lists.yoctoproject.org Cc: Julien STEPHAN Subject: [meta-tensorflow][PATCH 3/3] tensorflow-lite: add recipe Date: Tue, 21 Dec 2021 09:42:22 +0100 Message-Id: <20211221084222.1442456-3-jstephan@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211221084222.1442456-1-jstephan@baylibre.com> References: <20211221084222.1442456-1-jstephan@baylibre.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 21 Dec 2021 08:43:11 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/yocto/message/55634 Adding 2.6.1 tensorflow-lite recipe. This recipe is directly based on the corresponding 2.6.1 tensorflow recipe. It has been build tested with latest honister and tested on several mediatek soc using benchmark_model and label_image (C++ and python) Signed-off-by: Julien STEPHAN --- .../tensorflow/tensorflow-lite_2.6.1.bb | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 recipes-framework/tensorflow/tensorflow-lite_2.6.1.bb diff --git a/recipes-framework/tensorflow/tensorflow-lite_2.6.1.bb b/recipes-framework/tensorflow/tensorflow-lite_2.6.1.bb new file mode 100644 index 0000000..104e5a3 --- /dev/null +++ b/recipes-framework/tensorflow/tensorflow-lite_2.6.1.bb @@ -0,0 +1,156 @@ +include tensorflow.inc + +SRC_URI += " \ + file://0001-add-yocto-toolchain-to-support-cross-compiling.patch \ + file://0001-fix-build-tensorflow-lite-examples-label_image-label.patch \ + file://0001-label_image-tweak-default-model-location.patch \ + file://0001-label_image.lite-tweak-default-model-location.patch \ + file://0001-CheckFeatureOrDie-use-warning-to-avoid-die.patch \ + file://0001-support-32-bit-x64-and-arm-for-yocto.patch \ + file://0001-Revert-set-distinct_host_configuration-false-by-defa.patch \ + file://0001-fix-default-Bazel-toolchain-not-work.patch \ + file://0001-distutils-is-deprecated-in-Python-3.10-cross.patch \ + file://BUILD.in \ + file://BUILD.yocto_compiler \ + file://cc_config.bzl.tpl \ + file://yocto_compiler_configure.bzl \ + " + +SRC_URI += "https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz;name=model-inv3" +SRC_URI[model-inv3.md5sum] = "a904ddf15593d03c7dd786d552e22d73" +SRC_URI[model-inv3.sha256sum] = "7045b72a954af4dce36346f478610acdccbf149168fa25c78e54e32f0c723d6d" + +SRC_URI += "https://storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_v1_1.0_224_quant_and_labels.zip;name=model-mobv1" +SRC_URI[model-mobv1.md5sum] = "38ac0c626947875bd311ef96c8baab62" +SRC_URI[model-mobv1.sha256sum] = "2f8054076cf655e1a73778a49bd8fd0306d32b290b7e576dda9574f00f186c0f" + +RDEPENDS:${PN} += " \ + python3 \ + python3-core \ + python3-numpy \ +" + +export PYTHON_BIN_PATH="${PYTHON}" +export PYTHON_LIB_PATH="${STAGING_LIBDIR_NATIVE}/${PYTHON_DIR}/site-packages" + +export CROSSTOOL_PYTHON_INCLUDE_PATH="${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" + +do_configure:append () { + if [ ! -e ${CROSSTOOL_PYTHON_INCLUDE_PATH}/pyconfig-target.h ];then + mv ${CROSSTOOL_PYTHON_INCLUDE_PATH}/pyconfig.h ${CROSSTOOL_PYTHON_INCLUDE_PATH}/pyconfig-target.h + fi + + install -m 644 ${STAGING_INCDIR_NATIVE}/python${PYTHON_BASEVERSION}${PYTHON_ABI}/pyconfig.h \ + ${CROSSTOOL_PYTHON_INCLUDE_PATH}/pyconfig-native.h + + cat > ${CROSSTOOL_PYTHON_INCLUDE_PATH}/pyconfig.h < ${S}/third_party/toolchains/yocto/BUILD + chmod 644 ${S}/third_party/toolchains/yocto/BUILD + install -m 644 ${WORKDIR}/cc_config.bzl.tpl ${S}/third_party/toolchains/yocto/ + install -m 644 ${WORKDIR}/yocto_compiler_configure.bzl ${S}/third_party/toolchains/yocto/ + install -m 644 ${WORKDIR}/BUILD.yocto_compiler ${S} + + CT_NAME=$(echo ${HOST_PREFIX} | rev | cut -c 2- | rev) + SED_COMMAND="s#%%CT_NAME%%#${CT_NAME}#g" + SED_COMMAND="${SED_COMMAND}; s#%%WORKDIR%%#${WORKDIR}#g" + SED_COMMAND="${SED_COMMAND}; s#%%YOCTO_COMPILER_PATH%%#${BAZEL_OUTPUTBASE_DIR}/external/yocto_compiler#g" + + sed -i "${SED_COMMAND}" ${S}/BUILD.yocto_compiler \ + ${S}/WORKSPACE + + ${TF_CONFIG} \ + ./configure +} + +TF_TARGET_EXTRA ??= "" + +export CUSTOM_BAZEL_FLAGS = " \ + ${TF_ARGS_EXTRA} \ + --jobs=auto \ + -c opt \ + --cpu=${BAZEL_TARGET_CPU} \ + --crosstool_top=@local_config_yocto_compiler//:toolchain \ + --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ +" + +do_compile () { + export CT_NAME=$(echo ${HOST_PREFIX} | rev | cut -c 2- | rev) + unset CC + + ${BAZEL} build \ + ${CUSTOM_BAZEL_FLAGS} \ + --copt -DTF_LITE_DISABLE_X86_NEON --copt -DMESA_EGL_NO_X11_HEADERS \ + tensorflow/lite:libtensorflowlite.so \ + tensorflow/lite/tools/benchmark:benchmark_model \ + //tensorflow/lite/examples/label_image:label_image \ + ${TF_TARGET_EXTRA} + + # build pip package + ${S}/tensorflow/lite/tools/pip_package/build_pip_package_with_bazel.sh + +} + +do_install() { + install -d ${D}${libdir} + install -m 644 ${S}/bazel-bin/tensorflow/lite/libtensorflowlite.so \ + ${D}${libdir} + + install -d ${D}${sbindir} + install -m 755 ${S}/bazel-bin/tensorflow/lite/tools/benchmark/benchmark_model \ + ${D}${sbindir} + + install -m 755 ${S}/bazel-bin/tensorflow/lite/examples/label_image/label_image \ + ${D}${sbindir}/label_image + + install -d ${D}${datadir}/label_image + install -m 644 ${WORKDIR}/imagenet_slim_labels.txt ${D}${datadir}/label_image + install -m 644 ${WORKDIR}/inception_v3_2016_08_28_frozen.pb \ + ${D}${datadir}/label_image + install -m 644 ${S}/tensorflow/examples/label_image/data/grace_hopper.jpg \ + ${D}${datadir}/label_image + + install -m 644 ${WORKDIR}/labels_mobilenet_quant_v1_224.txt ${D}${datadir}/label_image + install -m 644 ${WORKDIR}/mobilenet_v1_1.0_224_quant.tflite \ + ${D}${datadir}/label_image + install -m 644 ${S}/tensorflow/lite/examples/label_image/testdata/grace_hopper.bmp \ + ${D}${datadir}/label_image + + + #echo "Installing pip package" + install -d ${D}/${PYTHON_SITEPACKAGES_DIR} + ${STAGING_BINDIR_NATIVE}/pip3 install --disable-pip-version-check -v \ + -t ${D}/${PYTHON_SITEPACKAGES_DIR} --no-cache-dir --no-deps \ + ${S}/tensorflow/lite/tools/pip_package/gen/tflite_pip/python3/dist/tflite_runtime-${PV}-*.whl + +} + +FILES:${PN} += "${libdir} ${sbindir} ${datadir}/*" +INSANE_SKIP:${PN} += "dev-so \ + already-stripped \ + " + +SOLIBS = ".so" +FILES_SOLIBSDEV = "" +ALLOW_EMPTY:${PN} = "1" + +FILES:${PN} += "${libdir} /home/root/*" + +inherit siteinfo unsupportarch +python __anonymous() { + if d.getVar("SITEINFO_ENDIANNESS") == 'be': + msg = "\nIt failed to use pre-build model to do predict/inference on big-endian platform" + msg += "\n(such as qemumips), since upstream does not support big-endian very well." + msg += "\nDetails: https://github.com/tensorflow/tensorflow/issues/16364" + bb.warn(msg) +}