Can you separate the LLVM and GLOW changes into separate patches?

On 8/8/2019 3:32 PM, Djordje Senicic wrote:
Signed-off-by: Djordje Senicic <[email protected]>
---
  ...p-compilation-of-native-helper-tools.patch | 95 +++++++++++++++++++
  recipes-devtools/glow/glow_git.bb             | 48 +++++++---
  recipes-devtools/glow/llvm-glow_git.bb        | 10 +-
  3 files changed, 137 insertions(+), 16 deletions(-)
  create mode 100644 
recipes-devtools/glow/files/0002-Skip-compilation-of-native-helper-tools.patch

diff --git 
a/recipes-devtools/glow/files/0002-Skip-compilation-of-native-helper-tools.patch
 
b/recipes-devtools/glow/files/0002-Skip-compilation-of-native-helper-tools.patch
new file mode 100644
index 0000000..e60c399
--- /dev/null
+++ 
b/recipes-devtools/glow/files/0002-Skip-compilation-of-native-helper-tools.patch
@@ -0,0 +1,95 @@
+From 923f66a209c329b2d5ab245e1c02f91fa6705d4c Mon Sep 17 00:00:00 2001
+From: Djordje Senicic <[email protected]>
+Date: Thu, 1 Aug 2019 04:58:24 -0400
+Subject: [PATCH] Skip compilation of native helper tools
+


Patches should have an "Upstream-Status" to facilitate tracking. See https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations:_Upstream-Status


+Signed-off-by: Djordje Senicic <[email protected]>
+---
+ lib/Backends/CPU/CMakeLists.txt    |  2 +-
+ lib/Backends/OpenCL/CMakeLists.txt | 12 ++++++------
+ lib/Graph/CMakeLists.txt           |  3 +--
+ lib/IR/CMakeLists.txt              |  3 +--
+ 4 files changed, 9 insertions(+), 11 deletions(-)
+
+diff --git a/lib/Backends/CPU/CMakeLists.txt b/lib/Backends/CPU/CMakeLists.txt
+index 1e734539..0d5c5e60 100644
+--- a/lib/Backends/CPU/CMakeLists.txt
++++ b/lib/Backends/CPU/CMakeLists.txt
+@@ -53,7 +53,7 @@ add_custom_command(
+ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/glow/CPU)
+ add_custom_command(
+     OUTPUT ${CMAKE_BINARY_DIR}/glow/CPU/libjit_bc.inc
+-    COMMAND include-bin "${CMAKE_BINARY_DIR}/CPU/libjit.bc" 
"${CMAKE_BINARY_DIR}/glow/CPU/libjit_bc.inc"
++    COMMAND ${GLOW_BINARY_DIR}/bin/include-bin "${CMAKE_BINARY_DIR}/CPU/libjit.bc" 
"${CMAKE_BINARY_DIR}/glow/CPU/libjit_bc.inc"
+     DEPENDS ${GLOW_BINARY_DIR}/CPU/libjit.bc
+     WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}")
+
+diff --git a/lib/Backends/OpenCL/CMakeLists.txt 
b/lib/Backends/OpenCL/CMakeLists.txt
+index fd9f965c..e37b4b35 100644
+--- a/lib/Backends/OpenCL/CMakeLists.txt
++++ b/lib/Backends/OpenCL/CMakeLists.txt
+@@ -8,25 +8,25 @@ add_custom_target(make_opencl_dir
+
+ add_custom_command(
+   OUTPUT "${OpenCL_DIR}/kernels.cl.inc"
+-  COMMAND include-bin
++  COMMAND ${GLOW_BINARY_DIR}/bin/include-bin
+           "${CMAKE_CURRENT_SOURCE_DIR}/kernels.cl"
+           "${OpenCL_DIR}/kernels.cl.inc"
+-  DEPENDS make_opencl_dir include-bin 
"${CMAKE_CURRENT_SOURCE_DIR}/kernels.cl")
++  DEPENDS make_opencl_dir ${GLOW_BINARY_DIR}/bin/include-bin 
"${CMAKE_CURRENT_SOURCE_DIR}/kernels.cl")
+
+ add_custom_command(
+   OUTPUT "${OpenCL_DIR}/kernels_fwd_conv.cl.inc"
+-  COMMAND include-bin
++  COMMAND ${GLOW_BINARY_DIR}/bin/include-bin
+           "${CMAKE_CURRENT_SOURCE_DIR}/kernels_fwd_conv.cl"
+           "${OpenCL_DIR}/kernels_fwd_conv.cl.inc"
+-  DEPENDS make_opencl_dir include-bin
++  DEPENDS make_opencl_dir ${GLOW_BINARY_DIR}/bin/include-bin
+           "${CMAKE_CURRENT_SOURCE_DIR}/kernels_fwd_conv.cl")
+
+ add_custom_command(
+   OUTPUT "${OpenCL_DIR}/kernels_fwd_quantized_conv.cl.inc"
+-  COMMAND include-bin
++  COMMAND ${GLOW_BINARY_DIR}/bin/include-bin
+           "${CMAKE_CURRENT_SOURCE_DIR}/kernels_fwd_quantized_conv.cl"
+           "${OpenCL_DIR}/kernels_fwd_quantized_conv.cl.inc"
+-  DEPENDS make_opencl_dir include-bin
++  DEPENDS make_opencl_dir ${GLOW_BINARY_DIR}/bin/include-bin
+           "${CMAKE_CURRENT_SOURCE_DIR}/kernels_fwd_quantized_conv.cl")
+
+ add_library(OpenCLBackend
+diff --git a/lib/Graph/CMakeLists.txt b/lib/Graph/CMakeLists.txt
+index 84589761..f0976259 100644
+--- a/lib/Graph/CMakeLists.txt
++++ b/lib/Graph/CMakeLists.txt
+@@ -7,8 +7,7 @@ add_custom_command(OUTPUT
+                    "${NODES_HDR}"
+                    "${NODES_SRC}"
+                    "${NODES_DEF}"
+-                   COMMAND NodeGen ${NODES_HDR} ${NODES_SRC} ${NODES_DEF}
+-                   DEPENDS NodeGen
++                   COMMAND ${GLOW_BINARY_DIR}/bin/NodeGen ${NODES_HDR} 
${NODES_SRC} ${NODES_DEF}
+                    COMMENT "NodeGen: Generating nodes." VERBATIM)
+ add_custom_target(AutoGenNode
+                    DEPENDS
+diff --git a/lib/IR/CMakeLists.txt b/lib/IR/CMakeLists.txt
+index 7660308d..d5861bbb 100644
+--- a/lib/IR/CMakeLists.txt
++++ b/lib/IR/CMakeLists.txt
+@@ -13,10 +13,9 @@ add_custom_command(OUTPUT
+                     "${INSTR_BLD_HDR}"
+                     "${INSTR_BLD_SRC}"
+                     "${INSTR_IR_GEN}"
+-                    COMMAND InstrGen
++                    COMMAND ${GLOW_BINARY_DIR}/bin/InstrGen
+                       "${INSTR_HDR}" "${INSTR_SRC}" "${INSTR_DEF}"
+                       "${INSTR_BLD_HDR}" "${INSTR_BLD_SRC}" "${INSTR_IR_GEN}"
+-                    DEPENDS InstrGen
+                     COMMENT "InstrGen: Generating instructions." VERBATIM)
+ add_custom_target(AutoGenInstr
+                    DEPENDS
+--
+2.17.1
+
diff --git a/recipes-devtools/glow/glow_git.bb 
b/recipes-devtools/glow/glow_git.bb
index 3aea4b1..3024230 100644
--- a/recipes-devtools/glow/glow_git.bb
+++ b/recipes-devtools/glow/glow_git.bb
@@ -8,13 +8,12 @@ PV = "0.1+git${SRCPV}"
  PR = "r0"
  SRCREV_FORMAT = "glow"
-DEPENDS_class-native = "zlib zlib-native llvm-glow-native ninja-native protobuf-native libpng-native protobuf-native protobuf-c-native gflags-native glog-native"
-DEPENDS_class-nativesdk = "ncurses protobuf libpng glow-native zlib 
llvm-glow-native ninja-native protobuf-native libpng-native protobuf-c-native 
gflags-native glog-native"
+DEPENDS_class-native    = "zlib zlib-native llvm-glow-native ninja-native 
protobuf-native libpng-native protobuf-native protobuf-c-native gflags-native glog-native 
patchelf-native "
+DEPENDS_class-nativesdk = "ncurses protobuf zlib protobuf-c gflags glog ninja 
llvm-glow-native glow-native libpng-native patchelf-native "
-RDEPENDS_${PN}_class-nativesdk = "libpng ncurses glog"
+RDEPENDS_${PN}_class-nativesdk = "libpng ncurses glog protobuf "
SRC_URI = "git://github.com/pytorch/glow.git;protocol=https;destsuffix=git;name=glow \
-           
file://0001-Fix-path-and-dependencies-to-intermediate-executable.patch  \
             
git://github.com/stp/OutputCheck.git;protocol=https;destsuffix=git/tests/OutputCheck;name=outcheck
 \
             
git://github.com/google/benchmark.git;protocol=https;destsuffix=git/tests/googlebenchmark;name=gbench
 \
             
git://github.com/google/googletest.git;protocol=https;destsuffix=git/tests/googletest;name=gtest
 \
@@ -26,6 +25,11 @@ SRC_URI = 
"git://github.com/pytorch/glow.git;protocol=https;destsuffix=git;name=
             
git://github.com/wjakob/clang-cindex-python3.git;protocol=https;destsuffix=git/thirdparty/onnx/third_party/pybind11/tools/clang;name=onnxclang
 \
            "
+SRC_URI_append_class-native = " file://0001-Fix-path-and-dependencies-to-intermediate-executable.patch \
+                              "
+SRC_URI_append_class-nativesdk = 
"file://0002-Skip-compilation-of-native-helper-tools.patch \
+                              "


This seems a little odd. Is there no target to build only the host tools?


+
  SRCREV_glow = "ba8061367aea0b472b596448018107ca6e87929e"
  SRCREV_outcheck = "eab62a5dd5129f6a4ebfbe4bbe41d35611f7c48d"
  SRCREV_gbench = "090faecb454fbd6e6e17a75ef8146acb037118d4"
@@ -41,21 +45,43 @@ S = "${WORKDIR}/git"
inherit pkgconfig cmake -EXTRA_OECMAKE += " -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS="-Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 " "
+EXTRA_OECMAKE_class-native += " -DCMAKE_BUILD_TYPE=Release 
-DCMAKE_EXE_LINKER_FLAGS="-Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 " "


Do we really need to specify the dynamic linker?


+EXTRA_OECMAKE_class-nativesdk += " -DCMAKE_BUILD_TYPE=Release 
-DCMAKE_EXE_LINKER_FLAGS="-Wl,-z,origin " "
+
+do_compile_class-native() {
+   cmake_runcmake_build --target ${OECMAKE_TARGET_COMPILE}
+}
+
+do_install_class-native() {
+   install -d ${D}${datadir}/glow/bin
+   install -d ${D}${datadir}/glow/tests/images
+   chrpath -d ${WORKDIR}/build/bin/*
+   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/bin/include-bin 
${D}${datadir}/glow/bin


Can you use relative paths? The PWD should be "${WORKDIR}/build" (i.e. "${B}").


+   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/bin/InstrGen 
${D}${datadir}/glow/bin
+   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/bin/NodeGen 
${D}${datadir}/glow/bin
+   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/bin/image-classifier 
${D}${datadir}/glow/bin
+   ${STAGING_DIR_NATIVE}/usr/bin/patchelf --set-rpath  
"\$ORIGIN/../../../lib:\$ORIGIN/../../../../lib" 
${D}${datadir}/glow/bin/image-classifier
+   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/tests/images/imagenet 
${D}${datadir}/glow/tests/images
+   cp -Prf --preserve=mode,timestamps  
${WORKDIR}/build/tests/images/imagenet_299 ${D}${datadir}/glow/tests/images
+   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/tests/images/mnist 
${D}${datadir}/glow/tests/images
+}
-do_compile() {
+do_compile_class-nativesdk() {
+   install -d ${WORKDIR}/build/bin
+   cp ${STAGING_DIR_NATIVE}/usr/share/glow/bin/include-bin ${WORKDIR}/build/bin
+   cp ${STAGING_DIR_NATIVE}/usr/share/glow/bin/NodeGen ${WORKDIR}/build/bin
+   cp ${STAGING_DIR_NATIVE}/usr/share/glow/bin/InstrGen ${WORKDIR}/build/bin


Would it not be simpler to add to the PATH?


     cmake_runcmake_build --target ${OECMAKE_TARGET_COMPILE}
  }
-do_install () {
-   install -d ${D}${datadir}/glow
+do_install_class-nativesdk() {
+   install -d ${D}${datadir}/glow/bin
     install -d ${D}${datadir}/glow/tests/images
-   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/bin ${D}${datadir}/glow
-   cp -Prf --preserve=mode,timestamps  
${WORKDIR}/build/tests/images/EmotionSampleImages 
${D}${datadir}/glow/tests/images
+   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/bin/image-classifier 
${D}${datadir}/glow/bin
+   ${STAGING_DIR_NATIVE}/usr/bin/patchelf --set-rpath  
"\$ORIGIN/../../../lib:\$ORIGIN/../../../../lib" 
${D}${datadir}/glow/bin/image-classifier
     cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/tests/images/imagenet 
${D}${datadir}/glow/tests/images
     cp -Prf --preserve=mode,timestamps  
${WORKDIR}/build/tests/images/imagenet_299 ${D}${datadir}/glow/tests/images
     cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/tests/images/mnist 
${D}${datadir}/glow/tests/images
-   cp -Prf --preserve=mode,timestamps  ${WORKDIR}/build/tests/images/other 
${D}${datadir}/glow/tests/images
  }
BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-devtools/glow/llvm-glow_git.bb 
b/recipes-devtools/glow/llvm-glow_git.bb
index 58d392b..4c0d29e 100644
--- a/recipes-devtools/glow/llvm-glow_git.bb
+++ b/recipes-devtools/glow/llvm-glow_git.bb
@@ -2,16 +2,16 @@ DESCRIPTION = "LLVM release suggested for pytorch glow neural 
network compiler"
  HOMEPAGE = "https://github.com/llvm-mirror/llvm";
  SECTION = "devel"
  LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=c6b766a4e85dd28301eeed54a6684648"
-PV = "8.0"
-PR = "r0"
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=c520ed40e11887bb1d24d86f7f5b1f05"
+PV = "7.0"


Commit log states "7.1"


+PR = "r1"
DEPENDS = "ninja-native protobuf-native libpng-native protobuf-native protobuf-c-native gflags-native glog-native" SOLIBVER = "1" -SRC_URI = "git://github.com/llvm-mirror/llvm.git;protocol=https;branch=release_80;rev=5563a6a769b48912b9c8052124520610966eda28;destsuffix=git/llvm \
-           
git://github.com/llvm-mirror/clang.git;protocol=https;branch=release_80;rev=ccfe04576c13497b9c422ceef0b6efe99077a392;destsuffix=git/clang
 \
+SRC_URI = 
"git://github.com/llvm-mirror/llvm.git;protocol=https;branch=release_70;rev=dd3329aeb25d87d4ac6429c0af220f92e1ba5f26;destsuffix=git/llvm
 \
+           
git://github.com/llvm-mirror/clang.git;protocol=https;branch=release_70;rev=4519e2637fcc4bf6e3049a0a80e6a5e7b97667cb;destsuffix=git/clang
 \
             "


I have not seen any examples of "rev" used in SRC_URI. I understand that it works OK, but can you use SRCREV for consistency?


_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago

Reply via email to