Remove flatbuf-python dependency
[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 %description flatbuf
440 NNStreamer's tensor_converter and decoder subplugin of flatbuf.
441 %endif
442
443 # for pytorch
444 %if 0%{?pytorch_support}
445 %package pytorch
446 Summary:        NNStreamer PyTorch Support
447 Requires:       nnstreamer-single = %{version}-%{release}
448 Requires:       pytorch
449 %description pytorch
450 NNStreamer's tensor_filter subplugin of pytorch
451 %endif
452
453 # for caffe2
454 %if 0%{?caffe2_support}
455 %package caffe2
456 Summary:        NNStreamer caffe2 Support
457 Requires:       nnstreamer-single = %{version}-%{release}
458 Requires:       pytorch
459 %description caffe2
460 NNStreamer's tensor_filter subplugin of caffe2
461 %endif
462
463 # for lua
464 %if 0%{?lua_support}
465 %package lua
466 Summary:        NNStreamer lua Support
467 Requires:       nnstreamer-single = %{version}-%{release}
468 Requires:       lua
469 %description lua
470 NNStreamer's tensor_filter subplugin of lua
471 %endif
472
473 %if 0%{?tvm_support}
474 %package tvm
475 Summary:        NNStreamer TVM support
476 Requires:       nnstreamer = %{version}-%{release}
477 Requires:       tvm
478 %description tvm
479 NNStreamer's tensor_filter subplugin of tvm
480 %endif
481
482 # for snpe
483 %if 0%{?snpe_support}
484 %package snpe
485 Summary:        NNStreamer snpe Support
486 Requires:       nnstreamer-single = %{version}-%{release}
487 Requires:       snpe
488 %description snpe
489 NNStreamer's tensor_filter subplugin of snpe
490 %endif
491
492 # for trix-engone
493 %if 0%{?trix_engine_support}
494 %package trix-engine
495 Summary:        NNStreamer TRIx-Engine support
496 Requires:       nnstreamer-single = %{version}-%{release}
497 Requires:       trix-engine
498 %description trix-engine
499 NNStreamer's tensor_filter subplugin of trix-engine
500 %endif
501
502 # for onnxruntime
503 %if 0%{?onnxruntime_support}
504 %package onnxruntime
505 Summary:        NNStreamer onnxruntime Support
506 Requires:       nnstreamer-single = %{version}-%{release}
507 %description onnxruntime
508 NNStreamer's tensor_filter subplugin of onnxruntime
509 %endif
510
511 %package devel
512 Summary:        Development package for custom tensor operator developers (tensor_filter/custom)
513 Requires:       nnstreamer = %{version}-%{release}
514 Requires:       nnstreamer-single-devel = %{version}-%{release}
515 Requires:       glib2-devel
516 Requires:       gstreamer-devel
517 %description devel
518 Development package for subplugin or custom filter developers.
519 Developers may add support for new hardware accelerators or neural network
520 frameworks, or introduce new data types and their converters for tensors.
521 However, applications or service developers generally do not need this.
522 This contains corresponding header files and .pc pkgconfig file.
523
524 %package devel-internal
525 Summary:    Development package to access internal functions of NNStreamer
526 Requires:   nnstreamer-devel = %{version}-%{release}
527 %description devel-internal
528 Development package to access internal functions of NNStreamer.
529 This may be used by API packages, which wrap nnstreamer features.
530 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.
531
532 %package devel-static
533 Summary:    Static library for nnstreamer-devel package
534 Requires:   nnstreamer-devel = %{version}-%{release}
535 %description devel-static
536 Static library package of nnstreamer-devel.
537
538 %package single-devel
539 Summary:    Development package for NNStreamer single-shot
540 Requires:   nnstreamer-single = %{version}-%{release}
541 %description single-devel
542 Development package for NNStreamer single-shot.
543
544 %package single-devel-static
545 Summary:    Static library for nnstreamer-single-devel package
546 Requires:   nnstreamer-single-devel = %{version}-%{release}
547 %description single-devel-static
548 Static library package of nnstreamer-single-devel.
549
550 %package test-devel
551 Summary: Development package to provide testable environment of a subplugin (tensor_filter/custom)
552 Requires: nnstreamer-devel = %{version}-%{release}
553 Requires: nnstreamer-single-devel = %{version}-%{release}
554 Provides: nnstreamer-configuration = %{version}-%{release}
555 Conflicts: nnstreamer-default-configuration
556 %description test-devel
557 Development package to provide testable environment of NNStreamer sub-plugin.
558 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.
559 Also This package provides test templates to be used with.
560
561 %if 0%{?testcoverage}
562 %package unittest-coverage
563 Summary:        NNStreamer UnitTest Coverage Analysis Result
564 %description unittest-coverage
565 HTML pages of lcov results of NNStreamer generated during rpmbuild
566 %endif
567
568 %if 0%{?nnfw_support}
569 %package nnfw
570 Summary:        NNStreamer Tizen-nnfw runtime support
571 Requires:       nnstreamer-single = %{version}-%{release}
572 Requires:       nnfw
573 %description nnfw
574 NNStreamer's tensor_filter subplugin of Tizen-NNFW Runtime. (5.5 M2 +)
575 %endif
576
577 %if 0%{?mvncsdk2_support}
578 %package        ncsdk2
579 Summary:        NNStreamer Intel Movidius NCSDK2 support
580 Requires:       nnstreamer-single = %{version}-%{release}
581 Group:          Machine Learning/ML Framework
582 %description    ncsdk2
583 NNStreamer's tensor_filter subplugin of Intel Movidius Neural Compute stick SDK2.
584 %endif # mvncsdk2_support
585
586 %if 0%{openvino_support}
587 %package        openvino
588 Summary:        NNStreamer OpenVino support
589 Requires:       nnstreamer-single = %{version}-%{release}
590 Requires:       openvino
591 Group:          Machine Learning/ML Framework
592 %description    openvino
593 NNStreamer's tensor_filter subplugin for OpenVino support.
594 %endif # openvino_support
595
596 # Add Tizen's sensor framework API integration
597 %if 0%{tizen_sensor_support}
598 %package tizen-sensor
599 Summary:        NNStreamer integration of tizen sensor framework (tensor_src_tizensensor)
600 Requires:       nnstreamer = %{version}-%{release}
601 Requires:       capi-system-sensor
602 %description tizen-sensor
603 You can include Tizen sensor framework nodes as source elements of GStreamer/NNStreamer pipelines with this package.
604 %endif # tizen_sensor_support
605
606 %if 0%{grpc_support}
607 %package grpc
608 Summary:        NNStreamer gRPC support
609 Requires:       nnstreamer = %{version}-%{release}
610 %if %{with tizen}
611 Recommends:     nnstreamer-grpc-protobuf = %{version}-%{release}
612 Recommends:     nnstreamer-grpc-flatbuf = %{version}-%{release}
613 %endif
614 %description  grpc
615 NNStreamer's tensor_source/sink plugins for gRPC support.
616
617 %if 0%{protobuf_support}
618 %package grpc-protobuf
619 Summary:        NNStreamer gRPC/Protobuf support
620 Requires:       nnstreamer-grpc = %{version}-%{release}
621 Requires:       nnstreamer-protobuf = %{version}-%{release}
622 %description  grpc-protobuf
623 NNStreamer's gRPC IDL support for protobuf
624 %endif
625
626 %if 0%{flatbuf_support}
627 %package grpc-flatbuf
628 Summary:        NNStreamer gRPC/Flatbuf support
629 Requires:       nnstreamer-grpc = %{version}-%{release}
630 Requires:       nnstreamer-flatbuf = %{version}-%{release}
631 %description  grpc-flatbuf
632 NNStreamer's gRPC IDL support for flatbuf
633 %endif
634
635 %endif # grpc_support
636
637 %if 0%{?edgetpu_support}
638 %package edgetpu
639 Summary:        NNStreamer plugin for Google-Coral Edge TPU
640 Requires:       libedgetpu1
641 Requires:       nnstreamer-single = %{version}-%{release}
642 %description edgetpu
643 You may enable this package to use Google Edge TPU with NNStreamer and Tizen ML APIs.
644 %endif
645
646 %if 0%{?release_test}
647 %package unittests
648 Summary:        NNStreamer unittests for core and plugins
649 Requires:       nnstreamer = %{version}-%{release}
650 %description unittests
651 Various unit test cases and custom subplugin examples for NNStreamer.
652 %endif
653
654 %package util
655 Summary:        NNStreamer developer utilities
656 %description util
657 NNStreamer developer utilities include nnstreamer configuration checker.
658
659 %package misc
660 Summary:        NNStreamer extra packages
661 %if 0%{?mqtt_support}
662 BuildRequires:  pkgconfig(paho-mqtt-c)
663 %endif
664
665 %description misc
666 Provides additional gstreamer plugins for nnstreamer pipelines
667
668 %if 0%{?datarepo_support}
669 %package datarepo
670 Summary: NNStreamer MLOps Data Repository plugin packages
671 %description datarepo
672 NNStreamer's datareposrc/sink plugins for reading and writing files in MLOps Data Repository
673 %define enable_datarepo -Ddatarepo-support=enabled
674 %else
675 %define enable_datarepo -Ddatarepo-support=disabled
676 %endif
677
678 ## Define build options ##
679 %define enable_tizen -Denable-tizen=false
680 %define enable_tizen_sensor -Denable-tizen-sensor=false
681 %define enable_mvncsdk2 -Dmvncsdk2-support=disabled
682 %define enable_openvino -Denable-openvino=false
683 %define enable_nnfw_runtime -Dnnfw-runtime-support=disabled
684 %define element_restriction -Denable-element-restriction=false
685 %define enable_test -Denable-test=true
686 %define install_test -Dinstall-test=false
687
688 %if 0%{mvncsdk2_support}
689 %define enable_mvncsdk2 -Dmvncsdk2-support=enabled
690 %endif
691
692 %if 0%{openvino_support}
693 %define enable_openvino -Denable-openvino=true
694 %endif
695
696 %if 0%{?nnfw_support}
697 %define enable_nnfw_runtime -Dnnfw-runtime-support=enabled
698 %endif  # nnfw_support
699
700 %if 0%{tizen_sensor_support}
701 %define enable_tizen_sensor -Denable-tizen-sensor=true
702 %endif
703
704 %if !0%{?check_test}
705 %define enable_test -Denable-test=false
706 %endif
707
708 %if 0%{?release_test}
709 %define install_test -Dinstall-test=true
710 %endif
711
712 %if %{with tizen}
713 %define enable_tizen -Denable-tizen=true -Dtizen-version-major=0%{tizen_version_major}
714 # Element allowance in Tizen
715 %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 '
716 %define allowed_element_edgeai   'rtpdec rtspsrc rtspclientsink zmqsrc zmqsink mqttsrc mqttsink udpsrc udpsink multiudpsink tcpclientsink tcpclientsrc tcpserversink tcpserversrc edgesrc edgesink gdppay gdpdepay '
717 %define allowed_element_audio    'audioamplify audiochebband audiocheblimit audiodynamic audioecho audiofirfilter audioiirfilter audioinvert audiokaraoke audiopanorama audiowsincband audiowsinclimit scaletempo stereo '
718 %define allowed_element_tizen    'tizencamerasrc avsysvideosrc camerasrc tvcamerasrc fimcconvert tizenwlsink '
719 %define allowed_element_extra    'join datareposrc datareposink '
720
721 %define allowed_element_all      %{allowed_element_base}%{allowed_element_audio}%{allowed_element_edgeai}%{allowed_element_tizen}%{allowed_element_extra}
722 %if "%{?profile}" == "tv"
723 %define allowed_element_vd       'tvdpbsrc '
724 %define allowed_element          %{allowed_element_all}%{allowed_element_vd}
725 %else
726 %define allowed_element          %{allowed_element_all}
727 %endif
728 %define element_restriction -Denable-element-restriction=true -Dallowed-elements=%{allowed_element}
729 %endif #if tizen
730
731 # Support tensorflow
732 %if 0%{?tensorflow_support}
733 %define enable_tf -Dtf-support=enabled
734 %else
735 %define enable_tf -Dtf-support=disabled
736 %endif
737
738 # Support tensorflow-lite
739 %if 0%{?tensorflow_lite_support}
740 %define enable_tf_lite -Dtflite-support=enabled
741 %else
742 %define enable_tf_lite -Dtflite-support=disabled
743 %endif
744
745 # Support tensorflow2-lite
746 %if 0%{?tensorflow2_lite_support}
747 %define enable_tf2_lite -Dtflite2-support=enabled -Dtflite2-custom-support=enabled
748 %else
749 %define enable_tf2_lite -Dtflite2-support=disabled -Dtflite2-custom-support=disabled
750 %endif
751
752 # Support pytorch
753 %if 0%{?pytorch_support}
754 %define enable_pytorch -Dpytorch-support=enabled
755 %else
756 %define enable_pytorch -Dpytorch-support=disabled
757 %endif
758
759 # Support caffe2
760 %if 0%{?caffe2_support}
761 %define enable_caffe2 -Dcaffe2-support=enabled
762 %else
763 %define enable_caffe2 -Dcaffe2-support=disabled
764 %endif
765
766 # Support ArmNN
767 %if 0%{?armnn_support}
768 %define enable_armnn -Darmnn-support=enabled
769 %else
770 %define enable_armnn -Darmnn-support=disabled
771 %endif
772
773 # Support python
774 %if 0%{?python3_support}
775 %define enable_python3 -Dpython3-support=enabled
776 %else
777 %define enable_python3 -Dpython3-support=disabled
778 %endif
779
780 # Support edgetpu
781 %if 0%{?edgetpu_support}
782 %define enable_edgetpu -Denable-edgetpu=true
783 %else
784 %define enable_edgetpu -Denable-edgetpu=false
785 %endif
786
787 # Support flatbuffer
788 %if 0%{?flatbuf_support}
789 %define enable_flatbuf -Dflatbuf-support=enabled
790 %else
791 %define enable_flatbuf -Dflatbuf-support=disabled
792 %endif
793
794 # Support mqtt
795 %if 0%{?mqtt_support}
796 %define enable_mqtt -Dmqtt-support=enabled
797 %else
798 %define enable_mqtt -Dmqtt-support=disabled
799 %endif
800
801 # Support lua
802 %if 0%{?lua_support}
803 %define enable_lua -Dlua-support=enabled
804 %else
805 %define enable_lua -Dlua-support=disabled
806 %endif
807
808 # Support tvm
809 %if 0%{?tvm_support}
810 %define enable_tvm -Dtvm-support=enabled
811 %else
812 %define enable_tvm -Dtvm-support=disabled
813 %endif
814
815 # Support trix-engine
816 %if 0%{?trix_engine_support}
817 %define enable_trix_engine -Dtrix-engine-support=enabled
818 %else
819 %define enable_trix_engine -Dtrix-engine-support=disabled
820 %endif
821
822 # Support ml-agent
823 %if 0%{?ml_agent_support}
824 %define enable_ml_agent -Dml-agent-support=enabled
825 %else
826 %define enable_ml_agent -Dml-agent-support=disabled
827 %endif
828
829 # Support onnxruntime
830 %if 0%{?onnxruntime_support}
831 %define enable_onnxruntime -Donnxruntime-support=enabled
832 %else
833 %define enable_onnxruntime -Donnxruntime-support=disabled
834 %endif
835
836 # Framework priority for each file extension
837 %define fw_priority_bin ''
838 %define fw_priority_nb ''
839
840 %if "%{?profile}" == "tv"
841 %define fw_priority_bin 'vd_aifw'
842 %define fw_priority_nb 'vd_aifw'
843 %else
844 %if 0%{openvino_support}
845 %define fw_priority_bin 'openvino'
846 %endif
847 %endif
848
849 %define fp16_enabled 0
850 %ifarch %arm aarch64
851 %define fp16_enabled 1
852 # x64/x86 requires GCC >= 12 for fp16 support.
853 %endif
854
855 ## Float16 support
856 %if 0%{?fp16_enabled}
857 %define fp16_support -Denable-float16=true
858 %else
859 %define fp16_support -Denable-float16=false
860 %endif
861
862 %if 0%{?nnstreamer_edge_support}
863 %define nnsedge -Dnnstreamer-edge-support=enabled
864 %else
865 %define nnsedge -Dnnstreamer-edge-support=disabled
866 %endif
867
868 %define fw_priority -Dframework-priority-nb=%{fw_priority_nb} -Dframework-priority-bin=%{fw_priority_bin}
869
870 %prep
871 rm -rf ./%{builddir}
872 %setup -q
873 cp %{SOURCE1001} .
874
875 %build
876 # Remove compiler flags for meson to decide the cpp version
877 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-std=gnu++11||"`
878
879 %if 0%{?testcoverage}
880 # To test coverage, disable optimizations (and should unset _FORTIFY_SOURCE to use -O0)
881 CFLAGS=`echo $CFLAGS | sed -e "s|-O[1-9]|-O0|g"`
882 CFLAGS=`echo $CFLAGS | sed -e "s|-Wp,-D_FORTIFY_SOURCE=[1-9]||g"`
883 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-O[1-9]|-O0|g"`
884 CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-Wp,-D_FORTIFY_SOURCE=[1-9]||g"`
885 # also, use the meson's base option, -Db_coverage, instead of --coverage/-fprofile-arcs and -ftest-coverage
886 %define enable_test_coverage -Db_coverage=true
887 %else
888 %define enable_test_coverage -Db_coverage=false
889 %endif
890
891 mkdir -p %{builddir}
892
893 meson --buildtype=plain --prefix=%{_prefix} --sysconfdir=%{_sysconfdir} --libdir=%{_lib} \
894         --bindir=%{nnstbindir} --includedir=include -Dsubplugindir=%{_prefix}/lib/nnstreamer \
895         %{enable_tizen} %{element_restriction} %{fw_priority} -Denable-env-var=false -Denable-symbolic-link=false \
896         %{enable_tf_lite} %{enable_tf2_lite} %{enable_tf} %{enable_pytorch} %{enable_caffe2} %{enable_python3} \
897         %{enable_nnfw_runtime} %{enable_mvncsdk2} %{enable_openvino} %{enable_armnn} %{enable_edgetpu}  %{enable_vivante} \
898         %{enable_flatbuf} %{enable_trix_engine} %{enable_datarepo} \
899         %{enable_tizen_sensor} %{enable_mqtt} %{enable_lua} %{enable_tvm} %{enable_onnxruntime} %{enable_test} %{enable_test_coverage} %{install_test} \
900         %{fp16_support} %{nnsedge} %{enable_ml_agent} \
901         %{builddir}
902
903 ninja -C %{builddir} %{?_smp_mflags}
904
905 export NNSTREAMER_SOURCE_ROOT_PATH=$(pwd)
906 export NNSTREAMER_BUILD_ROOT_PATH=$(pwd)/%{builddir}
907 export GST_PLUGIN_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/gst:${NNSTREAMER_BUILD_ROOT_PATH}/ext
908 export NNSTREAMER_CONF=${NNSTREAMER_BUILD_ROOT_PATH}/nnstreamer-test.ini
909 export NNSTREAMER_FILTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_filter
910 export NNSTREAMER_DECODERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_decoder
911 export NNSTREAMER_CONVERTERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_converter
912 export NNSTREAMER_TRAINERS=${NNSTREAMER_BUILD_ROOT_PATH}/ext/nnstreamer/tensor_trainer
913
914 %define test_script $(pwd)/packaging/run_unittests_binaries.sh
915
916 # if it's tizen && non-TV, run unittest even if "unit_test"==0 for build-time sanity checks.
917 %if ( %{with tizen} && "%{?profile}" != "tv" )
918 %if 0%{nnfw_support}
919     bash %{test_script} ./tests/tizen_nnfw_runtime/unittest_nnfw_runtime_raw
920 %endif
921 %if 0%{tizen_sensor_support}
922     bash %{test_script} ./tests/tizen_sensor/unittest_tizen_sensor
923 %endif
924 %endif #if tizen
925
926 # If "unit_test"==0, don't run these for the sake of build speed.
927 %if 0%{?unit_test}
928     bash %{test_script} ./tests
929     bash %{test_script} ./tests/cpp_methods
930     bash %{test_script} ./tests/nnstreamer_filter_extensions_common
931 %if 0%{?datarepo_support}
932     bash %{test_script} ./tests/nnstreamer_datarepo
933 %endif
934 %if 0%{?nnstreamer_edge_support}
935     bash %{test_script} ./tests/nnstreamer_edge
936 %endif
937 %if 0%{mvncsdk2_support}
938     LD_LIBRARY_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/tests/nnstreamer_filter_mvncsdk2:. bash %{test_script} ./tests/nnstreamer_filter_mvncsdk2/unittest_filter_mvncsdk2
939 %endif
940 %if 0%{edgetpu_support}
941     LD_LIBRARY_PATH=${NNSTREAMER_BUILD_ROOT_PATH}/tests/nnstreamer_filter_edgetpu:. bash %{test_script} ./tests/nnstreamer_filter_edgetpu/unittest_edgetpu
942 %endif
943 %ifarch %arm x86_64 aarch64 ## @todo This is a workaround. Need to remove %ifarch/%endif some day.
944     bash %{test_script} ./tests/nnstreamer_filter_tvm
945 %endif
946     pushd tests
947
948     %ifarch %arm aarch64
949     ## @todo Workaround for QEMU compatibility issue. Newer qemu may be ok with this.
950     export SKIP_QEMU_ARM_INCOMPATIBLE_TESTS=1
951     %else
952     export SKIP_QEMU_ARM_INCOMPATIBLE_TESTS=0
953     %endif
954
955 %if 0%{?fp16_enabled}
956     ## If fp16 tests fail, stop the build!
957     export FLOAT16_SUPPORTED=1
958 %endif
959     ssat -n -p=1 --summary summary.txt -cn _n
960     popd
961
962 python3 tools/development/count_test_cases.py %{builddir} tests/summary.txt
963 %else
964 %if 0%{?edge_test} && 0%{?nnstreamer_edge_support}
965     bash %{test_script} tests/nnstreamer_edge
966     pushd tests/nnstreamer_edge
967     ssat -n -p=1 --summary summary.txt -cn _n
968     popd
969     python3 tools/development/count_test_cases.py %{builddir} tests/nnstreamer_edge/summary.txt
970 %endif
971 %endif
972
973 %install
974 DESTDIR=%{buildroot} ninja -C %{builddir} install
975
976 mkdir -p %{buildroot}%{_bindir}
977 pushd %{buildroot}%{_bindir}
978 ln -sf %{_prefix}/%{nnstbindir}/nnstreamer-check nnstreamer-check
979 ln -sf %{_prefix}/%{nnstbindir}/nnstreamer-parser nnstreamer-parser
980 popd
981
982 %if 0%{?python3_support}
983 mkdir -p %{buildroot}%{python3_sitelib}
984 pushd %{buildroot}%{python3_sitelib}
985 ln -sf %{_libdir}/nnstreamer_python3.so nnstreamer_python.so
986 popd
987 %endif
988
989 %if 0%{?snpe_support}
990 %define snpe_sub_plugin libnnstreamer_filter_snpe.so
991 %define files_for_snpe_subpackage files_for_snpe_subpackage.txt
992 rm -f %{files_for_snpe_subpackage}
993 find %{buildroot} -type f -name '%{snpe_sub_plugin}' -printf '/%%P\n' > %{files_for_snpe_subpackage}
994 %endif
995
996 %if 0%{?testcoverage}
997 ##
998 # The included directories are:
999 #
1000 # gst: the nnstreamer elements
1001 # nnstreamer_example: custom plugin examples
1002 # common: common libraries for gst (elements)
1003 # include: common library headers and headers for external code (packaged as "devel")
1004 #
1005 # Intentionally excluded directories are:
1006 #
1007 # tests: We are not going to show testcoverage of the test code itself or example applications
1008 #
1009 # 'lcov' generates the date format with UTC time zone by default. Let's replace UTC with KST.
1010 # If you ccan get a root privilege, run ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
1011 TZ='Asia/Seoul'; export TZ
1012
1013 # Get commit info
1014 VCS=`cat ${RPM_SOURCE_DIR}/nnstreamer.spec | grep "^VCS:" | sed "s|VCS:\\W*\\(.*\\)|\\1|"`
1015
1016 # Create human readable unit test coverage report web page.
1017 # Create null gcda files if gcov didn't create it because there is completely no unit test for them.
1018 find . -name "*.gcno" -exec sh -c 'touch -a "${1%.gcno}.gcda"' _ {} \;
1019 # Remove gcda for meaningless file (CMake's autogenerated)
1020 find . -name "CMakeCCompilerId*.gcda" -delete
1021 find . -name "CMakeCXXCompilerId*.gcda" -delete
1022 #find . -path "/%{builddir}/*.j
1023 # Generate report
1024 lcov -t 'NNStreamer Unit Test Coverage' -o unittest.info -c -d . -b %{builddir} --no-external
1025 # Exclude generated files (e.g., Orc, Protobuf) and device-dependent filters.
1026 lcov -r unittest.info "*/*-orc.*" "*/tests/*" "*/tools/*" "*/meson*/*" "*/*@sha/*" "*/*_openvino*" "*/*_edgetpu*" "*/*_movidius_ncsdk2*" "*/*.so.p/*" -o unittest-filtered.info
1027 # Visualize the report
1028 genhtml -o result unittest-filtered.info -t "nnstreamer %{version}-%{release} ${VCS}" --ignore-errors source -p ${RPM_BUILD_DIR}
1029
1030 mkdir -p %{buildroot}%{_datadir}/nnstreamer/unittest/
1031 cp -r result %{buildroot}%{_datadir}/nnstreamer/unittest/
1032 %endif  # test coverage
1033
1034 %post -p /sbin/ldconfig
1035
1036 %postun -p /sbin/ldconfig
1037
1038 %files
1039
1040 %files core
1041 %manifest nnstreamer.manifest
1042 %defattr(-,root,root,-)
1043 %license LICENSE
1044 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_bounding_boxes.so
1045 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_tensor_region.so
1046 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_pose_estimation.so
1047 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_image_segment.so
1048 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_image_labeling.so
1049 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_direct_video.so
1050 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_octet_stream.so
1051 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_cpp.so
1052 %{gstlibdir}/libnnstreamer.so
1053 %if 0%{?nnstreamer_edge_support}
1054 %{gstlibdir}/libgstedge.so
1055 %endif
1056 %{_libdir}/libnnstreamer.so
1057
1058 %files single
1059 %manifest nnstreamer.manifest
1060 %defattr(-,root,root,-)
1061 %license LICENSE
1062 %{_libdir}/libnnstreamer-single.so
1063
1064 %files default-configuration
1065 %config %{_sysconfdir}/nnstreamer.ini
1066
1067 # for tensorflow
1068 %if 0%{?tensorflow_support}
1069 %files tensorflow
1070 %manifest nnstreamer.manifest
1071 %defattr(-,root,root,-)
1072 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow.so
1073 %endif
1074
1075 %if 0%{?tensorflow_lite_support}
1076 %files tensorflow-lite
1077 %manifest nnstreamer.manifest
1078 %defattr(-,root,root,-)
1079 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow1-lite.so
1080 %endif
1081
1082 # for tensorflow2-lite
1083 %if 0%{?tensorflow2_lite_support}
1084 %files tensorflow2-lite
1085 %manifest nnstreamer.manifest
1086 %defattr(-,root,root,-)
1087 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow2-lite.so
1088 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tensorflow2-lite-custom.so
1089 %endif
1090
1091 %if 0%{?python3_support}
1092 %files python3
1093 %manifest nnstreamer.manifest
1094 %defattr(-,root,root,-)
1095 %{_libdir}/nnstreamer_python3.so
1096 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_python3.so
1097 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_python3.so
1098 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_python3.so
1099 %{python3_sitelib}/nnstreamer_python.so
1100 %endif
1101
1102 %if 0%{?protobuf_support}
1103 %files protobuf
1104 %manifest nnstreamer.manifest
1105 %defattr(-,root,root,-)
1106 %{_libdir}/libnnstreamer_protobuf.so
1107 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_protobuf.so
1108 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_protobuf.so
1109 %endif
1110
1111 %if 0%{?flatbuf_support}
1112 %files flatbuf
1113 %manifest nnstreamer.manifest
1114 %defattr(-,root,root,-)
1115 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_flatbuf.so
1116 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_flatbuf.so
1117 %{_prefix}/lib/nnstreamer/decoders/libnnstreamer_decoder_flexbuf.so
1118 %{_prefix}/lib/nnstreamer/converters/libnnstreamer_converter_flexbuf.so
1119 %endif
1120
1121 # for pytorch
1122 %if 0%{?pytorch_support}
1123 %files pytorch
1124 %manifest nnstreamer.manifest
1125 %defattr(-,root,root,-)
1126 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_pytorch.so
1127 %endif
1128
1129 # for caffe2
1130 %if 0%{?caffe2_support}
1131 %files caffe2
1132 %manifest nnstreamer.manifest
1133 %defattr(-,root,root,-)
1134 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_caffe2.so
1135 %endif
1136
1137 # for lua
1138 %if 0%{?lua_support}
1139 %files lua
1140 %manifest nnstreamer.manifest
1141 %defattr(-,root,root,-)
1142 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_lua.so
1143 %endif
1144
1145 # for tvm
1146 %if 0%{?tvm_support}
1147 %files tvm
1148 %manifest nnstreamer.manifest
1149 %defattr(-,root,root,-)
1150 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_tvm.so
1151 %endif
1152
1153 # for snpe
1154 %if 0%{?snpe_support}
1155 # Workaround: Conditionally enable nnstreamer-snpe rpm package
1156 # when existing actual snpe library (snpe.pc)
1157 %files snpe -f %{files_for_snpe_subpackage}
1158 %manifest nnstreamer.manifest
1159 %defattr(-,root,root,-)
1160 %endif
1161
1162 # for trix-engine
1163 %if 0%{?trix_engine_support}
1164 %files trix-engine
1165 %manifest nnstreamer.manifest
1166 %defattr(-,root,root,-)
1167 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_trix-engine.so
1168 %endif
1169
1170 # for onnxruntime
1171 %if 0%{?onnxruntime_support}
1172 %files onnxruntime
1173 %manifest nnstreamer.manifest
1174 %defattr(-,root,root,-)
1175 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_onnxruntime.so
1176 %endif
1177
1178 %files devel
1179 %{_includedir}/nnstreamer/tensor_if.h
1180 %{_includedir}/nnstreamer/tensor_filter_custom.h
1181 %{_includedir}/nnstreamer/tensor_filter_custom_easy.h
1182 %{_includedir}/nnstreamer/tensor_converter_custom.h
1183 %{_includedir}/nnstreamer/tensor_decoder_custom.h
1184 %{_includedir}/nnstreamer/nnstreamer_plugin_api_decoder.h
1185 %{_includedir}/nnstreamer/nnstreamer_plugin_api_converter.h
1186 %{_includedir}/nnstreamer/nnstreamer_plugin_api.h
1187 %{_includedir}/nnstreamer/nnstreamer_util.h
1188 %{_includedir}/nnstreamer/tensor_filter_cpp.hh
1189 %{_includedir}/nnstreamer/nnstreamer_cppplugin_api_filter.hh
1190 %{_libdir}/pkgconfig/nnstreamer.pc
1191 %{_libdir}/pkgconfig/nnstreamer-cpp.pc
1192
1193 %files devel-internal
1194 %{_includedir}/nnstreamer/nnstreamer_internal.h
1195 %{_includedir}/nnstreamer/tensor_filter_single.h
1196 %{_libdir}/pkgconfig/nnstreamer-internal.pc
1197
1198 %files devel-static
1199 %{_libdir}/*.a
1200 %exclude %{_libdir}/libnnstreamer-single.a
1201
1202 %files single-devel
1203 %{_includedir}/nnstreamer/tensor_typedef.h
1204 %{_includedir}/nnstreamer/nnstreamer_plugin_api_filter.h
1205 %{_includedir}/nnstreamer/nnstreamer_plugin_api_trainer.h
1206 %{_includedir}/nnstreamer/nnstreamer_plugin_api_util.h
1207 %{_includedir}/nnstreamer/nnstreamer_version.h
1208 %{_libdir}/pkgconfig/nnstreamer-single.pc
1209
1210 %files single-devel-static
1211 %{_libdir}/libnnstreamer-single.a
1212
1213 %if 0%{?testcoverage}
1214 %files unittest-coverage
1215 %{_datadir}/nnstreamer/unittest/*
1216 %endif
1217
1218 %if 0%{?nnfw_support}
1219 %files nnfw
1220 %manifest nnstreamer.manifest
1221 %defattr(-,root,root,-)
1222 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_nnfw.so
1223 %endif
1224
1225 %if 0%{?armnn_support}
1226 %files armnn
1227 %manifest nnstreamer.manifest
1228 %defattr(-,root,root,-)
1229 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_armnn.so
1230 %endif
1231
1232 %if 0%{mvncsdk2_support}
1233 %files -n nnstreamer-ncsdk2
1234 %defattr(-,root,root,-)
1235 %manifest nnstreamer.manifest
1236 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_movidius-ncsdk2.so
1237 %endif  # mvncsdk2_support
1238
1239 %if 0%{?vivante_support}
1240 %files vivante
1241 %defattr(-,root,root,-)
1242 %manifest nnstreamer.manifest
1243 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_vivante.so
1244 %endif
1245
1246 %if 0%{tizen_sensor_support}
1247 %files tizen-sensor
1248 %manifest nnstreamer.manifest
1249 %{gstlibdir}/libnnstreamer-tizen-sensor.so
1250 %endif  # tizen_sensor_support
1251
1252 %if 0%{?grpc_support}
1253 %files grpc
1254 %defattr(-,root,root,-)
1255 %manifest nnstreamer.manifest
1256 %license LICENSE
1257 %{gstlibdir}/libnnstreamer-grpc.so
1258
1259 %if 0%{?protobuf_support}
1260 %files grpc-protobuf
1261 %defattr(-,root,root,-)
1262 %manifest nnstreamer.manifest
1263 %license LICENSE
1264 %{_libdir}/libnnstreamer_grpc_protobuf.so
1265 %endif
1266
1267 %if 0%{?flatbuf_support}
1268 %files grpc-flatbuf
1269 %defattr(-,root,root,-)
1270 %manifest nnstreamer.manifest
1271 %license LICENSE
1272 %{_libdir}/libnnstreamer_grpc_flatbuf.so
1273 %endif
1274
1275 %endif  # grpc_support
1276
1277 %if 0%{?edgetpu_support}
1278 %files edgetpu
1279 %manifest nnstreamer.manifest
1280 %license LICENSE
1281 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_edgetpu.so
1282 %endif
1283
1284 %if 0%{?release_test}
1285 %files unittests
1286 %manifest nnstreamer.manifest
1287 %{_libdir}/libnnstreamer_unittest_util.so
1288 %{_libdir}/libcppfilter_test.so
1289 %if 0%{?mvncsdk2_support}
1290 %{_libdir}/libmvncsdk_test.so
1291 %endif
1292 %{_prefix}/lib/nnstreamer/customfilters/*.so
1293 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/nnstreamer-test.ini
1294 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/tests
1295 %endif
1296
1297 %if 0%{?openvino_support}
1298 %files openvino
1299 %manifest nnstreamer.manifest
1300 %license LICENSE
1301 %{_prefix}/lib/nnstreamer/filters/libnnstreamer_filter_openvino.so
1302 %endif
1303
1304 %files util
1305 %{_bindir}/nnstreamer-check
1306 %{_bindir}/nnstreamer-parser
1307 %{_prefix}/%{nnstbindir}/nnstreamer-check
1308 %{_prefix}/%{nnstbindir}/nnstreamer-parser
1309
1310 %files misc
1311 %{gstlibdir}/libgstjoin.so
1312 %if 0%{?mqtt_support}
1313 %{gstlibdir}/libgstmqtt.so
1314 %endif
1315
1316 %if 0%{?datarepo_support}
1317 %files datarepo
1318 %manifest nnstreamer.manifest
1319 %defattr(-,root,root,-)
1320 %license LICENSE
1321 %{gstlibdir}/libgstdatarepo.so
1322 %endif
1323
1324 %if 0%{?release_test}
1325 %files test-devel
1326 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/subplugin_unittest_template.cc.in
1327 %{_prefix}/%{nnstbindir}/unittest-nnstreamer/nnstreamer-test.ini.in
1328 %endif
1329
1330 %changelog
1331 * Fri Sep 15 2023 MyungJoo Ham <myungjoo.ham@samsung.com>
1332 - Start development of 2.4.1 (2.4.2-RC1)
1333
1334 * Thu Sep 12 2023 MyungJoo Ham <myungjoo.ham@samsung.com>
1335 - Release of 2.4.0, the new LTS version of 2023. (Tizen 8.0 M2)
1336
1337 * Tue Sep 27 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1338 - Start development of 2.3.0 (2.4.0-RC1) for experimental and unstable features.
1339
1340 * Thu Sep 22 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1341 - Release of 2.2.0, the new LTS version of 2022. (Tizen 7.0 M2)
1342
1343 * Wed Apr 13 2022 MyungJoo Ham <myungjoo.ham@samsung.com>
1344 - Start development of 2.1.1 (2.2.0-RC2)
1345
1346 * Tue Sep 28 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1347 - Start development of 2.1.0 (2.2.0-RC1)
1348
1349 * Tue Sep 28 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1350 - Release of 2.0.0, the new LTS version of 2021.
1351
1352 * Thu Jun 03 2021 MyungJoo Ham <myungjoo.ham@samsung.com>
1353 - Start development of 1.7.2 (1.8.0-RC3)
1354
1355 * Fri Nov 20 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1356 - Start development of 1.7.1 (1.8.0-RC2)
1357
1358 * Wed Sep 09 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1359 - Start development of 1.7.0 (1.8.0-RC1)
1360
1361 * Wed Sep 09 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1362 - Release of 1.6.0 (LTS for Tizen 6.0 M2 and Android-next products)
1363
1364 * Thu Jun 04 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1365 - Start development of 1.5.3 (1.6.0-RC4)
1366
1367 * Wed Apr 08 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1368 - Start development of 1.5.2 (1.6.0-RC3)
1369
1370 * Wed Mar 18 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1371 - Start development of 1.5.1 (1.6.0-RC2)
1372
1373 * Tue Feb 11 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1374 - Start development of 1.5.0 (1.6.0-RC1)
1375
1376 * Tue Feb 11 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1377 - Release of 1.4.0 (Tensor-filter API has been updated!)
1378
1379 * Mon Feb 03 2020 MyungJoo Ham <myungjoo.ham@samsung.com>
1380 - Release of 1.3.1
1381
1382 * Wed Dec 11 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1383 - 1.3.0 development starts
1384
1385 * Wed Dec 11 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1386 - Release of 1.2.0
1387
1388 * Thu Sep 26 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1389 - Release of 1.0.0 (1.0 RC2 == 1.0 Release for Tizen 5.5 M2)
1390
1391 * Wed Aug 14 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1392 - Release of 0.3.0 (1.0 RC1)
1393
1394 * Mon May 27 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1395 - Release of 0.2.0
1396
1397 * Wed Mar 20 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1398 - Release of 0.1.2
1399
1400 * Mon Feb 25 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1401 - Release of 0.1.1
1402
1403 * Thu Jan 24 2019 MyungJoo Ham <myungjoo.ham@samsung.com>
1404 - Release of 0.1.0
1405
1406 * Mon Dec 03 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1407 - Release of 0.0.3
1408
1409 * Mon Oct 15 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1410 - Started single-binary packaging for 0.0.3
1411
1412 * Fri May 25 2018 MyungJoo Ham <myungjoo.ham@samsung.com>
1413 - Packaged tensor_convert plugin.