[bug#65835,v2] gnu: tensorflow-lite: Update to 2.13.0
Commit Message
* gnu/packages/machine-learning.scm: (tensorflow-lite):
Update to 2.13.0
[inputs]: Add gemmlowp
[native-inputs]: Remove gemmlowp-src
* gnu/packages/patches/tensorflow-lite-disable-local-cmake-3rdparty-components.patch:
New file
---
gnu/packages/machine-learning.scm | 47 +++++++-------
...able-local-cmake-3rdparty-components.patch | 62 +++++++++++++++++++
2 files changed, 85 insertions(+), 24 deletions(-)
create mode 100644 gnu/packages/patches/tensorflow-lite-disable-local-cmake-3rdparty-components.patch
base-commit: 5db78e7c1b06d1b4892bdb3e153b95b21577271e
Comments
Hi,
Andy Tai <atai@atai.org> skribis:
> * gnu/packages/machine-learning.scm: (tensorflow-lite):
> Update to 2.13.0
> [inputs]: Add gemmlowp
> [native-inputs]: Remove gemmlowp-src
> * gnu/packages/patches/tensorflow-lite-disable-local-cmake-3rdparty-components.patch:
> New file
Overall LGTM. Some comments…
Could you add the patch to ‘gnu/local.mk’?
> + (patches
> + (search-patches
> + ;; patch to disable local cmake build code for 3rdparty
> + ;; componentas
> + "tensorflow-lite-disable-local-cmake-3rdparty-components.patch"))))
Please add the comment at the top of the patch itself, as reported by
‘guix lint’; also adjust indentation here as in the other files.
> + (string-append "-Dgemmlowp_ROOT=" #$(this-package-input "gemmlowp"))
> + )
Please move paren to the previous line.
> (invoke "tar" "--strip-components=1"
> "-xf" (assoc-ref inputs "fft2d-src")))
>
> - (copy-recursively (assoc-ref inputs "gemmlowp-src")
> - "/tmp/gemmlowp/")))
> + ;(copy-recursively (assoc-ref inputs "gemmlowp-src")
> + ; "/tmp/gemmlowp/")
> +
> + ))
Leftover? You can remove these two lines.
Could you send an updated patch?
Thanks in advance,
Ludo’.
will do.
On Thu, Sep 14, 2023 at 2:42 PM Ludovic Courtès <ludo@gnu.org> wrote:
> Hi,
>
> Andy Tai <atai@atai.org> skribis:
>
> > * gnu/packages/machine-learning.scm: (tensorflow-lite):
> > Update to 2.13.0
> > [inputs]: Add gemmlowp
> > [native-inputs]: Remove gemmlowp-src
> > *
> gnu/packages/patches/tensorflow-lite-disable-local-cmake-3rdparty-components.patch:
> > New file
>
> Overall LGTM. Some comments…
>
> Could you add the patch to ‘gnu/local.mk’?
>
> > + (patches
> > + (search-patches
> > + ;; patch to disable local cmake build code for 3rdparty
> > + ;; componentas
> > +
> "tensorflow-lite-disable-local-cmake-3rdparty-components.patch"))))
>
> Please add the comment at the top of the patch itself, as reported by
> ‘guix lint’; also adjust indentation here as in the other files.
>
> > + (string-append "-Dgemmlowp_ROOT=" #$(this-package-input
> "gemmlowp"))
> > + )
>
> Please move paren to the previous line.
>
> > (invoke "tar" "--strip-components=1"
> > "-xf" (assoc-ref inputs "fft2d-src")))
> >
> > - (copy-recursively (assoc-ref inputs "gemmlowp-src")
> > - "/tmp/gemmlowp/")))
> > + ;(copy-recursively (assoc-ref inputs "gemmlowp-src")
> > + ; "/tmp/gemmlowp/")
> > +
> > + ))
>
> Leftover? You can remove these two lines.
>
> Could you send an updated patch?
>
> Thanks in advance,
> Ludo’.
>
@@ -2972,7 +2972,7 @@ (define-public tensorflow
(define-public tensorflow-lite
(package
(name "tensorflow-lite")
- (version "2.12.1")
+ (version "2.13.0")
(source
(origin
(method git-fetch)
@@ -2982,11 +2982,15 @@ (define-public tensorflow-lite
(file-name (git-file-name name version))
(sha256
(base32
- "0jkgljdagdqllnxygl35r5bh3f9qmbczymfj357gm9krh59g2kmd"))))
+ "07g6vlrs0aayrg2mfdl15gxg5dy103wx2xlqkran15dib40nkbj6"))
+ (patches
+ (search-patches
+ ;; patch to disable local cmake build code for 3rdparty
+ ;; componentas
+ "tensorflow-lite-disable-local-cmake-3rdparty-components.patch"))))
(build-system cmake-build-system)
(arguments
(list
- #:tests? #false ;tests are not building now
#:build-type "Release"
#:modules '((ice-9 match)
(guix build utils)
@@ -3005,11 +3009,11 @@ (define-public tensorflow-lite
;; TODO: turn on Farmhash
;;"-DSYSTEM_FARMHASH=ON"
- (string-append "-Dabsl_DIR=" #$(this-package-input "abseil-cpp")
+ (string-append "-Dabseil-cpp_DIR=" #$(this-package-input "abseil-cpp")
"/lib/cmake/absl")
(string-append "-DEigen3_DIR=" #$(this-package-input "eigen")
"/share/eigen3/cmake")
- (string-append "-DFlatBuffers_DIR="
+ (string-append "-Dflatbuffers_DIR="
#$(this-package-input "flatbuffers-shared")
"/lib/cmake/flatbuffers")
(string-append "-DNEON_2_SSE_DIR=" #$(this-package-input "neon2sse")
@@ -3025,6 +3029,9 @@ (define-public tensorflow-lite
"-DTFLITE_ENABLE_XNNPACK=OFF"
;; Don't fetch the sources. We have these already
+ "-Dabseil-cpp_POPULATED=TRUE"
+ "-Dflatbuffers_POPULATED=TRUE"
+ "-Dgemmlowp_POPULATED=TRUE"
"-Degl_headers_POPULATED=TRUE"
"-Dfp16_headers_POPULATED=TRUE"
"-Dopencl_headers_POPULATED=TRUE"
@@ -3037,7 +3044,10 @@ (define-public tensorflow-lite
"-DFFT2D_SOURCE_DIR=/tmp/fft2d"
"-DFARMHASH_SOURCE_DIR=/tmp/farmhash"
- "-Dgemmlowp_SOURCE_DIR=/tmp/gemmlowp")
+ (string-append "-Dabseil-cpp_ROOT=" #$(this-package-input "abseil-cpp"))
+ (string-append "-Dflatbuffers_ROOT=" #$(this-package-input "flatbuffers-shared"))
+ (string-append "-Dgemmlowp_ROOT=" #$(this-package-input "gemmlowp"))
+ )
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'chdir
@@ -3069,8 +3079,10 @@ (define-public tensorflow-lite
(invoke "tar" "--strip-components=1"
"-xf" (assoc-ref inputs "fft2d-src")))
- (copy-recursively (assoc-ref inputs "gemmlowp-src")
- "/tmp/gemmlowp/")))
+ ;(copy-recursively (assoc-ref inputs "gemmlowp-src")
+ ; "/tmp/gemmlowp/")
+
+ ))
(add-after 'build 'build-shared-library
(lambda* (#:key configure-flags #:allow-other-keys)
@@ -3096,12 +3108,12 @@ (define-public tensorflow-lite
(when tests?
(invoke "ctest" "-L" "plain")))))))
(inputs
- `(("abseil-cpp" ,abseil-cpp-20200923.3)
+ `(("abseil-cpp" ,abseil-cpp)
("cpuinfo" ,cpuinfo)
("eigen" ,eigen)
("fp16" ,fp16)
("flatbuffers-shared" ,flatbuffers-next-shared)
- ;;("gemmlowp" ,gemmlowp) ; TODO
+ ("gemmlowp" ,gemmlowp)
("mesa-headers" ,mesa-headers)
("neon2sse" ,neon2sse)
("nsync" ,nsync)
@@ -3117,21 +3129,8 @@ (define-public tensorflow-lite
(native-inputs
`(("pkg-config" ,pkg-config)
("googletest" ,googletest)
- ("gemmlowp-src"
- ;; The commit hash is taken from
- ;; "tensorflow/lite/tools/cmake/modules/gemmlowp.cmake".
- ,(let ((commit "fda83bdc38b118cc6b56753bd540caa49e570745"))
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/google/gemmlowp")
- (commit commit)))
- (file-name (git-file-name "gemmlowp" (string-take commit 8)))
- (sha256
- (base32
- "1sbp8kmr2azwlvfbzryy1frxi99jhsh1nc93bdbxdf8zdgpv0kxl")))))
("farmhash-src"
- ,(let ((commit "816a4ae622e964763ca0862d9dbd19324a1eaf45"))
+ ,(let ((commit "0d859a811870d10f53a594927d0d0b97573ad06d"))
(origin
(method url-fetch)
(uri (string-append
new file mode 100644
@@ -0,0 +1,62 @@
+diff --git a/tensorflow/lite/CMakeLists.txt b/tensorflow/lite/CMakeLists.txt
+index 0476170e075..90abea00e8c 100644
+--- a/tensorflow/lite/CMakeLists.txt
++++ b/tensorflow/lite/CMakeLists.txt
+@@ -564,7 +564,7 @@ set(_ALL_TFLITE_HDRS ${_ALL_TFLITE_SRCS})
+ list(FILTER _ALL_TFLITE_HDRS INCLUDE REGEX ".*\\.h$")
+ target_include_directories(tensorflow-lite
+ PUBLIC $<BUILD_INTERFACE:${TENSORFLOW_SOURCE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+- ${CMAKE_BINARY_DIR}/gemmlowp
++ ${gemmlowp_ROOT}/include/gemmlowp
+ )
+ target_link_libraries(tensorflow-lite
+ PUBLIC
+diff --git a/tensorflow/lite/kernels/CMakeLists.txt b/tensorflow/lite/kernels/CMakeLists.txt
+index 57ed10d7e64..b45b5d1df82 100644
+--- a/tensorflow/lite/kernels/CMakeLists.txt
++++ b/tensorflow/lite/kernels/CMakeLists.txt
+@@ -25,11 +25,13 @@ set(SCHEMA_GENERATED_PATH ${SCHEMA_GENERATED_ROOT}/tensorflow/lite/schema/mutabl
+ set(SCHEMA_GENERATED_FILE ${SCHEMA_GENERATED_PATH}/schema_generated.h)
+
+ # Use the util function in flatbuffer to generate the schema header.
++list(APPEND CMAKE_MODULE_PATH "${flatbuffers_DIR}")
+ include(BuildFlatBuffers)
+
+ # For cross-compilation purposes a natively compiled 'flatc' compiler is required
+ if(${CMAKE_CROSSCOMPILING})
+ set(FLATC_PATHS
++ ${flatbuffers_ROOT}/bin
+ ${TFLITE_HOST_TOOLS_DIR}
+ ${TFLITE_HOST_TOOLS_DIR}/bin
+ ${TFLITE_HOST_TOOLS_DIR}/flatbuffers-flatc/bin
+@@ -43,7 +45,7 @@ if(${CMAKE_CROSSCOMPILING})
+ set(FLATBUFFERS_FLATC_EXECUTABLE ${FLATC_BIN})
+ endif()
+ else()
+- set(FLATBUFFERS_FLATC_EXECUTABLE ${CMAKE_BINARY_DIR}/flatbuffers-flatc/bin/flatc)
++ set(FLATBUFFERS_FLATC_EXECUTABLE ${flatbuffers_ROOT}/bin/flatc)
+ endif()
+
+ set(FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS
+@@ -55,7 +57,7 @@ build_flatbuffers(
+ "${SCHEMA_FILE}"
+ ""
+ mutable_schema_file
+- flatbuffers-flatc
++ ${FLATBUFFERS_FLATC_EXECUTABLE}
+ "${SCHEMA_GENERATED_PATH}"
+ ""
+ ""
+diff --git a/tensorflow/lite/tools/cmake/modules/Findgemmlowp.cmake b/tensorflow/lite/tools/cmake/modules/Findgemmlowp.cmake
+index 70331ad0a69..a9bd8a0f3bd 100644
+--- a/tensorflow/lite/tools/cmake/modules/Findgemmlowp.cmake
++++ b/tensorflow/lite/tools/cmake/modules/Findgemmlowp.cmake
+@@ -18,7 +18,7 @@
+ include(gemmlowp)
+ if(gemmlowp_POPULATED)
+ set(GEMMLOWP_FOUND TRUE)
+- get_target_property(GEMMLOWP_INCLUDE_DIRS gemmlowp INTERFACE_DIRECTORIES)
++ #get_target_property(GEMMLOWP_INCLUDE_DIRS gemmlowp INTERFACE_DIRECTORIES)
+ set(GEMMLOWP_LIBRARIES
+ gemmlowp
+ gemmlowp_fixedpoint