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