All of lore.kernel.org
 help / color / mirror / Atom feed
From: "hongxu" <hongxu.jia@windriver.com>
To: randy.macleod@windriver.com, philip@balister.org,
	akuster808@gmail.com, marek.belisko@gmail.com,
	yocto@yoctoproject.org
Subject: [meta-tensorflow][PATCH 18/25] tensorboard: 1.12.2 -> 2.4
Date: Wed, 16 Dec 2020 21:08:15 +0800	[thread overview]
Message-ID: <20201216130822.28476-19-hongxu.jia@windriver.com> (raw)
In-Reply-To: <20201216130822.28476-1-hongxu.jia@windriver.com>

Rebase patch to 2.4
- 0001-customize-for-Yocto.patch

Fix projector cannot find module 'd3'

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 .../0001-customize-for-Yocto.patch            | 199 +++++++++++-------
 ...-projector-fix-cannot-find-module-d3.patch |  34 +++
 ...nsorboard_1.12.2.bb => tensorboard_2.4.bb} |  53 ++++-
 3 files changed, 195 insertions(+), 91 deletions(-)
 create mode 100644 recipes-framework/tensorflow/tensorboard/0001-projector-fix-cannot-find-module-d3.patch
 rename recipes-framework/tensorflow/{tensorboard_1.12.2.bb => tensorboard_2.4.bb} (47%)

diff --git a/recipes-framework/tensorflow/tensorboard/0001-customize-for-Yocto.patch b/recipes-framework/tensorflow/tensorboard/0001-customize-for-Yocto.patch
index 07d8257..4055e0b 100644
--- a/recipes-framework/tensorflow/tensorboard/0001-customize-for-Yocto.patch
+++ b/recipes-framework/tensorflow/tensorboard/0001-customize-for-Yocto.patch
@@ -1,6 +1,6 @@
-From 03b1ddf5058485ce1c94e6a8dc0762ad3430b6a2 Mon Sep 17 00:00:00 2001
+From 30c3d17327b7b66e082dbb443c9e528bf7aa6ac4 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 25 Apr 2019 21:13:32 +0800
+Date: Mon, 14 Dec 2020 15:14:25 +0800
 Subject: [PATCH] customize for Yocto
 
 - Remove virtualenv/pip/bdist_wheel calling which Yocto does not support
@@ -11,13 +11,13 @@ Upstream-Status: Inappropriate [oe specific]
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 ---
- WORKSPACE                                    |  6 ++++++
- tensorboard/pip_package/build_pip_package.sh | 31 +++-------------------------
- third_party/workspace.bzl                    |  8 +++++++
- 3 files changed, 17 insertions(+), 28 deletions(-)
+ WORKSPACE                                    |  6 +++
+ tensorboard/pip_package/build_pip_package.sh | 57 ++------------------
+ third_party/workspace.bzl                    |  8 +++
+ 3 files changed, 17 insertions(+), 54 deletions(-)
 
 diff --git a/WORKSPACE b/WORKSPACE
-index 8ab70cc..0c18f6f 100644
+index 86f5feaa..8056cfff 100644
 --- a/WORKSPACE
 +++ b/WORKSPACE
 @@ -1,5 +1,11 @@
@@ -31,102 +31,139 @@ index 8ab70cc..0c18f6f 100644
 +
  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
  
- # Needed as a transitive dependency of rules_webtesting below.
+ http_archive(
 diff --git a/tensorboard/pip_package/build_pip_package.sh b/tensorboard/pip_package/build_pip_package.sh
-index 754fa83..969709d 100755
+index ef8df010..085ea608 100755
 --- a/tensorboard/pip_package/build_pip_package.sh
 +++ b/tensorboard/pip_package/build_pip_package.sh
-@@ -23,7 +23,7 @@ else
-   sedi="sed -i"
- fi
- 
--run_smoke_test=1
-+run_smoke_test=0
- while [ "$#" -gt 0 ]; do
-   case "$1" in
-     "--no-smoke")
-@@ -71,31 +71,20 @@ from tensorboard.plugins.beholder import Beholder, BeholderHook
+@@ -12,7 +12,7 @@
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+-
++set -x
+ usage() {
+   cat <<EOF
+ usage: build_pip_package OUTPUT_DIR
+@@ -28,12 +28,6 @@ EOF
  }
  
- set -x
--command -v curl >/dev/null
--command -v perl >/dev/null
--command -v python2 >/dev/null
--command -v python3 >/dev/null
--command -v virtualenv >/dev/null
- [ -d "${RUNFILES}" ]
+ main() {
+-  if [ $# -ne 1 ]; then
+-    usage 2>&1
+-    return 1
+-  fi
+-  output="$1"
+-
+   if [ -z "${RUNFILES+set}" ]; then
+     RUNFILES="$(CDPATH="" cd -- "$0.runfiles" && pwd)"
+   fi
+@@ -41,16 +35,12 @@ main() {
+   if [ "$(uname)" = "Darwin" ]; then
+     workdir="$(mktemp -d -t tensorboard-pip)"
+   else
+-    workdir="$(mktemp -d -p /tmp -t tensorboard-pip.XXXXXXXXXX)"
++    workdir="${DESTDIR}"
++    rm -rf ${workdir} && mkdir -p ${workdir}
+   fi
+   original_wd="${PWD}"
+   cd "${workdir}" || return 2
  
--dest=/tmp/tensorboard
-+dest=${DESTDIR}
- if [ ! -e $dest ]; then
--  mkdir $dest
-+  mkdir -p $dest
- else
-   dest="$(mktemp -d -p /tmp -t tensorboard-pip.XXXXXXXXXX)"
- fi
- cd "${dest}"
+-  cleanup() {
+-    rm -r "${workdir}"
+-  }
+-  trap cleanup EXIT
+-
+   log_file="${workdir}/log"
+   build >"${log_file}" 2>&1
+   exit_code=$?
+@@ -68,20 +58,12 @@ build() (
+     sedi="sed -i"
+   fi
  
- cp -LR "${RUNFILES}/org_tensorflow_tensorboard/tensorboard" .
--mv -f "tensorboard/pip_package/LICENSE" .
--mv -f "tensorboard/pip_package/MANIFEST.in" .
--mv -f "tensorboard/pip_package/README.rst" .
--mv -f "tensorboard/pip_package/setup.cfg" .
--mv -f "tensorboard/pip_package/setup.py" .
- rm -rf tensorboard/pip_package
+-  command -v virtualenv >/dev/null
+   [ -d "${RUNFILES}" ]
  
- rm -f tensorboard/tensorboard              # bazel py_binary sh wrapper
--chmod -x LICENSE                           # bazel symlinks confuse cp
- find . -name __init__.py | xargs chmod -x  # which goes for all genfiles
+   cp -LR "${RUNFILES}/org_tensorflow_tensorboard/tensorboard" .
+-  mv -f "tensorboard/pip_package/LICENSE" .
+-  mv -f "tensorboard/pip_package/MANIFEST.in" .
+-  mv -f "tensorboard/pip_package/README.rst" .
+-  mv -f "tensorboard/pip_package/requirements.txt" .
+-  mv -f "tensorboard/pip_package/setup.cfg" .
+-  mv -f "tensorboard/pip_package/setup.py" .
+   rm -rf "tensorboard/pip_package"
  
- mkdir -p tensorboard/_vendor
-@@ -117,21 +106,7 @@ find tensorboard -name \*.py |
-     s/from tensorflow_serving/from tensorboard._vendor.tensorflow_serving/
-   '
+   rm -f tensorboard/tensorboard  # bazel py_binary sh wrapper
+-  chmod -x LICENSE  # bazel symlinks confuse cp
+   find . -name __init__.py -exec chmod -x {} +  # which goes for all genfiles
  
--virtualenv venv
--export VIRTUAL_ENV=venv
--export PATH="$PWD/venv/bin:${PATH}"
--unset PYTHON_HOME
+   mkdir -p tensorboard/_vendor
+@@ -100,39 +82,6 @@ build() (
+       s/^import webencodings$/from tensorboard._vendor import webencodings/
+       s/^from webencodings/from tensorboard._vendor.webencodings/
+     ' {} +
 -
--# Require wheel for bdist_wheel command, and setuptools 36.2.0+ so that
--# env markers are handled (https://github.com/pypa/setuptools/pull/1081)
--pip install -qU wheel 'setuptools>=36.2.0'
+-  virtualenv -q -p python3 venv
+-  export VIRTUAL_ENV=venv
+-  export PATH="${PWD}/venv/bin:${PATH}"
+-  unset PYTHON_HOME
 -
--python setup.py bdist_wheel --python-tag py2 >/dev/null
--python setup.py bdist_wheel --python-tag py3 >/dev/null
+-  # Require wheel for bdist_wheel command, and setuptools 36.2.0+ so that
+-  # env markers are handled (https://github.com/pypa/setuptools/pull/1081)
+-  export PYTHONWARNINGS=ignore:DEPRECATION  # suppress Python 2.7 deprecation spam
+-  pip install -qU wheel 'setuptools>=36.2.0'
 -
- if [ "$run_smoke_test" = 1 ]; then
-   smoke 2
-   smoke 3
- fi
+-  # Overrides file timestamps in the zip archive to make the build
+-  # reproducible. (Date is mostly arbitrary, but must be past 1980 to be
+-  # representable in a zip archive.)
+-  export SOURCE_DATE_EPOCH=1577836800  # 2020-01-01T00:00:00Z
 -
--ls -hal "$PWD/dist"
+-  python setup.py bdist_wheel --python-tag py3 >/dev/null
+-
+-  cd "${original_wd}"  # Bazel gives "${output}" as a relative path >_>
+-  case "${output}" in
+-    *.tar.gz)
+-      mkdir -p "$(dirname "${output}")"
+-      "${RUNFILES}/org_tensorflow_tensorboard/tensorboard/pip_package/deterministic_tar_gz" \
+-          "${output}" "${workdir}"/dist/*.whl
+-      ;;
+-    *)
+-      if ! [ -d "${output}" ]; then
+-        printf >&2 'fatal: no such output directory: %s\n' "${output}"
+-        return 1
+-      fi
+-      mv "${workdir}"/dist/*.whl "${output}"
+-      ;;
+-  esac
+ )
+ 
+ main "$@"
 diff --git a/third_party/workspace.bzl b/third_party/workspace.bzl
-index 083c441..24786f8 100644
+index e6a5183f..9260a8ab 100644
 --- a/third_party/workspace.bzl
 +++ b/third_party/workspace.bzl
-@@ -24,6 +24,7 @@ load("//third_party:polymer.bzl", "tensorboard_polymer_workspace")
- load("//third_party:python.bzl", "tensorboard_python_workspace")
+@@ -25,6 +25,7 @@ load("//third_party:python.bzl", "tensorboard_python_workspace")
  load("//third_party:js.bzl", "tensorboard_js_workspace")
+ load("//third_party:rust.bzl", "tensorboard_rust_workspace")
  load("//third_party:typings.bzl", "tensorboard_typings_workspace")
 +load("//third_party/toolchains/yocto:yocto_compiler_configure.bzl", "yocto_compiler_configure")
  
- def tensorboard_workspace():
-   tensorboard_fonts_workspace()
-@@ -32,6 +33,13 @@ def tensorboard_workspace():
-   tensorboard_typings_workspace()
-   tensorboard_js_workspace()
+ def tensorboard_workspace(name = ""):
+     """Add repositories needed to build TensorBoard.
+@@ -39,6 +40,13 @@ def tensorboard_workspace(name = ""):
+     tensorboard_js_workspace()
+     tensorboard_rust_workspace()
  
-+  # Point //external/local_config_yocto_compiler to //external/yocto_compiler
-+  yocto_compiler_configure(
-+      name = "local_config_yocto_compiler",
-+      build_file = str(Label("//third_party/toolchains/yocto:BUILD")),
-+      remote_config_repo = "../yocto_compiler",
-+  )
++    # Point //external/local_config_yocto_compiler to //external/yocto_compiler
++    yocto_compiler_configure(
++        name = "local_config_yocto_compiler",
++        build_file = str(Label("//third_party/toolchains/yocto:BUILD")),
++        remote_config_repo = "../yocto_compiler",
++    )
 +
-   http_archive(
-       name = "com_google_protobuf_js",
-       strip_prefix = "protobuf-3.6.0/js",
+     # Set up TypeScript toolchain.
+     ts_setup_workspace()
+ 
 -- 
-2.7.4
+2.18.2
 
diff --git a/recipes-framework/tensorflow/tensorboard/0001-projector-fix-cannot-find-module-d3.patch b/recipes-framework/tensorflow/tensorboard/0001-projector-fix-cannot-find-module-d3.patch
new file mode 100644
index 0000000..1cab5dd
--- /dev/null
+++ b/recipes-framework/tensorflow/tensorboard/0001-projector-fix-cannot-find-module-d3.patch
@@ -0,0 +1,34 @@
+From 60f90ec3cc3e417c4b8fe2ea25ddf6e5ff99bde0 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 14 Dec 2020 14:51:36 +0800
+Subject: [PATCH] projector: fix cannot find module 'd3'
+
+[snip]
+$ bazel run tensorboard/plugins/projector/vz_projector:standalone
+tensorboard/plugins/projector/vz_projector/projectorScatterPlotAdapter.ts:16:21 - error TS2307: Cannot find module 'd3'.
+
+16 import * as d3 from 'd3';
+[snip]
+
+Upstream-Status: Submitted [https://github.com/tensorflow/tensorboard/pull/4465]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ tensorboard/plugins/projector/vz_projector/BUILD | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tensorboard/plugins/projector/vz_projector/BUILD b/tensorboard/plugins/projector/vz_projector/BUILD
+index f173cd78..1529440d 100644
+--- a/tensorboard/plugins/projector/vz_projector/BUILD
++++ b/tensorboard/plugins/projector/vz_projector/BUILD
+@@ -63,6 +63,7 @@ tf_ts_library(
+         "//tensorboard/webapp/third_party:tfjs",
+         "@npm//@polymer/decorators",
+         "@npm//@polymer/polymer",
++        "@npm//@types/d3",
+         "@npm//d3",
+         "@npm//numeric",
+         "@npm//three",
+-- 
+2.18.2
+
diff --git a/recipes-framework/tensorflow/tensorboard_1.12.2.bb b/recipes-framework/tensorflow/tensorboard_2.4.bb
similarity index 47%
rename from recipes-framework/tensorflow/tensorboard_1.12.2.bb
rename to recipes-framework/tensorflow/tensorboard_2.4.bb
index a27bdea..aa97890 100644
--- a/recipes-framework/tensorflow/tensorboard_1.12.2.bb
+++ b/recipes-framework/tensorflow/tensorboard_2.4.bb
@@ -3,17 +3,22 @@ your TensorFlow runs and graphs."
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e74df23890b9521cc481e3348863e45d"
 
-SRC_URI = "git://github.com/tensorflow/tensorboard.git; \
+SRC_URI = "git://github.com/tensorflow/tensorboard.git;branch=2.4; \
            file://0001-customize-for-Yocto.patch \
-           file://BUILD \
+           file://0001-projector-fix-cannot-find-module-d3.patch \
+           file://BUILD.in \
            file://BUILD.yocto_compiler \
-           file://CROSSTOOL.tpl \
+           file://cc_config.bzl.tpl \
            file://yocto_compiler_configure.bzl \
           "
-SRCREV = "7194c7486a0c4d107322ffad102c1ca0fcc0fc24"
+SRCREV = "4e2a918a0559514a633c3a29ac6238fed4b72ed5"
 S = "${WORKDIR}/git"
 
-DEPENDS = "util-linux-native"
+DEPENDS = " \
+    util-linux-native \
+    python3-numpy-native \
+    python3-absl-native \
+"
 
 RDEPENDS_${PN} += "python3 \
            python3-core \
@@ -23,13 +28,40 @@ RDEPENDS_${PN} += "python3 \
            python3-werkzeug \
            python3-six \
            python3-markdown \
+           python3-absl \
+           python3-google-auth \
+           python3-google-auth-oauthlib \
+           python3-requests \
 "
 inherit python3native bazel
 
+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 <<ENDOF
+#if defined (_PYTHON_INCLUDE_TARGET)
+#include "pyconfig-target.h"
+#elif defined (_PYTHON_INCLUDE_NATIVE)
+#include "pyconfig-native.h"
+#else
+#error "_PYTHON_INCLUDE_TARGET or _PYTHON_INCLUDE_NATIVE is not defined"
+#endif // End of #if defined (_PYTHON_INCLUDE_TARGET)
+
+ENDOF
+
     mkdir -p ${S}/third_party/toolchains/yocto/
-    install -m 644 ${WORKDIR}/BUILD ${S}/third_party/toolchains/yocto/
-    install -m 644 ${WORKDIR}/CROSSTOOL.tpl ${S}/third_party/toolchains/yocto/
+    sed "s#%%CPU%%#${BAZEL_TARGET_CPU}#g" ${WORKDIR}/BUILD.in  > ${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}
 
@@ -39,25 +71,26 @@ do_configure_append () {
     SED_COMMAND="${SED_COMMAND}; s#%%YOCTO_COMPILER_PATH%%#${BAZEL_OUTPUTBASE_DIR}/external/yocto_compiler#g"
 
     sed -i "${SED_COMMAND}" ${S}/BUILD.yocto_compiler \
-                            ${S}/third_party/toolchains/yocto/CROSSTOOL.tpl \
                             ${S}/WORKSPACE
 }
 
 do_compile () {
     unset CC
+    export CT_NAME=$(echo ${HOST_PREFIX} | rev | cut -c 2- | rev)
     DESTDIR=${WORKDIR}/python-tensorboard \
      ${BAZEL} run \
-        --cpu=armeabi \
+        --cpu=${BAZEL_TARGET_CPU} \
         --subcommands --explain=${T}/explain.log \
         --verbose_explanations --verbose_failures \
         --crosstool_top=@local_config_yocto_compiler//:toolchain \
+        --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
         --verbose_failures \
         //tensorboard/pip_package:build_pip_package
 }
 
 do_install () {
     install -d ${D}${PYTHON_SITEPACKAGES_DIR}
-    cp -rf ${WORKDIR}/python-tensorboard/* ${D}${PYTHON_SITEPACKAGES_DIR}
+    cp -rf ${WORKDIR}/python-tensorboard/tensorboard ${D}${PYTHON_SITEPACKAGES_DIR}
 }
 
 FILES_${PN} += "${libdir}/*"
-- 
2.21.0


  parent reply	other threads:[~2020-12-16 13:09 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-16 13:07 Review request 0/25:[meta-tensorflow] upgrade tensorflow 1.13.1 -> 2.4.0.rc4 hongxu
2020-12-16 13:07 ` [meta-tensorflow][PATCH 1/25] openjdk-8-native: 212b04 -> 275b01 hongxu
2020-12-16 16:49   ` [yocto] " Kent Dorfman
2020-12-16 13:07 ` [meta-tensorflow][PATCH 2/25] bazel-native: 0.21.0 -> 3.1.0 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 3/25] tensorflow: 1.13.0 -> 2.4.0 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 4/25] add python3-gast 0.3.3 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 5/25] python3-opt-einsum: add 3.3.0 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 6/25] python3-google-pasta: add 0.2.0 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 7/25] python3-astunparse: add 1.6.3 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 8/25] tensorflow-estimator: 1.13 -> 2.4 hongxu
2021-01-04 10:30   ` Marek Belisko
2021-01-07 17:51     ` [yocto] " Randy MacLeod
2021-01-07 18:47       ` Marek Belisko
2021-01-07 20:47         ` Randy MacLeod
2021-01-25 18:57           ` Marek Belisko
2021-01-25 20:46             ` Randy MacLeod
2020-12-16 13:08 ` [meta-tensorflow][PATCH 9/25] bazel-native/bazel.bbclass: use default Bazel toolchain to build Yocto native tools hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 10/25] bazel-native/bazel.bbclass: replace deprecated --local_resources hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 11/25] tensorflow: update cross compile support hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 12/25] tensorflow: fix Multiple shlib providers for libtensorflow_framework.so hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 13/25] classes/bazel.bbclass: clean up bazel files before do_clean hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 14/25] python3-google-auth: 1.6.3 -> 1.24.0 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 15/25] python3-google-auth-oauthlib: add version 0.4.2 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 16/25] python3-pyasn1: add 0.4.8 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 17/25] python3-pyasn1-modules: add version 0.2.8 hongxu
2020-12-16 13:08 ` hongxu [this message]
2020-12-16 13:08 ` [meta-tensorflow][PATCH 19/25] tensorflow: clean up CROSSTOOL.tpl hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 20/25] bazel-native: 3.1.0 -> 3.7.1 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 21/25] add classes/bazel-base.bbclass and imporve classes/bazel-base.bbclass hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 22/25] bazel-native/bazel.bbclass: support bazel build without limitation hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 23/25] BUILD.md: update quick start for tensorflow 2 hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 24/25] tensorflow: split sub packages hongxu
2020-12-16 13:08 ` [meta-tensorflow][PATCH 25/25] update LIMITATION.md hongxu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201216130822.28476-19-hongxu.jia@windriver.com \
    --to=hongxu.jia@windriver.com \
    --cc=akuster808@gmail.com \
    --cc=marek.belisko@gmail.com \
    --cc=philip@balister.org \
    --cc=randy.macleod@windriver.com \
    --cc=yocto@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.