Support gstreamer when CV_VIDEOIO_BACKEND_GSTREAMER is set to 1
[platform/upstream/opencv.git] / packaging / opencv.spec
index 5393516..26f2839 100644 (file)
@@ -1,40 +1,42 @@
+%if 0%{?_with_da_profile}%{?CV_VIDEOIO_BACKEND_GSTREAMER}
+%define support_gstreamer 1
+%else
+%define support_gstreamer 0
+%endif
+
 Name: opencv
-VCS:  #e3ca2f3bdcac02e9780c2de7001310a2a61a483e-dirty
 Summary: OpenCV library
-Version: 2.4.9
-Release: 9
+Version: 4.7.0
+Release: 5
 Group: Development/Libraries
-License: BSD-2.0 and LGPL-2.1+
+License: Apache-2.0
 Source0: %{name}-%{version}.tar.gz
+Source100: opencv-contrib-%{version}.tar.gz
+# In cmake/OpenCVDetectPython.cmake, python packages are installed
+# in lib/ regardless of i586, armv7l, x86_64, aarch64, riscv64
+# So, this patch installs the python packages in:
+# lib64/ if x86_64 or aarch64
+# lib/ if i586 or armv7l
+Source1001: 1001-TIZEN-OPENCV-PYTHON3-LIB64-PATH.patch
 
 BuildRequires:  cmake
 BuildRequires:  pkg-config
-BuildRequires:  libjpeg-devel
+BuildRequires:  libjpeg-turbo-devel
 BuildRequires:  libpng-devel
 BuildRequires:  libtiff-devel
-#BuildRequires:  gettext-tools
-#BuildRequires:  edje-tools
-#BuildRequires:  eet-tools
-#BuildRequires:  eina-devel
-#BuildRequires:  eet-devel
-#BuildRequires:  evas-devel
-#BuildRequires:  ecore-devel
-#BuildRequires:  edje-devel
-#BuildRequires:  edbus-devel
-#BuildRequires:  efreet-devel
-#BuildRequires:  ethumb-devel
-#BuildRequires:  emotion-devel
-#BuildRequires:  app-svc-devel
-#BuildRequires:  libx11-devel
-BuildRequires:  elementary-devel
-BuildRequires:  gstreamer
-BuildRequires:  gst-plugins-base
-BuildRequires:  gst-plugins-good
+BuildRequires:  pkgconfig(gstreamer-1.0)
+BuildRequires:  pkgconfig(gstreamer-plugins-base-1.0)
 BuildRequires:  libavutil-devel
 BuildRequires:  libavcodec-devel
 BuildRequires:  libavformat-devel
 BuildRequires:  libswscale-devel
-#BuildRequires:  gst-ffmpeg
+BuildRequires:  pkgconfig(libwebp)
+#support python3
+%if "%{?profile}" != "tv"
+BuildRequires:  python3-devel
+BuildRequires:  python3-numpy-devel
+%endif
+
 Requires(post):  /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
 
@@ -49,62 +51,164 @@ Requires:    %{name} = %{version}-%{release}
 %description devel
 The Open Computer Vision Library (Dev) includes various algorithms for computer vision problems.
 
+%if "%{?profile}" != "tv"
+%package -n python3-opencv
+Summary:    OpenCV Python3 Library
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+
+%description -n python3-opencv
+The Open Computer Vision Library (Python3) includes various algorithms for computre vision problems.
+%endif
+
 %prep
 %setup -q
+%setup -q -T -D -a 100
+
+cp %{SOURCE1001} .
+patch -p1 < %{SOURCE1001}
 
 %build
-%ifarch aarch64 x86_64
+%ifarch aarch64
 ARCH=aarch64
-%else
+%endif
+%ifarch %arm
 ARCH=arm
 %endif
+%ifarch x86_64
+ARCH=x86_64
+%endif
+%ifarch %ix86
+ARCH=i386
+%endif
+%ifarch riscv64
+ARCH=riscv64
+%endif
 
-cmake . -DCMAKE_INSTALL_PREFIX=/usr \
-    -DARCH=${ARCH} \
+# compatibility to opencv3
+sed -i 's/opencv4.pc/opencv.pc/g' cmake/OpenCVGenPkgconfig.cmake
+
+mkdir -p build
+cd build
+cmake .. -DCMAKE_INSTALL_PREFIX=/usr \
+       -DARCH=${ARCH} \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_CONFIGURATION_TYPES=Release \
-       -DBUILD_DOCS=OFF \
-       -DBUILD_PACKAGE=OFF \
-       -DBUILD_ANDROID_SERVICE=OFF \
-       -DBUILD_ANDRIOD_PACKAGE=OFF \
-       -DBUILD_SHARED_LIBS=ON \
-       -DBUILD_JASPER=OFF \
-       -DBUILD_JPEG=OFF \
-       -DBUILD_PERF_TESTS=OFF \
-       -DBUILD_PNG=OFF \
-       -DBUILD_TESTS=OFF \
-       -DBUILD_TIFF=OFF \
-       -DBUILD_WITH_DEBUG_INFO=ON \
-       -DBUILD_ZLIB=OFF \
-       -DBUILD_OPENEXR=OFF \
-       -DBUILD_TBB=OFF \
-       -DBUILD_EXAMPLES=OFF \
-       -DBUILD_opencv_apps=OFF \
+       -DOPENCV_ENABLE_NONFREE=OFF \
+       -DOPENCV_GENERATE_PKGCONFIG=YES \
+       -DOPENCV_GENERATE_SETUPVARS=OFF \
+       -DBUILD_PROTOBUF=ON \
+       -DPROTOBUF_UPDATE_FILES=OFF \
        -DBUILD_opencv_calib3d=ON \
-       -DBUILD_opencv_contrib=ON \
        -DBUILD_opencv_core=ON \
-       -DBUILD_opencv_imgproc=ON \
-       -DBUILD_opencv_flann=ON \
+       -DBUILD_opencv_dnn=ON \
        -DBUILD_opencv_features2d=ON \
-       -DBUILD_opencv_objdetect=ON \
-       -DBUILD_opencv_ml=ON \
-       -DBUILD_opencv_gpu=OFF \
+       -DBUILD_opencv_flann=ON \
        -DBUILD_opencv_highgui=ON \
-       -DBUILD_opencv_legacy=ON \
-       -DBUILD_opencv_nonfree=OFF \
-       -DBUILD_opencv_ocl=OFF \
+       -DBUILD_opencv_imgcodecs=ON \
+       -DBUILD_opencv_imgproc=ON \
+       -DBUILD_opencv_ml=ON \
+       -DBUILD_opencv_objdetect=ON \
        -DBUILD_opencv_photo=ON \
+       -DBUILD_opencv_python2=OFF \
+%if "%{?profile}" != "tv"
+       -DBUILD_opencv_python3=ON \
+%else
+       -DBUILD_opencv_python3=OFF \
+       -DPARALLEL_ENABLE_PLUGINS=OFF \
+%endif
+       -DBUILD_opencv_shape=OFF \
        -DBUILD_opencv_stitching=OFF \
        -DBUILD_opencv_superres=OFF \
        -DBUILD_opencv_ts=OFF \
        -DBUILD_opencv_video=ON \
+       -DBUILD_opencv_videoio=ON \
        -DBUILD_opencv_videostab=OFF \
        -DBUILD_opencv_world=OFF \
+       -DBUILD_opencv_viz=OFF \
+       -DOPENCV_EXTRA_MODULES_PATH=../opencv-contrib/modules \
+       -DBUILD_opencv_aruco=OFF \
+       -DBUILD_opencv_bgsegm=OFF \
+       -DBUILD_opencv_bioinspired=OFF \
+       -DBUILD_opencv_ccalib=OFF \
+       -DBUILD_opencv_cnn_3dobj=OFF \
+       -DBUILD_opencv_cvv=OFF \
+       -DBUILD_opencv_datasets=OFF \
+       -DBUILD_opencv_dnn_objdetect=OFF \
+       -DBUILD_opencv_dnns_easily_fooled=OFF \
+       -DBUILD_opencv_dnn_superres=OFF \
+       -DBUILD_opencv_dpm=OFF \
+       -DBUILD_opencv_face=ON \
+       -DBUILD_opencv_freetype=OFF \
+       -DBUILD_opencv_fuzzy=OFF \
+       -DBUILD_opencv_hdf=OFF \
+       -DBUILD_opencv_hfs=OFF \
+       -DBUILD_opencv_img_hash=OFF \
+       -DBUILD_opencv_line_descriptor=OFF \
+       -DBUILD_opencv_matlab=OFF \
+       -DBUILD_opencv_optflow=ON \
+       -DBUILD_opencv_ovis=OFF \
+       -DBUILD_opencv_phase_unwrapping=OFF \
+       -DBUILD_opencv_plot=ON \
+       -DBUILD_opencv_quality=OFF \
+       -DBUILD_opencv_reg=OFF \
+       -DBUILD_opencv_rgbd=OFF \
+       -DBUILD_opencv_saliency=OFF \
+       -DBUILD_opencv_sfm=OFF \
+       -DBUILD_opencv_shape=OFF \
+       -DBUILD_opencv_stereo=OFF \
+       -DBUILD_opencv_structured_light=OFF \
+       -DBUILD_opencv_superres=OFF \
+       -DBUILD_opencv_surface_matching=OFF \
+       -DBUILD_opencv_text=OFF \
+       -DBUILD_opencv_tracking=ON \
+       -DBUILD_opencv_videostab=OFF \
+       -DBUILD_opencv_viz=OFF \
+       -DBUILD_opencv_xfeatures2d=ON \
+       -DBUILD_opencv_ximgproc=ON \
+       -DBUILD_opencv_xobjdetect=OFF \
+       -DBUILD_opencv_xphoto=OFF \
+       -DBUILD_opencv_wechat_qrcode=OFF \
+       -DBUILD_opencv_barcode=OFF \
+       -DBUILD_opencv_intensity_transform=OFF \
+       -DBUILD_opencv_mcc=OFF \
+       -DBUILD_opencv_rapid=OFF \
+       -DOPENCV_FORCE_3RDPARTY_BUILD=OFF \
+       -DBUILD_ZLIB=OFF \
+       -DBUILD_TIFF=OFF \
+       -DBUILD_JASPER=OFF \
+       -DBUILD_JPEG=OFF \
+       -DBUILD_PNG=OFF \
+       -DBUILD_WEBP=OFF \
+       -DBUILD_OPENEXR=OFF \
+       -DBUILD_TBB=OFF \
+       -DBUILD_OPENJPEG=OFF \
+       -DBUILD_SHARED_LIBS=ON \
+       -DBUILD_opencv_apps=OFF \
+       -DBUILD_opencv_js=OFF \
+       -DBUILD_DOCS=OFF \
+       -DBUILD_EXAMPLES=OFF \
+       -DBUILD_PACKAGE=OFF \
+       -DBUILD_PERF_TESTS=OFF \
+       -DBUILD_TESTS=OFF \
+       -DBUILD_WITH_DEBUG_INFO=ON \
+       -DBUILD_WITH_DYNAMIC_IPP=OFF \
+       -DBUILD_ANDROID_SERVICE=OFF \
+       -DBUILD_IPP_IW=OFF \
+       -DBUILD_ITT=OFF \
+       -DBUILD_WITH_STATIC_CRT=OFF \
+       -DBUILD_JAVA=OFF \
+       -DBUILD_opencv_java=OFF \
+       -DBUILD_FAT_JAVA_LIB=OFF \
+       -DBUILD_CUDA_STUBS=OFF \
+       -DWITH_CUDA=OFF \
+       -DWITH_CAROTENE=OFF \
+       -DWITH_CPUFEATURES=OFF \
        -DWITH_1394=OFF \
        -DWITH_CSTRIPES=OFF \
        -DWITH_CUBLAS=OFF \
-       -DWITH_CUDA=OFF \
        -DWITH_CUFFT=OFF \
+       -DWITH_NVCUVID=OFF \
        -DWITH_DSHOW=OFF \
        -DWITH_EIGEN=OFF \
        -DWITH_FFMPEG=ON \
@@ -112,15 +216,18 @@ cmake . -DCMAKE_INSTALL_PREFIX=/usr \
        -DWITH_INTELPERC=OFF \
        -DWITH_IPP=OFF \
        -DWITH_JASPER=OFF \
+       -DWITH_OPENJPEG=OFF \
+       -DWITH_WEBP=ON \
        -DWITH_MSMF=OFF \
        -DWITH_NVCUVID=OFF \
        -DWITH_OPENCL=OFF \
        -DWITH_OPENCLAMDBLAS=OFF \
        -DWITH_OPENCLAMDFFT=OFF \
        -DWITH_OPENEXR=OFF \
-       -DWITH_OPENGL=ON \
+       -DWITH_OPENGL=OFF \
        -DWITH_OPENMP=OFF \
        -DWITH_OPENNI=OFF \
+       -DWITH_JPEG=ON \
        -DWITH_PNG=ON \
        -DWITH_PVAPI=OFF \
        -DWITH_QT=OFF \
@@ -130,9 +237,22 @@ cmake . -DCMAKE_INSTALL_PREFIX=/usr \
        -DWITH_VTK=OFF \
        -DWITH_WIN32UI=OFF \
        -DWITH_XIMEA=OFF \
+       -DWITH_QUIRC=OFF \
+%if 0%{?support_gstreamer}
        -DWITH_GSTREAMER=ON \
+%else
+       -DWITH_GSTREAMER=OFF \
+%endif
        -DWITH_V4L=ON \
-       -DWITH_GTK=ON \
+       -DWITH_GTK=OFF \
+       -DWITH_MATLAB=OFF \
+       -DWITH_ITT=OFF \
+       -DWITH_GPHOTO2=OFF \
+       -DWITH_PTHREADS_PF=OFF \
+       -DWITH_LAPACK=OFF \
+       -DWITH_OPENVX=OFF \
+       -DWITH_PROTOBUF=ON \
+       -DWITH_ADE=OFF \
        -DINSTALL_C_EXAMPLES=OFF \
        -DINSTALL_PYTHON_EXAMPLES=OFF \
        -DINSTALL_TESTS=OFF \
@@ -141,21 +261,43 @@ cmake . -DCMAKE_INSTALL_PREFIX=/usr \
        -DENABLE_DYNAMIC_CUDA=OFF \
        -DENABLE_SOLUTION_FOLDERS=OFF \
        -DENABLE_PROFILLING=OFF \
-       -DENABLE_COVERAGE=OFF
+       -DENABLE_COVERAGE=OFF \
+%ifarch %arm aarch64
+       -DCPU_BASELINE="" \
+       -DCPU_DISPATCH=NEON \
+%endif
+       -DCV_TRACE=OFF
 
 make %{?jobs:-j%jobs}
 
 %install
+cd build
 rm -rf %{buildroot}
-mkdir -p %{buildroot}%{_datadir}/license
-cp LICENSE %{buildroot}%{_datadir}/license/%{name}
-cat LICENSE.LGPL-2.1+ >> %{buildroot}%{_datadir}/license/%{name}
 %make_install
 
+# To support backward compatibility with OpenCV3
+# Header files
+ln -sf %{_includedir}/opencv4/opencv2 %{buildroot}%{_includedir}/opencv2
+# pkgconfig
+ln -sf %{_libdir}/pkgconfig/opencv.pc %{buildroot}%{_libdir}/pkgconfig/%{name}4.pc
+# cascades files
+mkdir -p %{buildroot}%{_datadir}/OpenCV
+ln -sf %{_datadir}/opencv4/haarcascades %{buildroot}%{_datadir}/OpenCV/haarcascades
+ln -sf %{_datadir}/opencv4/lbpcascades %{buildroot}%{_datadir}/OpenCV/lbpcascades
+
+ln -sf %{_libdir}/cmake/opencv4/OpenCVConfig-version.cmake %{buildroot}%{_datadir}/OpenCV/OpenCVConfig-version.cmake
+ln -sf %{_libdir}/cmake/opencv4/OpenCVConfig.cmake %{buildroot}%{_datadir}/OpenCV/OpenCVConfig.cmake
+ln -sf %{_libdir}/cmake/opencv4/OpenCVModules-release.cmake %{buildroot}%{_datadir}/OpenCV/OpenCVModules-release.cmake
+ln -sf %{_libdir}/cmake/opencv4/OpenCVModules.cmake %{buildroot}%{_datadir}/OpenCV/OpenCVModules.cmake
 
 %clean
 rm -rf %{buildroot}
 
+%pre
+if [ -d %{_datadir}/OpenCV ];then
+ rm -r %{_datadir}/OpenCV
+fi
+
 %post
 /sbin/ldconfig
 
@@ -165,13 +307,39 @@ rm -rf %{buildroot}
 %files
 %manifest opencv.manifest
 %defattr(-,root,root,-)
-%{_libdir}/*.so.*
-%{_datadir}/license/*
-/usr/share/*
+%license LICENSE
+%{_libdir}/*.so*
+
+/usr/share/licenses/opencv4/*
+/usr/share/opencv4/haarcascades/*frontalface_alt*
+/usr/share/opencv4/haarcascades/*smile*
+/usr/share/opencv4/lbpcascades/*frontalface*
+/usr/share/OpenCV/OpenCV*
+/usr/share/OpenCV/haarcascades
+/usr/share/OpenCV/lbpcascades
+
+%exclude /usr/share/opencv4/haarcascades/*eye*
+%exclude /usr/share/opencv4/haarcascades/*catface*
+%exclude /usr/share/opencv4/haarcascades/*default*
+%exclude /usr/share/opencv4/haarcascades/*plate*
+%exclude /usr/share/opencv4/haarcascades/*body*
+%exclude /usr/share/opencv4/haarcascades/*profile*
+%exclude /usr/share/opencv4/haarcascades/*2splits*
+
+%exclude /usr/share/opencv4/lbpcascades/*catface*
+%exclude /usr/share/opencv4/lbpcascades/*profile*
+%exclude /usr/share/opencv4/lbpcascades/*silverware*
+%exclude /usr/share/opencv4/*.supp
+
+%if "%{?profile}" != "tv"
+%files -n python3-opencv
+%{python3_sitearch}/cv2/*.py
+%{python3_sitearch}/cv2/*/*.py
+%{python3_sitearch}/cv2/*/*.so
+%endif
 
 %files devel
 /usr/include/*
 %{_libdir}/pkgconfig/*.pc
-%{_libdir}/*.so
-
+%{_libdir}/cmake/opencv4/*.cmake
 %doc