8c998b05f9d9852330a4281aaafcf3d99fd74e83
[platform/upstream/nnstreamer.git] / packaging / nnstreamer.spec
1 ###########################################################################
2 #
3 #              Options for gbs/rpmbuild users
4 #
5 # gbs -c .TAOS-CI/.gbs.conf build --define "unit_test 1"
6 #       Execute all unit test cases
7 #
8 # gbs -c .TAOS-CI/.gbs.conf build --define "testcoverage 1"
9 #       Generate unittest coverage statistics
10 #       Use with "unit_test 1" to do it with as many cases as possible:
11 #       $ gbs -c .TAOS-CI/.gbs.conf build --define "unit_test 1" --define "testcoverage 1"
12 #
13
14 %define         gstpostfix      gstreamer-1.0
15 %define         gstlibdir       %{_libdir}/%{gstpostfix}
16 %define         nnstbindir      lib/nnstreamer/bin
17 %define         builddir        build
18
19 ###########################################################################
20 # Default features for Tizen releases
21 # If you want to build RPM for other Linux distro, you may need to
22 # touch these values for your needs.
23 %define         tensorflow_support 0
24 %define         tensorflow_lite_support 1
25 %define         tensorflow2_lite_support 1
26 %define         armnn_support 0
27 %define         vivante_support 0
28 %define         flatbuf_support 1
29 %define         protobuf_support 1
30 %define         nnfw_support 1
31 %define         grpc_support 1
32 %define         pytorch_support 0
33 %define         caffe2_support 0
34 %define         mqtt_support 1
35 %define         lua_support 1
36 %define         tvm_support 1
37 %define         snpe_support 1
38 %define         trix_engine_support 1
39 %define     onnxruntime_support 0
40 # Support AI offloading (tensor_query) using nnstreamer-edge interface
41 %define         nnstreamer_edge_support 1
42 %define         datarepo_support 1
43
44 %define         check_test 1
45 %define         release_test 1
46
47 ###########################################################################
48 # Conditional features for Tizen releases
49
50 # Enable python if it's Tizen 5.0+
51 %if 0%{tizen_version_major} >= 5
52 %define         python3_support 1
53 %else
54 %define         python3_support 0
55 %endif
56
57 # Enable Tizen-Sensor, OpenVINO, MVNCSDK2 if it's Tizen 6.0+
58 %if 0%{tizen_version_major} >= 6
59 %define         tizen_sensor_support 1
60 %define         mvncsdk2_support 1
61 %define         openvino_support 1
62 %define         edgetpu_support 1
63 %else
64 %define         tizen_sensor_support 0
65 %define         mvncsdk2_support 0
66 %define         openvino_support 0
67 %define         edgetpu_support 0
68 %endif
69
70 # tizen 6.0 (or less) backward-compatibility check
71 %if ( 0%{?tizen_version_major} == 6 && 0%{?tizen_version_minor} < 5 ) || 0%{?tizen_version_major} < 6
72 %define         grpc_support 0
73 %define         tensorflow2_lite_support 0
74 %define         trix_engine_support 0
75 %endif
76
77 # Disable e-TPU if it's not 64bit system
78 %ifnarch aarch64 x86_64
79 %define         edgetpu_support 0
80 %endif
81
82 # Disable ARMNN/Vivante/NNFW if it's not ARM.
83 %ifnarch %arm aarch64
84 %define         armnn_support 0
85 %define         vivante_support 0
86 %endif
87
88 # Disable NNFW if it's not ARM/x64 and x86
89 %ifnarch %arm aarch64 x86_64 i586 i686 %ix86
90 %define         nnfw_support 0
91 %endif
92
93 # Disable a few features for TV releases
94 %if "%{?profile}" == "tv"
95 %define         grpc_support 0
96 %define         check_test 0
97 %define         edgetpu_support 0
98 %define         protobuf_support 0
99 %define         python3_support 0
100 %define         mvncsdk2_support 0
101 %define         openvino_support 0
102 %define         nnfw_support 0
103 %define         armnn_support 0
104 %define         vivante_support 0
105 %define         pytorch_support 0
106 %define         caffe2_support 0
107 %define         tensorflow_support 0
108 %define         lua_support 0
109 %define         mqtt_support 0
110 %define         tvm_support 0
111 %define         snpe_support 0
112 %define         trix_engine_support 0
113 %define     onnxruntime_support 0
114 %define         nnstreamer_edge_support 0
115 %endif
116
117 # DA requested to remove unnecessary module builds
118 %if 0%{?_with_da_profile}
119 %define         mvncsdk2_support 0
120 %define         edgetpu_support 0
121 %define         openvino_support 0
122 %define         edgetpu_support 0
123 %define         armnn_support 0
124 %define         lua_support 0
125 %define         mqtt_support 0
126 %define         tvm_support 0
127 %define         trix_engine_support 0
128 %define     onnxruntime_support 0
129 %endif
130
131 # Release unit test suite as a subpackage only if check_test is enabled.
132 %if !0%{?check_test}
133 %define         release_test 0
134 %endif
135
136 # Current Tizen Robot profile only supports aarch64.
137 %ifnarch aarch64
138 %define         snpe_support 0
139 %endif
140
141 # If it is tizen, we can export Tizen API packages.
142 %bcond_with tizen
143
144 ###########################################################################
145 # Package / sub-package definitions
146 Name:           nnstreamer
147 Summary:        gstreamer plugins for neural networks
148 # Synchronize the version information among Ubuntu, Tizen, Android, and Meson.
149 # 1. Ubuntu : ./debian/changelog
150 # 2. Tizen  : ./packaging/nnstreamer.spec
151 # 3. Android: ./jni/nnstreamer.mk
152 # 4. Meson  : ./meson.build
153 Version:        2.4.1
154 Release:        0
155 Group:          Machine Learning/ML Framework
156 Packager:       MyungJoo Ham <myungjoo.ham@samsung.com>
157 License:        LGPL-2.1
158 Source0:        nnstreamer-%{version}.tar
159 Source1001:     nnstreamer.manifest
160
161 ## Define requirements ##
162 Requires: nnstreamer-core = %{version}-%{release}
163 Requires: nnstreamer-configuration = %{version}-%{release}
164 Requires: nnstreamer-single = %{version}-%{release}
165 Recommends: nnstreamer-default-configuration = %{version}-%{release}
166 %if 0%{?nnstreamer_edge_support}
167 BuildRequires: nnstreamer-edge-devel
168 %endif
169
170 ## Define build requirements ##
171 BuildRequires:  gstreamer-devel
172 BuildRequires:  gst-plugins-base-devel
173 BuildRequires:  gst-plugins-bad-devel
174 BuildRequires:  glib2-devel
175 BuildRequires:  meson >= 0.50.0
176
177 # To run test cases, we need gst plugins
178 BuildRequires:  gst-plugins-good
179 %if 0%{tizen_version_major} >= 5
180 BuildRequires:  gst-plugins-good-extra
181 %endif
182 BuildRequires:  gst-plugins-base
183 # and gtest
184 BuildRequires:  gtest-devel
185 # a few test cases uses python
186 %if 0%{?check_test}
187 BuildRequires:  python3
188 %endif
189 %if 0%{?python3_support}
190 # for python3 custom filters
191 BuildRequires:  python3-devel
192 BuildRequires:  python3-numpy-devel
193 %endif
194 # Testcase requires bmp2png, which requires libpng
195 BuildRequires:  pkgconfig(libpng)
196 %if 0%{?flatbuf_support}
197 # for flatbuffers
198 BuildRequires: flatbuffers-devel
199 %if 0%{?unit_test}
200 BuildRequires: flatbuffers-python
201 %endif
202 %endif
203 %if 0%{?tensorflow_lite_support}
204 # for tensorflow-lite
205 BuildRequires: tensorflow-lite-devel
206 %endif
207 %if 0%{?tensorflow2_lite_support}
208 # for tensorflow2-lite
209 BuildRequires: tensorflow2-lite-devel
210 BuildRequires: flatbuffers-devel
211 # tensorflow2-lite-custom requires scripts for rpm >= 4.9
212 BuildRequires:  rpm >= 4.9
213 %global __requires_exclude ^libtensorflow2-lite-custom.*$
214 %endif
215 # custom_example_opencv filter requires opencv-devel
216 BuildRequires: opencv-devel
217 # For './testAll.sh' time limit.
218 BuildRequires: procps
219 # for protobuf
220 %if 0%{?protobuf_support}
221 BuildRequires: protobuf-devel >= 3.4.0
222 %endif
223 # for tensorflow
224 %if 0%{?tensorflow_support}
225 BuildRequires: tensorflow
226 BuildRequires: tensorflow-devel
227 %endif
228 # for armnn
229 %if 0%{?armnn_support}
230 BuildRequires: armnn-devel
231 %endif
232
233 %if 0%{?edgetpu_support}
234 BuildRequires:  pkgconfig(edgetpu)
235 %endif
236
237 %if 0%{?testcoverage}
238 # to be compatible with gcc-9, lcov should have a higher version than 1.14.1
239 BuildRequires: lcov
240 # BuildRequires:        taos-ci-unittest-coverage-assessment
241 %endif
242
243 %if 0%{mvncsdk2_support}
244 BuildRequires:  pkgconfig(libmvnc)
245 %endif
246
247 %if 0%{openvino_support}
248 BuildRequires:  pkgconfig(openvino)
249 %endif
250
251 # for Vivante
252 # TODO: dann and opencv will be removed in the near future.
253 %if 0%{?vivante_support}
254 BuildRequires:  pkgconfig(opencv)
255 BuildRequires:  pkgconfig(dann)
256 BuildRequires:  pkgconfig(ovxlib)
257 BuildRequires:  pkgconfig(amlogic-vsi-npu-sdk)
258 %endif
259
260 %if 0%{?grpc_support}
261 BuildRequires:  grpc-devel
262 %endif
263
264 %if %{with tizen}
265 BuildRequires:  pkgconfig(dlog)
266 # For tizen sensor support
267 BuildRequires:  pkgconfig(sensor)
268 BuildRequires:  capi-system-sensor-devel
269 %endif  # tizen
270
271 %if 0%{?nnfw_support}
272 # Tizen 5.5 M2+ support nn-runtime (nnfw)
273 # As of 2019-09-24, unfortunately, nnfw does not support pkg-config
274 BuildRequires:  nnfw-devel
275 %endif
276
277 %if 0%{?pytorch_support}
278 BuildRequires:  pytorch-devel
279 %endif
280
281 # Caffe2 is merged to pytorch
282 %if 0%{?caffe2_support}
283 BuildRequires:  pytorch-devel
284 %endif
285
286 %if 0%{?lua_support}
287 BuildRequires:  lua-devel
288 %endif
289
290 %if 0%{?tvm_support}
291 BuildRequires:  tvm-runtime-devel
292 %endif
293
294 %if 0%{?snpe_support}
295 BuildRequires:  snpe-devel
296 %endif
297
298 %if 0%{?trix_engine_support}
299 BuildRequires:  npu-engine-devel
300 %endif
301
302 %if 0%{?onnxruntime_support}
303 BuildRequires: onnxruntime-devel
304 %endif
305
306 # Unit Testing Uses SSAT (https://github.com/myungjoo/SSAT.git)
307 %if 0%{?unit_test} || 0%{?edge_test}
308 BuildRequires:  ssat >= 1.1.0
309 # Mosquitto MQTT broker for unit testing
310 BuildRequires:  mosquitto
311 %endif
312
313 # For ORC (Oil Runtime Compiler)
314 BuildRequires:  pkgconfig(orc-0.4)
315
316 # For nnstreamer-parser
317 BuildRequires:  flex
318 BuildRequires:  bison
319
320 # For datarepo
321 %if 0%{?datarepo_support}
322 BuildRequires: pkgconfig(json-glib-1.0)
323 %endif
324
325 # Note that debug packages generate an additional build and storage cost.
326 # If you do not need debug packages, run '$ gbs -c .TAOS-CI/.gbs.conf build ... --define "_skip_debug_rpm 1"'.
327
328 %if "%{?_skip_debug_rpm}" == "1"
329 %global debug_package %{nil}
330 %global __debug_install_post %{nil}
331 %endif
332
333 ## Define Packages ##
334 %description
335 NNStreamer is a set of gstreamer plugins to support general neural networks
336 and their plugins in a gstreamer stream. NNStreamer is a meta package of
337 nnstreamer-core and nnstreamer-configuration
338
339 %package core
340 Requires: gstreamer >= 1.8.0
341 %if 0%{?nnstreamer_edge_support}
342 Requires: nnstreamer-edge
343 %endif
344 Summary: NNStreamer core package
345 %description core
346 NNStreamer is a set of gstreamer plugins to support general neural networks
347 and their plugins in a gstreamer stream, this package is core package without configuration
348
349 %package single
350 Summary: NNStreamer singe-shot package
351 %description single
352 Element to use general neural network framework directly without gstreamer pipeline.
353
354 %package default-configuration
355 Summary: NNStreamer global configuration
356 Provides: nnstreamer-configuration = %{version}-%{release}
357 Conflicts: nnstreamer-test-devel
358 %description default-configuration
359 NNStreamer's global configuration setup for the end user.
360
361 # for tensorflow
362 %if 0%{?tensorflow_support}
363 %package tensorflow
364 Summary:        NNStreamer TensorFlow Support
365 Requires:       nnstreamer-single = %{version}-%{release}
366 Requires:       tensorflow
367 %description tensorflow
368 NNStreamer's tensor_filter subplugin of TensorFlow.
369 It uses C-API of tensorflow, which is not yet stable as of 1.1x.
370 Thus, the user needs to check the version of Tensorflow with the
371 Tensorflow used for building this package.
372 %endif
373
374 # for tensorflow-lite
375 %if 0%{?tensorflow_lite_support}
376 %package tensorflow-lite
377 Summary:        NNStreamer TensorFlow Lite Support
378 Requires:       nnstreamer-single = %{version}-%{release}
379 # tensorflow-lite provides .a file and it's embedded into the subplugin. No dep to tflite.
380 %description tensorflow-lite
381 NNStreamer's tensor_filter subplugin of TensorFlow Lite.
382 %endif
383
384 # for tensorflow2-lite
385 %if 0%{?tensorflow2_lite_support}
386 %package tensorflow2-lite
387 Summary:        NNStreamer TensorFlow2 Lite Support
388 Requires:       nnstreamer-single = %{version}-%{release}
389 # tensorflow2-lite provides .a file and it's embedded into the subplugin. No dep to tflite.
390 %description tensorflow2-lite
391 NNStreamer's tensor_filter subplugin of TensorFlow2 Lite.
392 %endif
393
394 %if 0%{?python3_support}
395 %package python3
396 Summary:  NNStreamer Python3 Custom Filter Support
397 Requires: nnstreamer = %{version}-%{release}
398 %description python3
399 NNStreamer's tensor_filter subplugin of Python3.
400 %endif
401
402 %if 0%{?armnn_support}
403 %package armnn
404 Summary:        NNStreamer Arm NN support
405 Requires:       nnstreamer-single = %{version}-%{release}
406 Requires:       armnn
407 %description armnn
408 NNStreamer's tensor_filter subplugin of Arm NN Inference Engine.
409 %endif
410
411 # Support vivante subplugin
412 %if 0%{?vivante_support}
413 %package vivante
414 Summary:    NNStreamer subplugin for Verisilicon's Vivante
415 Requires:   nnstreamer-single = %{version}-%{release}
416 %description vivante
417 NNStreamer filter subplugin for Verisilicon Vivante.
418 %define enable_vivante -Denable-vivante=true
419 %else
420 %define enable_vivante -Denable-vivante=false
421 %endif
422
423 # for protobuf
424 %if 0%{?protobuf_support}
425 %package    protobuf
426 Summary:        NNStreamer Protobuf Support
427 Requires:       nnstreamer = %{version}-%{release}
428 Requires:       protobuf
429 %description protobuf
430 NNStreamer's tensor_converter and decoder subplugin of Protobuf.
431 %endif
432
433 # for flatbuf
434 %if 0%{?flatbuf_support}
435 %package    flatbuf
436 Summary:        NNStreamer Flatbuf Support
437 Requires:       nnstreamer = %{version}-%{release}
438 Requires:       flatbuffers
439 %if "%{?profile}" != "tv"
440 Recommends: flatbuffers-python
441 %endif
442 %description flatbuf
443 NNStreamer's tensor_converter and decoder subplugin of flatbuf.
444 %endif
445
446 # for pytorch
447 %if 0%{?pytorch_support}
448 %package pytorch
449 Summary:        NNStreamer PyTorch Support
450 Requires:       nnstreamer-single = %{version}-%{release}
451 Requires:       pytorch
452 %description pytorch
453 NNStreamer's tensor_filter subplugin of pytorch
454 %endif
455
456 # for caffe2
457 %if 0%{?caffe2_support}
458 %package caffe2
459 Summary:        NNStreamer caffe2 Support
460 Requires:       nnstreamer-single = %{version}-%{release}
461 Requires:       pytorch
462 %description caffe2
463 NNStreamer's tensor_filter subplugin of caffe2
464 %endif
465
466 # for lua
467 %if 0%{?lua_support}
468 %package lua
469 Summary:        NNStreamer lua Support
470 Requires:       nnstreamer-single = %{version}-%{release}
471 Requires:       lua
472 %description lua
473 NNStreamer's tensor_filter subplugin of lua
474 %endif
475
476 %if 0%{?tvm_support}
477 %package tvm
478 Summary:        NNStreamer TVM support
479 Requires:       nnstreamer = %{version}-%{release}
480 Requires:       tvm
481 %description tvm
482 NNStreamer's tensor_filter subplugin of tvm
483 %endif
484
485 # for snpe
486 %if 0%{?snpe_support}
487 %package snpe
488 Summary:        NNStreamer snpe Support
489 Requires:       nnstreamer-single = %{version}-%{release}
490 Requires:       snpe
491 %description snpe
492 NNStreamer's tensor_filter subplugin of snpe
493 %endif
494
495 # for trix-engone
496 %if 0%{?trix_engine_support}
497 %package trix-engine
498 Summary:        NNStreamer TRIx-Engine support
499 Requires:       nnstreamer-single = %{version}-%{release}
500 Requires:       trix-engine
501 %description trix-engine
502 NNStreamer's tensor_filter subplugin of trix-engine
503 %endif
504
505 # for onnxruntime
506 %if 0%{?onnxruntime_support}
507 %package onnxruntime
508 Summary:        NNStreamer onnxruntime Support
509 Requires:       nnstreamer-single = %{version}-%{release}
510 %description onnxruntime
511 NNStreamer's tensor_filter subplugin of onnxruntime
512 %endif
513
514 %package devel
515 Summary:        Development package for custom tensor operator developers (tensor_filter/custom)
516 Requires:       nnstreamer = %{version}-%{release}
517 Requires:       nnstreamer-single-devel = %{version}-%{release}
518 Requires:       glib2-devel
519 Requires:       gstreamer-devel
520 %description devel
521 Development package for subplugin or custom filter developers.
522 Developers may add support for new hardware accelerators or neural network
523 frameworks, or introduce new data types and their converters for tensors.
524 However, applications or service developers generally do not need this.
525 This contains corresponding header files and .pc pkgconfig file.
526
527 %package devel-internal
528 Summary:    Development package to access internal functions of NNStreamer
529 Requires:   nnstreamer-devel = %{version}-%{release}
530 %description devel-internal
531 Development package to access internal functions of NNStreamer.
532 This may be used by API packages, which wrap nnstreamer features.
533 In most cases, custom-filter or subplugin authors do not need this internal devel package; however, if they want to access more internal functions, they may need this.
534
535 %package devel-static
536 Summary:    Static library for nnstreamer-devel package
537 Requires:   nnstreamer-devel = %{version}-%{release}
538 %description devel-static
539 Static library package of nnstreamer-devel.
540
541 %package single-devel
542 Summary:    Development package for NNStreamer single-shot
543 Requires:   nnstreamer-single = %{version}-%{release}
544 %description single-devel
545 Development package for NNStreamer single-shot.
546
547 %package single-devel-static
548 Summary:    Static library for nnstreamer-single-devel package
549 Requires:   nnstreamer-single-devel = %{version}-%{release}
550 %description single-devel-static
551 Static library package of nnstreamer-single-devel.
552
553 %package test-devel
554 Summary: Development package to provide testable environment of a subplugin (tensor_filter/custom)
555 Requires: nnstreamer-devel = %{version}-%{release}
556 Requires: nnstreamer-single-devel = %{version}-%{release}
557 Provides: nnstreamer-configuration = %{version}-%{release}
558 Conflicts: nnstreamer-default-configuration
559 %description test-devel
560 Development package to provide testable environment of NNStreamer sub-plugin.
561 This package enables testable environment of NNStreamer sub-plugin by making nnstreamer to recognize NNSTREAMER_CONF_PATH to steer a sub-plugin path to a custom path.
562 Also This package provides test templates to be used with.
563
564 %if 0%{?testcoverage}
565 %package unittest-coverage
566 Summary:        NNStreamer UnitTest Coverage Analysis Result
567 %description unittest-coverage
568 HTML pages of lcov results of NNStreamer generated during rpmbuild
569 %endif
570
571 %if 0%{?nnfw_support}
572 %package nnfw
573 Summary:        NNStreamer Tizen-nnfw runtime support
574 Requires:       nnstreamer-single = %{version}-%{release}
575 Requires:       nnfw
576 %description nnfw
577 NNStreamer's tensor_filter subplugin of Tizen-NNFW Runtime. (5.5 M2 +)
578 %endif
579
580 %if 0%{?mvncsdk2_support}
581 %package        ncsdk2
582 Summary:        NNStreamer Intel Movidius NCSDK2 support
583 Requires:       nnstreamer-single = %{version}-%{release}
584 Group:          Machine Learning/ML Framework
585 %description    ncsdk2
586 NNStreamer's tensor_filter subplugin of Intel Movidius Neural Compute stick SDK2.
587 %endif # mvncsdk2_support
588
589 %if 0%{openvino_support}
590 %package        openvino
591 Summary:        NNStreamer OpenVino support
592 Requires:       nnstreamer-single = %{version}-%{release}
593 Requires:       openvino
594 Group:          Machine Learning/ML Framework
595 %description    openvino
596 NNStreamer's tensor_filter subplugin for OpenVino support.
597 %endif # openvino_support
598
599 # Add Tizen's sensor framework API integration
600 %if 0%{tizen_sensor_support}
601 %package tizen-sensor
602 Summary:        NNStreamer integration of tizen sensor framework (tensor_src_tizensensor)
603 Requires:       nnstreamer = %{version}-%{release}
604 Requires:       capi-system-sensor
605 %description tizen-sensor
606 You can include Tizen sensor framework nodes as source elements of GStreamer/NNStreamer pipelines with this package.
607 %endif # tizen_sensor_support
608
609 %if 0%{grpc_support}
610 %package grpc
611 Summary:        NNStreamer gRPC support
612 Requires:       nnstreamer = %{version}-%{release}
613 %if %{with tizen}
614 Recommends:     nnstreamer-grpc-protobuf = %{version}-%{release}
615 Recommends:     nnstreamer-grpc-flatbuf = %{version}-%{release}
616 %endif
617 %description  grpc
618 NNStreamer's tensor_source/sink plugins for gRPC support.
619
620 %if 0%{protobuf_support}
621 %package grpc-protobuf
622 Summary:        NNStreamer gRPC/Protobuf support
623 Requires:       nnstreamer-grpc = %{version}-%{release}
624 Requires:       nnstreamer-protobuf = %{version}-%{release}
625 %description  grpc-protobuf
626 NNStreamer's gRPC IDL support for protobuf
627 %endif
628
629 %if 0%{flatbuf_support}
630 %package grpc-flatbuf
631 Summary:        NNStreamer gRPC/Flatbuf support
632 Requires:       nnstreamer-grpc = %{version}-%{release}
633 Requires:       nnstreamer-flatbuf = %{version}-%{release}
634 %description  grpc-flatbuf
635 NNStreamer's gRPC IDL support for flatbuf
636 %endif
637
638 %endif # grpc_support
639
640 %if 0%{?edgetpu_support}
641 %package edgetpu
642 Summary:        NNStreamer plugin for Google-Coral Edge TPU
643 Requires:       libedgetpu1
644 Requires:       nnstreamer-single = %{version}-%{release}
645 %description edgetpu
646 You may enable this package to use Google Edge TPU with NNStreamer and Tizen ML APIs.
647 %endif
648
649 %if 0%{?release_test}
650 %package unittests
651 Summary:        NNStreamer unittests for core and plugins
652 Requires:       nnstreamer = %{version}-%{release}
653 %description unittests
654 Various unit test cases and custom subplugin examples for NNStreamer.
655 %endif
656
657 %package util
658 Summary:        NNStreamer developer utilities
659 %description util
660 NNStreamer developer utilities include nnstreamer configuration checker.
661
662 %package misc
663 Summary:        NNStreamer extra packages
664 %if 0%{?mqtt_support}
665 BuildRequires:  pkgconfig(paho-mqtt-c)
666 %endif
667
668 %description misc
669 Provides additional gstreamer plugins for nnstreamer pipelines
670
671 %if 0%{?datarepo_support}
672 %package datarepo
673 Summary: NNStreamer MLOps Data Repository plugin packages
674 %description datarepo
675 NNStreamer's datareposrc/sink plugins for reading and writing files in MLOps Data Repository
676 %define enable_datarepo -Ddatarepo-support=enabled
677 %else
678 %define enable_datarepo -Ddatarepo-support=disabled
679 %endif
680
681 ## Define build options ##
682 %define enable_tizen -Denable-tizen=false
683 %define enable_tizen_sensor -Denable-tizen-sensor=false
684 %define enable_mvncsdk2 -Dmvncsdk2-support=disabled
685 %define enable_openvino -Denable-openvino=false
686 %define enable_nnfw_runtime -Dnnfw-runtime-support=disabled
687 %define element_restriction -Denable-element-restriction=false
688 %define enable_test -Denable-test=true
689 %define install_test -Dinstall-test=false
690
691 %if 0%{mvncsdk2_support}
692 %define enable_mvncsdk2 -Dmvncsdk2-support=enabled
693 %endif
694
695 %if 0%{openvino_support}
696 %define enable_openvino -Denable-openvino=true
697 %endif
698
699 %if 0%{?nnfw_support}
700 %define enable_nnfw_runtime -Dnnfw-runtime-support=enabled
701 %endif  # nnfw_support
702
703 %if 0%{tizen_sensor_support}
704 %define enable_tizen_sensor -Denable-tizen-sensor=true
705 %endif
706
707 %if !0%{?check_test}
708 %define enable_test -Denable-test=false
709 %endif
710
711 %if 0%{?release_test}
712 %define install_test -Dinstall-test=true
713 %endif
714
715 %if %{with tizen}
716 %define enable_tizen -Denable-tizen=true -Dtizen-version-major=0%{tizen_version_major}
717 # Element allowance in Tizen
718 %define allowed_element_base     'capsfilter identity input-selector output-selector queue tee valve appsink appsrc audioconvert audiorate audioresample audiomixer videoconvert videocrop videorate videoscale videoflip videomixer compositor fakesrc fakesink filesrc filesink multifilesrc multifilesink audiotestsrc videotestsrc jpegparse jpegenc jpegdec pngenc pngdec xvimagesink ximagesink evasimagesink evaspixmapsink glimagesink theoraenc lame vorbisenc wavenc volume oggmux avimux matroskamux v4l2src pulsesrc '
719 %define allowed_element_edgeai   'rtpdec rtspsrc rtspclientsink zmqsrc zmqsink mqttsrc mqttsink udpsrc udpsink multiudpsink tcpclientsink tcpclientsrc tcpserversink tcpserversrc edgesrc edgesink gdppay gdpdepay '
720 %define allowed_element_audio    'audioamplify audiochebband audiocheblimit audiodynamic audioecho audiofirfilter audioiirfilter audioinvert audiokaraoke audiopanorama audiowsincband audiowsinclimit scaletempo stereo '
721 %define allowed_element_tizen    'tizencamerasrc avsysvideosrc camerasrc tvcamerasrc fimcconvert tizenwlsink '
722 %define allowed_element_extra    'join datareposrc datareposink '
723
724 %define allowed_element_all      %{allowed_element_base}%{allowed_element_audio}%{allowed_element_edgeai}%{allowed_element_tizen}%{allowed_element_extra}
725 %if "%{?profile}" == "tv"
726 %define allowed_element_vd       'tvdpbsrc '
727 %define allowed_element          %{allowed_element_all}%{allowed_element_vd}
728 %else
729 %define allowed_element          %{allowed_element_all}
730 %endif
731 %define element_restriction -Denable-element-restriction=true -Dallowed-elements=%{allowed_element}
732 %endif #if tizen
733
734 # Support tensorflow
735 %if 0%{?tensorflow_support}
736 %define enable_tf -Dtf-support=enabled
737 %else
738 %define enable_tf -Dtf-support=disabled
739 %endif
740
741 # Support tensorflow-lite
742 %if 0%{?tensorflow_lite_support}
743 %define enable_tf_lite -Dtflite-support=enabled
744 %else
745 %define enable_tf_lite -Dtflite-support=disabled
746 %endif
747
748 # Support tensorflow2-lite
749 %if 0%{?tensorflow2_lite_support}
750 %define enable_tf2_lite -Dtflite2-support=enabled -Dtflite2-custom-support=enabled
751 %else
752 %define enable_tf2_lite -Dtflite2-support=disabled -Dtflite2-custom-support=disabled
753 %endif
754
755 # Support pytorch
756 %if 0%{?pytorch_support}
757 %define enable_pytorch -Dpytorch-support=enabled
758 %else
759 %define enable_pytorch -Dpytorch-support=disabled
760 %endif
761
762 # Support caffe2
763 %if 0%{?caffe2_support}
764 %define enable_caffe2 -Dcaffe2-support=enabled
765 %else
766 %define enable_caffe2 -Dcaffe2-support=disabled
767 %endif
768
769 # Support ArmNN
770 %if 0%{?armnn_support}
771 %define enable_armnn -Darmnn-support=enabled
772 %else
773 %define enable_armnn -Darmnn-support=disabled
774 %endif
775
776 # Support python
777 %if 0%{?python3_support}
778 %define enable_python3 -Dpython3-support=enabled
779 %else
780 %define enable_python3 -Dpython3-support=disabled
781 %endif
782
783 # Support edgetpu
784 %if 0%{?edgetpu_support}
785 %define enable_edgetpu -Denable-edgetpu=true
786 %else
787 %define enable_edgetpu -Denable-edgetpu=false
788 %endif
789
790 # Support flatbuffer
791 %if 0%{?flatbuf_support}
792 %define enable_flatbuf -Dflatbuf-support=enabled
793 %else
794 %define enable_flatbuf -Dflatbuf-support=disabled
795 %endif
796
797 # Support mqtt
798 %if 0%{?mqtt_support}
799 %define enable_mqtt -Dmqtt-support=enabled
800 %else
801 %define enable_mqtt -Dmqtt-support=disabled
802 %endif
803
804 # Support lua
805 %if 0%{?lua_support}
806 %define enable_lua -Dlua-support=enabled
807 %else
808 %define enable_lua -Dlua-support=disabled
809 %endif
810
811 # Support tvm
812 %if 0%{?tvm_support}
813 %define enable_tvm -Dtvm-support=enabled
814 %else
815 %define enable_tvm -Dtvm-support=disabled
816 %endif
817
818 # Support trix-engine
819 %if 0%{?trix_engine_support}
820 %define enable_trix_engine -Dtrix-engine-support=enabled
821 %else
822 %define enable_trix_engine -Dtrix-engine-support=disabled
823 %endif
824
825 # Support ml-agent
826 %if 0%{?ml_agent_support}
827 %define enable_ml_agent -Dml-agent-support=enabled
828 %else
829 %define enable_ml_agent -Dml-agent-support=disabled
830 %endif
831
832 # Support onnxruntime
833 %if 0%{?onnxruntime_support}
834 %define enable_onnxruntime -Donnxruntime-support=enabled
835 %else
836 %define enable_onnxruntime -Donnxruntime-support=disabled
837 %endif
838
839 # Framework priority for each file extension
840 %define fw_priority_bin ''
841 %define fw_priority_nb ''
842
843 %if "%{?profile}" == "tv"
844 %define fw_priority_bin 'vd_aifw'
845 %define fw_priority_nb 'vd_aifw'
846 %else
847 %if 0%{openvino_support}
848 %define fw_priority_bin 'openvino'
849 %endif
850 %endif
851
852 %define fp16_enabled 0
853 %ifarch %arm aarch64
854 %define fp16_enabled 1
855 # x64/x86 requires GCC >= 12 for fp16 support.
856 %endif
857
858 ## Float16 support
859 %if 0%{?fp16_enabled}
860 %define fp16_support -Denable-float16=true
861 %else
862 %define fp16_support -Denable-float16=false
863 %endif
864
865 %if 0%{?nnstreamer_edge_support}
866 %define nnsedge -Dnnstreamer-edge-support=enabled
867 %else
868 %define nnsedge -Dnnstreamer-edge-support=disabled
869 %endif
870
871 %define fw_priority -Dframework-priority-nb=%{fw_priority_nb} -Dframework-priority-bin=%{fw_priority_bin}
872
873 %prep
874 rm -rf ./%{builddir}
875 %setup -q
876 cp %{SOURCE1001} .
877
878 %build
879 # Remove compiler flags for meson to decide the cpp version
880 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-std=gnu++11||"`
881
882 %if 0%{?testcoverage}
883 # To test coverage, disable optimizations (and should unset _FORTIFY_SOURCE to use -O0)
884 CFLAGS=`echo $CFLAGS | sed -e "s|-O[1-9]|-O0|g"`
885 CFLAGS=`echo $CFLAGS | sed -e "s|-Wp,-D_FORTIFY_SOURCE=[1-9]||g"`
886 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-O[1-9]|-O0|g"`
887 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-Wp,-D_FORTIFY_SOURCE=[1-9]||g"`
888 # also, use the meson's base option, -Db_coverage, instead of --coverage/-fprofile-arcs and -ftest-coverage
889 %define enable_test_coverage -Db_coverage=true
890 %else
891 %define enable_test_coverage -Db_coverage=false
892 %endif
893
894 mkdir -p %{builddir}
895
896 meson --buildtype=plain --prefix=%{_prefix} --sysconfdir=%{_sysconfdir} --libdir=%{_lib} \
897         --bindir=%{nnstbindir} --includedir=include -Dsubplugindir=%{_prefix}/lib/nnstreamer \
898         %{enable_tizen} %{element_restriction} %{fw_priority} -Denable-env-var=false -Denable-symbolic-link=false \
899         %{enable_tf_lite} %{enable_tf2_lite} %{enable_tf} %{enable_pytorch} %{enable_caffe2} %{enable_python3} \
900         %{enable_nnfw_runtime} %{enable_mvncsdk2} %{enable_openvino} %{enable_armnn} %{enable_edgetpu}  %{enable_vivante} \
901         %{enable_flatbuf} %{enable_trix_engine} %{enable_datarepo} \
902         %{enable_tizen_sensor} %{enable_mqtt} %{enable_lua} %{enable_tvm} %{enable_onnxruntime} %{enable_test} %{enable_test_coverage} %{install_test} \
903         %{fp16_support} %{nnsedge} %{enable_ml_agent} \
904         %{builddir}
905
906 ninja -C %{builddir} %{?_smp_mflags}
907
908 export NNSTREAMER_SOURCE_ROOT_PATH=$(pwd)
909 export NNSTREAMER_BUILD_ROOT_PATH=$(pwd)/%{builddir}
910 export GST_PLUGIN_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/gst:${NNSTREAMER_BUILD_ROOT_PATH}/ext
911 export NNSTREAMER_CONF=${NNSTREAMER_BUILD_ROOT_PATH}/nnstreamer-test.ini
912 export NNSTREAMER_FILTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_filter
913 export NNSTREAMER_DECODERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_decoder
914 export NNSTREAMER_CONVERTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_converter
915 export NNSTREAMER_TRAINERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_trainer
916
917 %define test_script $(pwd)/packaging/run_unittests_binaries.sh
918
919 # if it's tizen && non-TV, run unittest even if "unit_test"==0 for build-time sanity checks.
920 %if ( %{with tizen} && "%{?profile}" != "tv" )
921 %if 0%{nnfw_support}
922     bash %{test_script} ./tests/tizen_nnfw_runtime/unittest_nnfw_runtime_raw
923 %endif
924 %if 0%{tizen_sensor_support}
925     bash %{test_script} ./tests/tizen_sensor/unittest_tizen_sensor
926 %endif
927 %endif #if tizen
928
929 # If "unit_test"==0, don't run these for the sake of build speed.
930 %if 0%{?unit_test}
931     bash %{test_script} ./tests
932     bash %{test_script} ./tests/cpp_methods
933     bash %{test_script} ./tests/nnstreamer_filter_extensions_common
934 %if 0%{?datarepo_support}
935     bash %{test_script} ./tests/nnstreamer_datarepo
936 %endif
937 %if 0%{?nnstreamer_edge_support}
938     bash %{test_script} ./tests/nnstreamer_edge
939 %endif
940 %if 0%{mvncsdk2_support}
941     LD_LIBRARY_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/tests/nnstreamer_filter_mvncsdk2:. bash %{test_script} ./tests/nnstreamer_filter_mvncsdk2/unittest_filter_mvncsdk2
942 %endif
943 %if 0%{edgetpu_support}
944     LD_LIBRARY_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/tests/nnstreamer_filter_edgetpu:. bash %{test_script} ./tests/nnstreamer_filter_edgetpu/unittest_edgetpu
945 %endif
946 %ifarch %arm x86_64 aarch64 ## @todo This is a workaround. Need to remove %ifarch/%endif some day.
947     bash %{test_script} ./tests/nnstreamer_filter_tvm
948 %endif
949     pushd tests
950
951     %ifarch %arm aarch64
952     ## @todo Workaround for QEMU compatibility issue. Newer qemu may be ok with this.
953     export SKIP_QEMU_ARM_INCOMPATIBLE_TESTS=1
954     %else
955     export SKIP_QEMU_ARM_INCOMPATIBLE_TESTS=0
956     %endif
957
958 %if 0%{?fp16_enabled}
959     ## If fp16 tests fail, stop the build!
960     export FLOAT16_SUPPORTED=1
961 %endif
962     ssat -n -p=1 --summary summary.txt -cn _n
963     popd
964
965 python3 tools/development/count_test_cases.py %{builddir} tests/summary.txt
966 %else
967 %if 0%{?edge_test} && 0%{?nnstreamer_edge_support}
968     bash %{test_script} tests/nnstreamer_edge
969     pushd tests/nnstreamer_edge
970     ssat -n -p=1 --summary summary.txt -cn _n
971     popd
972     python3 tools/development/count_test_cases.py %{builddir} tests/nnstreamer_edge/summary.txt
973 %endif
974 %endif
975
976 %install
977 DESTDIR=%{buildroot} ninja -C %{builddir} install
978
979 mkdir -p %{buildroot}%{_bindir}
980 pushd %{buildroot}%{_bindir}
981 ln -sf %{_prefix}/%{nnstbindir}/nnstreamer-check nnstreamer-check
982 ln -sf %{_prefix}/%{nnstbindir}/nnstreamer-parser nnstreamer-parser
983 popd
984
985 %if 0%{?python3_support}
986 mkdir -p %{buildroot}%{python3_sitelib}
987 pushd %{buildroot}%{python3_sitelib}
988 ln -sf %{_libdir}/nnstreamer_python3.so nnstreamer_python.so
989 popd
990 %endif
991
992 %if 0%{?snpe_support}
993 %define snpe_sub_plugin libnnstreamer_filter_snpe.so
994 %define files_for_snpe_subpackage files_for_snpe_subpackage.txt
995 rm -f %{files_for_snpe_subpackage}
996 find %{buildroot} -type f -name '%{snpe_sub_plugin}' -printf '/%%P\n' > %{files_for_snpe_subpackage}
997 %endif
998
999 %if 0%{?testcoverage}
1000 ##
1001 # The included directories are:
1002 #
1003 # gst: the nnstreamer elements
1004 # nnstreamer_example: custom plugin examples
1005 # common: common libraries for gst (elements)
1006 # include: common library headers and headers for external code (packaged as "devel")
1007 #
1008 # Intentionally excluded directories are:
1009 #
1010 # tests: We are not going to show testcoverage of the test code itself or example applications
1011 #
1012 # 'lcov' generates the date format with UTC time zone by default. Let's replace UTC with KST.
1013 # If you ccan get a root privilege, run ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
1014 TZ='Asia/Seoul'; export TZ
1015
1016 # Get commit info
1017 VCS=`cat ${RPM_SOURCE_DIR}/nnstreamer.spec | grep "^VCS:" | sed "s|VCS:\\W*\\(.*\\)|\\1|"`
1018
1019 # Create human readable unit test coverage report web page.
1020 # Create null gcda files if gcov didn't create it because there is completely no unit test for them.
1021 find . -name "*.gcno" -exec sh -c 'touch -a "${1%.gcno}.gcda"' _ {} \;
1022 # Remove gcda for meaningless file (CMake's autogenerated)
1023 find . -name "CMakeCCompilerId*.gcda" -delete
1024 find . -name "CMakeCXXCompilerId*.gcda" -delete
1025 #find . -path "/%{builddir}/*.j
1026 # Generate report
1027 lcov -t 'NNStreamer Unit Test Coverage' -o unittest.info -c -d . -b %{builddir} --no-external
1028 # Exclude generated files (e.g., Orc, Protobuf) and device-dependent filters.
1029 lcov -r unittest.info "*/*-orc.*" "*/tests/*" "*/tools/*" "*/meson*/*" "*/*@sha/*" "*/*_openvino*" "*/*_edgetpu*" "*/*_movidius_ncsdk2*" "*/*.so.p/*" -o unittest-filtered.info
1030 # Visualize the report
1031 genhtml -o result unittest-filtered.info -t "nnstreamer %{version}-%{release} ${VCS}" --ignore-errors source -p ${RPM_BUILD_DIR}
1032
1033 mkdir -p %{buildroot}%{_datadir}/nnstreamer/unittest/
1034 cp -r result %{buildroot}%{_datadir}/nnstreamer/unittest/
1035 %endif  # test coverage
1036
1037 %post -p /sbin/ldconfig
1038
1039 %postun -p /sbin/ldconfig
1040
1041 %files
1042
1043 %files core
1044 %manifest nnstreamer.manifest
1045 %defattr(-,root,root,-)
1046 %license LICENSE
1047 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_bounding_boxes.so
1048 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_tensor_region.so
1049 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_pose_estimation.so
1050 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_image_segment.so
1051 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_image_labeling.so
1052 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_direct_video.so
1053 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_octet_stream.so
1054 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_cpp.so
1055 %{gstlibdir}/libnnstreamer.so
1056 %if 0%{?nnstreamer_edge_support}
1057 %{gstlibdir}/libgstedge.so
1058 %endif
1059 %{_libdir}/libnnstreamer.so
1060
1061 %files single
1062 %manifest nnstreamer.manifest
1063 %defattr(-,root,root,-)
1064 %license LICENSE
1065 %{_libdir}/libnnstreamer-single.so
1066
1067 %files default-configuration
1068 %config %{_sysconfdir}/nnstreamer.ini
1069
1070 # for tensorflow
1071 %if 0%{?tensorflow_support}
1072 %files tensorflow
1073 %manifest nnstreamer.manifest
1074 %defattr(-,root,root,-)
1075 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow.so
1076 %endif
1077
1078 %if 0%{?tensorflow_lite_support}
1079 %files tensorflow-lite
1080 %manifest nnstreamer.manifest
1081 %defattr(-,root,root,-)
1082 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow1-lite.so
1083 %endif
1084
1085 # for tensorflow2-lite
1086 %if 0%{?tensorflow2_lite_support}
1087 %files tensorflow2-lite
1088 %manifest nnstreamer.manifest
1089 %defattr(-,root,root,-)
1090 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow2-lite.so
1091 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow2-lite-custom.so
1092 %endif
1093
1094 %if 0%{?python3_support}
1095 %files python3
1096 %manifest nnstreamer.manifest
1097 %defattr(-,root,root,-)
1098 %{_libdir}/nnstreamer_python3.so
1099 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_python3.so
1100 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_python3.so
1101 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_python3.so
1102 %{python3_sitelib}/nnstreamer_python.so
1103 %endif
1104
1105 %if 0%{?protobuf_support}
1106 %files protobuf
1107 %manifest nnstreamer.manifest
1108 %defattr(-,root,root,-)
1109 %{_libdir}/libnnstreamer_protobuf.so
1110 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_protobuf.so
1111 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_protobuf.so
1112 %endif
1113
1114 %if 0%{?flatbuf_support}
1115 %files flatbuf
1116 %manifest nnstreamer.manifest
1117 %defattr(-,root,root,-)
1118 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_flatbuf.so
1119 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_flatbuf.so
1120 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_flexbuf.so
1121 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_flexbuf.so
1122 %endif
1123
1124 # for pytorch
1125 %if 0%{?pytorch_support}
1126 %files pytorch
1127 %manifest nnstreamer.manifest
1128 %defattr(-,root,root,-)
1129 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_pytorch.so
1130 %endif
1131
1132 # for caffe2
1133 %if 0%{?caffe2_support}
1134 %files caffe2
1135 %manifest nnstreamer.manifest
1136 %defattr(-,root,root,-)
1137 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_caffe2.so
1138 %endif
1139
1140 # for lua
1141 %if 0%{?lua_support}
1142 %files lua
1143 %manifest nnstreamer.manifest
1144 %defattr(-,root,root,-)
1145 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_lua.so
1146 %endif
1147
1148 # for tvm
1149 %if 0%{?tvm_support}
1150 %files tvm
1151 %manifest nnstreamer.manifest
1152 %defattr(-,root,root,-)
1153 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tvm.so
1154 %endif
1155
1156 # for snpe
1157 %if 0%{?snpe_support}
1158 # Workaround: Conditionally enable nnstreamer-snpe rpm package
1159 # when existing actual snpe library (snpe.pc)
1160 %files snpe -f %{files_for_snpe_subpackage}
1161 %manifest nnstreamer.manifest
1162 %defattr(-,root,root,-)
1163 %endif
1164
1165 # for trix-engine
1166 %if 0%{?trix_engine_support}
1167 %files trix-engine
1168 %manifest nnstreamer.manifest
1169 %defattr(-,root,root,-)
1170 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_trix-engine.so
1171 %endif
1172
1173 # for onnxruntime
1174 %if 0%{?onnxruntime_support}
1175 %files onnxruntime
1176 %manifest nnstreamer.manifest
1177 %defattr(-,root,root,-)
1178 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_onnxruntime.so
1179 %endif
1180
1181 %files devel
1182 %{_includedir}/nnstreamer/tensor_if.h
1183 %{_includedir}/nnstreamer/tensor_filter_custom.h
1184 %{_includedir}/nnstreamer/tensor_filter_custom_easy.h
1185 %{_includedir}/nnstreamer/tensor_converter_custom.h
1186 %{_includedir}/nnstreamer/tensor_decoder_custom.h
1187 %{_includedir}/nnstreamer/nnstreamer_plugin_api_decoder.h
1188 %{_includedir}/nnstreamer/nnstreamer_plugin_api_converter.h
1189 %{_includedir}/nnstreamer/nnstreamer_plugin_api.h
1190 %{_includedir}/nnstreamer/nnstreamer_util.h
1191 %{_includedir}/nnstreamer/tensor_filter_cpp.hh
1192 %{_includedir}/nnstreamer/nnstreamer_cppplugin_api_filter.hh
1193 %{_libdir}/pkgconfig/nnstreamer.pc
1194 %{_libdir}/pkgconfig/nnstreamer-cpp.pc
1195
1196 %files devel-internal
1197 %{_includedir}/nnstreamer/nnstreamer_internal.h
1198 %{_includedir}/nnstreamer/tensor_filter_single.h
1199 %{_libdir}/pkgconfig/nnstreamer-internal.pc
1200
1201 %files devel-static
1202 %{_libdir}/*.a
1203 %exclude %{_libdir}/libnnstreamer-single.a
1204
1205 %files single-devel
1206 %{_includedir}/nnstreamer/tensor_typedef.h
1207 %{_includedir}/nnstreamer/nnstreamer_plugin_api_filter.h
1208 %{_includedir}/nnstreamer/nnstreamer_plugin_api_trainer.h
1209 %{_includedir}/nnstreamer/nnstreamer_plugin_api_util.h
1210 %{_includedir}/nnstreamer/nnstreamer_version.h
1211 %{_libdir}/pkgconfig/nnstreamer-single.pc
1212
1213 %files single-devel-static
1214 %{_libdir}/libnnstreamer-single.a
1215
1216 %if 0%{?testcoverage}
1217 %files unittest-coverage
1218 %{_datadir}/nnstreamer/unittest/*
1219 %endif
1220
1221 %if 0%{?nnfw_support}
1222 %files nnfw
1223 %manifest nnstreamer.manifest
1224 %defattr(-,root,root,-)
1225 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_nnfw.so
1226 %endif
1227
1228 %if 0%{?armnn_support}
1229 %files armnn
1230 %manifest nnstreamer.manifest
1231 %defattr(-,root,root,-)
1232 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_armnn.so
1233 %endif
1234
1235 %if 0%{mvncsdk2_support}
1236 %files -n nnstreamer-ncsdk2
1237 %defattr(-,root,root,-)
1238 %manifest nnstreamer.manifest
1239 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_movidius-ncsdk2.so
1240 %endif  # mvncsdk2_support
1241
1242 %if 0%{?vivante_support}
1243 %files vivante
1244 %defattr(-,root,root,-)
1245 %manifest nnstreamer.manifest
1246 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_vivante.so
1247 %endif
1248
1249 %if 0%{tizen_sensor_support}
1250 %files tizen-sensor
1251 %manifest nnstreamer.manifest
1252 %{gstlibdir}/libnnstreamer-tizen-sensor.so
1253 %endif  # tizen_sensor_support
1254
1255 %if 0%{?grpc_support}
1256 %files grpc
1257 %defattr(-,root,root,-)
1258 %manifest nnstreamer.manifest
1259 %license LICENSE
1260 %{gstlibdir}/libnnstreamer-grpc.so
1261
1262 %if 0%{?protobuf_support}
1263 %files grpc-protobuf
1264 %defattr(-,root,root,-)
1265 %manifest nnstreamer.manifest
1266 %license LICENSE
1267 %{_libdir}/libnnstreamer_grpc_protobuf.so
1268 %endif
1269
1270 %if 0%{?flatbuf_support}
1271 %files grpc-flatbuf
1272 %defattr(-,root,root,-)
1273 %manifest nnstreamer.manifest
1274 %license LICENSE
1275 %{_libdir}/libnnstreamer_grpc_flatbuf.so
1276 %endif
1277
1278 %endif  # grpc_support
1279
1280 %if 0%{?edgetpu_support}
1281 %files edgetpu
1282 %manifest nnstreamer.manifest
1283 %license LICENSE
1284 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_edgetpu.so
1285 %endif
1286
1287 %if 0%{?release_test}
1288 %files unittests
1289 %manifest nnstreamer.manifest
1290 %{_libdir}/libnnstreamer_unittest_util.so
1291 %{_libdir}/libcppfilter_test.so
1292 %if 0%{?mvncsdk2_support}
1293 %{_libdir}/libmvncsdk_test.so
1294 %endif
1295 %{_prefix}/lib/nnstreamer/customfilters/*.so
1296 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/nnstreamer-test.ini
1297 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/tests
1298 %endif
1299
1300 %if 0%{?openvino_support}
1301 %files openvino
1302 %manifest nnstreamer.manifest
1303 %license LICENSE
1304 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_openvino.so
1305 %endif
1306
1307 %files util
1308 %{_bindir}/nnstreamer-check
1309 %{_bindir}/nnstreamer-parser
1310 %{_prefix}/%{nnstbindir}/nnstreamer-check
1311 %{_prefix}/%{nnstbindir}/nnstreamer-parser
1312
1313 %files misc
1314 %{gstlibdir}/libgstjoin.so
1315 %if 0%{?mqtt_support}
1316 %{gstlibdir}/libgstmqtt.so
1317 %endif
1318
1319 %if 0%{?datarepo_support}
1320 %files datarepo
1321 %manifest nnstreamer.manifest
1322 %defattr(-,root,root,-)
1323 %license LICENSE
1324 %{gstlibdir}/libgstdatarepo.so
1325 %endif
1326
1327 %if 0%{?release_test}
1328 %files test-devel
1329 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/subplugin_unittest_template.cc.in
1330 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/nnstreamer-test.ini.in
1331 %endif
1332
1333 %changelog
1334 * Fri Sep 15 2023 MyungJoo Ham <myungjoo.ham@samsung.com>
1335 - Start development of 2.4.1 (2.4.2-RC1)
1336
1337 * Thu Sep 12 2023 MyungJoo Ham <myungjoo.ham@samsung.com>
1338 - Release of 2.4.0, the new LTS version of 2023. (Tizen 8.0 M2)
1339
1340 * Tue Sep 27 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1341 - Start development of 2.3.0 (2.4.0-RC1) for experimental and unstable features.
1342
1343 * Thu Sep 22 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1344 - Release of 2.2.0, the new LTS version of 2022. (Tizen 7.0 M2)
1345
1346 * Wed Apr 13 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1347 - Start development of 2.1.1 (2.2.0-RC2)
1348
1349 * Tue Sep 28 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1350 - Start development of 2.1.0 (2.2.0-RC1)
1351
1352 * Tue Sep 28 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1353 - Release of 2.0.0, the new LTS version of 2021.
1354
1355 * Thu Jun 03 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1356 - Start development of 1.7.2 (1.8.0-RC3)
1357
1358 * Fri Nov 20 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1359 - Start development of 1.7.1 (1.8.0-RC2)
1360
1361 * Wed Sep 09 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1362 - Start development of 1.7.0 (1.8.0-RC1)
1363
1364 * Wed Sep 09 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1365 - Release of 1.6.0 (LTS for Tizen 6.0 M2 and Android-next products)
1366
1367 * Thu Jun 04 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1368 - Start development of 1.5.3 (1.6.0-RC4)
1369
1370 * Wed Apr 08 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1371 - Start development of 1.5.2 (1.6.0-RC3)
1372
1373 * Wed Mar 18 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1374 - Start development of 1.5.1 (1.6.0-RC2)
1375
1376 * Tue Feb 11 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1377 - Start development of 1.5.0 (1.6.0-RC1)
1378
1379 * Tue Feb 11 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1380 - Release of 1.4.0 (Tensor-filter API has been updated!)
1381
1382 * Mon Feb 03 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1383 - Release of 1.3.1
1384
1385 * Wed Dec 11 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1386 - 1.3.0 development starts
1387
1388 * Wed Dec 11 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1389 - Release of 1.2.0
1390
1391 * Thu Sep 26 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1392 - Release of 1.0.0 (1.0 RC2 == 1.0 Release for Tizen 5.5 M2)
1393
1394 * Wed Aug 14 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1395 - Release of 0.3.0 (1.0 RC1)
1396
1397 * Mon May 27 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1398 - Release of 0.2.0
1399
1400 * Wed Mar 20 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1401 - Release of 0.1.2
1402
1403 * Mon Feb 25 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1404 - Release of 0.1.1
1405
1406 * Thu Jan 24 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1407 - Release of 0.1.0
1408
1409 * Mon Dec 03 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1410 - Release of 0.0.3
1411
1412 * Mon Oct 15 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1413 - Started single-binary packaging for 0.0.3
1414
1415 * Fri May 25 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1416 - Packaged tensor_convert plugin.