# Maintainer: David Runge # Mantainer: Mattia Procopio pkgbase=libcamera pkgname=( libcamera-rpi libcamera-docs-rpi libcamera-ipa-rpi libcamera-tools-rpi gst-plugin-libcamera-rpi python-libcamera-rpi ) pkgver=0.6.0 _customtag=rpt20251202 pkgrel=2 pkgdesc="A complex camera support library for Linux, Android, and ChromeOS" arch=(aarch64) url="https://github.com/raspberrypi/libcamera" makedepends=( boost doxygen git glib2 graphviz gst-plugins-base gtest libdrm libjpeg-turbo libtiff libyaml libpisp llvm-libs lttng-ust meson cmake pybind11 python-jinja python-ply python-sphinx python-pyyaml python-pip qt6-base qt6-tools sdl2 systemd texlive-core nlohmann-json python-sphinxcontrib-doxylink ) source=("libcamera.tar.gz::https://github.com/raspberrypi/libcamera/archive/refs/tags/v$pkgver+$_customtag.tar.gz") sha256sums=('6182cd1e2c9da2b5a5ee1dc3733b2068629fb4d53b20d3071de30a36a2221796') _pick() { local p="$1" f d; shift for f; do d="$srcdir/$p/${f#$pkgdir/}" mkdir -p "$(dirname "$d")" mv "$f" "$d" rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")" done } #pkgver() { # cd $pkgbase # git describe --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/v//g' #} prepare() { mv $pkgbase-$pkgver-$_customtag $pkgbase cd $pkgbase # add version, so that utils/gen-version.sh may rely on it printf "%s\n" "$pkgver" > .tarball-version } build() { meson setup $pkgbase build --prefix=/usr --libexecdir=lib --sbindir=bin --auto-features=enabled --wrap-mode=nodownload --buildtype=release -Db_lto=false -Db_pie=true -Dtracing=disabled -Dpython.bytecompile=1 -Dpipelines=rpi/vc4,rpi/pisp -Dipas=rpi/vc4,rpi/pisp -Dv4l2=enabled -Dgstreamer=enabled -Dtest=true -Dlc-compliance=enabled -Dcam=enabled -Dqcam=enabled -Ddocumentation=enabled -Dpycamera=enabled meson compile -C build #ninja -C build install } check() { meson test -C build || echo "Tests require CLONE_NEWUSER/ CLONE_NEWNET." } package_libcamera-rpi() { license=( Apache-2.0 CC0-1.0 'GPL-2.0-only WITH Linux-syscall-note' GPL-2.0-or-later LGPL-2.1-or-later 'GPL-2.0-or-later WITH Linux-syscall-note OR BSD-3-Clause' 'GPL-2.0-or-later WITH Linux-syscall-note OR MIT' ) depends=( gcc-libs glibc gnutls libcamera-ipa-rpi libelf libunwind libyaml sh systemd-libs libudev.so ) optdepends=( 'gst-plugin-libcamera-rpi: GStreamer plugin' 'libcamera-docs-rpi: for documentation' 'libcamera-tools-rpi: for applications' ) provides=(libcamera libcamera.so libcamera-base.so) conflicts=(libcamera) meson install -C build --destdir "$pkgdir" install -vDm 644 $pkgbase/LICENSES/{BSD-3-Clause,Linux-syscall-note,MIT}.txt -t "$pkgdir/usr/share/licenses/${pkgname%"-rpi"}/" ( cd "$pkgdir" _pick $pkgbase-docs usr/share/doc _pick $pkgbase-ipa usr/lib/libcamera/ _pick $pkgbase-tools usr/bin/{cam,qcam,lc-compliance} _pick gst-plugin-$pkgbase usr/lib/gstreamer-* _pick python-$pkgbase usr/lib/python* ) } package_libcamera-docs-rpi() { pkgdesc+=" - documentation" license=( CC-BY-4.0 CC-BY-SA-4.0 CC0-1.0 ) conflicts=("libcamera-docs") provides=("libcamera-docs") mv -v ${pkgname%"-rpi"}/* "$pkgdir" mv -v "$pkgdir/usr/share/doc/$pkgbase-$pkgver/" "$pkgdir/usr/share/doc/$pkgbase/" rm -frv "$pkgdir/usr/share/doc/$pkgbase/html/.buildinfo" } package_libcamera-ipa-rpi() { pkgdesc+=" - signed IPA" license=( BSD-2-Clause CC-BY-SA-4.0 CC0-1.0 GPL-2.0-or-later LGPL-2.1-or-later ) depends=( gcc-libs glibc libcamera-rpi libcamera.so libcamera-base.so ) # stripping requires re-signing of IPA libs, so we do it manually options=(!strip) provides=(libcamera-ipa) conflicts=(libcamera-ipa) strip ${pkgname%"-rpi"}/usr/lib/libcamera/*{.so,proxy} for _lib in ${pkgname%"-rpi"}/usr/lib/libcamera/*.so; do $pkgbase/src/ipa/ipa-sign.sh "$(find build -type f -iname "*ipa-priv-key.pem")" "$_lib" "$_lib.sign" done mv -v ${pkgname%"-rpi"}/* "$pkgdir" install -vDm 644 $pkgbase/LICENSES/BSD-2-Clause.txt -t "$pkgdir/usr/share/licenses/${pkgname%"-rpi"}/" } package_libcamera-tools-rpi() { pkgdesc+=" - tools" license=( BSD-2-Clause CC0-1.0 GPL-2.0-or-later LGPL-2.1-or-later ) depends=( gcc-libs glibc gtest libcamera-rpi libcamera.so libcamera-base.so libdrm libevent libevent-2.1.so libevent_pthreads-2.1.so libjpeg-turbo libjpeg.so libtiff libtiff.so libyaml qt6-base sdl2 ) conflicts=("$pkgbase-tests<0.0.1-2" "libcamera-tools") replaces=("$pkgbase-tests<0.0.1-2") provides=("libcamera-tools") mv -v ${pkgname%"-rpi"}/* "$pkgdir" install -vDm 644 $pkgbase/LICENSES/BSD-2-Clause.txt -t "$pkgdir/usr/share/licenses/${pkgname%"-rpi"}/" } package_gst-plugin-libcamera-rpi() { pkgdesc="Multimedia graph framework - libcamera plugin" license=( CC0-1.0 LGPL-2.1-or-later ) depends=( gcc-libs glibc glib2 libg{lib,object}-2.0.so gstreamer gst-plugins-base-libs libcamera-rpi libcamera.so libcamera-base.so ) conflicts=(gst-plugin-libcamera) provides=(gst-plugin-camera) mv -v ${pkgname%"-rpi"}/* "$pkgdir" } package_python-libcamera-rpi() { pkgdesc+=" - Python integration" license=( CC0-1.0 LGPL-2.1-or-later ) depends=( gcc-libs glibc libcamera python ) mv -v ${pkgname%"-rpi"}/* "$pkgdir" }