aports/community/opencv/APKBUILD
2024-07-15 13:43:22 +00:00

210 lines
4.8 KiB
Plaintext

# Contributor: Marian Buschsieweke <marian.buschsieweke@posteo.net>
# Maintainer: Bart Ribbers <bribbers@disroot.org>
pkgname=opencv
pkgver=4.10.0
pkgrel=0
pkgdesc="Open source computer vision and machine learning library"
url="https://opencv.org/"
# s390x blocked by vtk -> netcdf
# riscv64: ftbfs, relocation errors
# ppc64le: ftbfs alpine/aports#15494
# loongarch64: upstream code is incorrect and cannot pass build and test
arch="all !s390x !riscv64 !ppc64le !loongarch64"
license="BSD-3-Clause"
depends_dev="
blas-dev
eigen-dev
ffmpeg-dev
freetype-dev
glew-dev
gst-plugins-base-dev
gstreamer-dev
harfbuzz-dev
hdf5-dev
libdc1394-dev
libgphoto2-dev
libva-glx-dev
mesa-dev
onetbb-dev
openblas-dev
openexr-dev
openjpeg-dev
openjpeg-tools
py3-setuptools
qt6-qtbase-dev
vtk-dev
"
makedepends="
$depends_dev
clang
cmake
lld
samurai
python3-dev
py3-gpep517
py3-numpy-dev
py3-setuptools
py3-wheel
"
subpackages="
$pkgname-dbg
$pkgname-dev
$pkgname-doc
py3-$pkgname-pyc
py3-$pkgname:_py3
libopencv_aruco:_lib
libopencv_calib3d:_lib
libopencv_core:_lib
libopencv_dnn:_lib
libopencv_face:_lib
libopencv_features2d:_lib
libopencv_flann:_lib
libopencv_highgui:_lib
libopencv_imgcodecs:_lib
libopencv_imgproc:_lib
libopencv_ml:_lib
libopencv_objdetect:_lib
libopencv_optflow:_lib
libopencv_photo:_lib
libopencv_plot:_lib
libopencv_shape:_lib
libopencv_stitching:_lib
libopencv_superres:_lib
libopencv_tracking:_lib
libopencv_video:_lib
libopencv_videoio:_lib
libopencv_videostab:_lib
libopencv_ximgproc:_lib
"
source="https://github.com/opencv/opencv/archive/$pkgver/opencv-$pkgver.tar.gz
https://github.com/opencv/opencv_contrib/archive/$pkgver/opencv_contrib-$pkgver.tar.gz
"
# Tests require human interaction
# net required to download a data file (face_landmark_model.dat)
options="net !check"
prepare() {
default_prepare
cd "$srcdir/opencv_contrib-$pkgver"/modules
# Only use modules that we care about
mv \
aruco \
face \
tracking \
optflow \
plot \
shape \
superres \
videostab \
ximgproc \
"$builddir"/modules/
}
build() {
case "$CARCH" in
x86_64)
local extra_cmake_flags="-DCPU_BASELINE_DISABLE=SSE3 -DCPU_BASELINE_REQUIRE=SSE2"
;;
esac
case "$CARCH" in
riscv64)
local lto=OFF
;;
*)
local lto=ON
;;
esac
# reduce size of debug syms
CFLAGS="$CFLAGS -g1" CXXFLAGS="$CXXFLAGS -g1" \
LDFLAGS="$LDFLAGS -fuse-ld=lld" \
CC=clang CXX=clang++ \
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DENABLE_BUILD_HARDENING=ON \
-DENABLE_THIN_LTO=$lto \
-DWITH_OPENCL=ON \
-DWITH_OPENGL=ON \
-DWITH_TBB=ON \
-DWITH_VULKAN=ON \
-DWITH_QT=ON \
-DWITH_ADE=OFF \
-DWITH_opencv_gapi=OFF \
-DWITH_IPP=OFF \
-DBUILD_WITH_DEBUG_INFO=ON \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_EXAMPLES=OFF \
-DINSTALL_C_EXAMPLES=OFF \
-DINSTALL_PYTHON_EXAMPLES=OFF \
-DOPENCV_SKIP_PYTHON_LOADER=OFF \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DOPENCV_ENABLE_NONFREE=OFF \
-DOPENCV_GENERATE_SETUPVARS=OFF \
-DEIGEN_INCLUDE_PATH=/usr/include/eigen3 \
-DCMAKE_SKIP_INSTALL_RPATH=ON \
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
$extra_cmake_flags
cmake --build build
cd modules/python/package
gpep517 build-wheel \
--wheel-dir "$builddir"/.dist \
--output-fd 3 3>&1 >&2
}
check() {
cd build
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
python3 -m installer -d "$pkgdir" \
.dist/*.whl
DESTDIR="$pkgdir" cmake --install build
python3 -m compileall -fq "$pkgdir"/usr/lib/python*
# opencv's python metainfo names it "opencv", as expected.
# however, people usually don't use this, they use
# https://github.com/opencv/opencv-python
# which is installed with "pip install opencv-python", is
# exactly the same thing, and is named differently.
# so, to be satisfied with a system dependency, it has to follow
# that same name.
# we can trick pip into thinking both are installed by just copying the
# dist-info and changing the name.
cd "$pkgdir"/usr/lib/python*/site-packages
cp -r opencv-*.dist-info opencv-python-$pkgver.dist-info
sed -i \
-e "s|Name: opencv|Name: opencv-python|" \
opencv-python-$pkgver.dist-info/METADATA
}
samples() {
pkgdesc="OpenCV Samples"
depends="$pkgname=$pkgver-r$pkgrel"
amove usr/share/opencv4/samples
}
_py3() {
pkgdesc="$pkgdesc (python modules)"
depends="py3-numpy"
amove usr/lib/python3.*
}
_lib() {
pkgdesc="$pkgdesc ($subpkgname library)"
amove usr/lib/$subpkgname.so.*
}
sha512sums="
b4f7248f89f1cd146dbbae7860a17131cd29bd3cb81db1e678abfcfbf2d8fa4a7633bfd0edbf50afae7b838c8700e8c0d0bb05828139d5cb5662df6bbf3eb92c opencv-4.10.0.tar.gz
480df862250692a97ce6431cba00dbecb70332307a19c1c04aa9d7444e6e74ab4f8c798548dce76d2319a9877624b82e361fb22a71df14b996087ade448be501 opencv_contrib-4.10.0.tar.gz
"