On Tue, Sep 13, 2022 at 03:53:21PM +0200, Marco Felsch wrote: > Hi Matthias, > > thanks for working on this, I also have a libcamera package here :) and > want to share a few findings. > > On 22-09-11, Matthias Fend wrote: > > libcamera is an open source camera stack and framework for Linux, Android, > > and ChromeOS. > > > > Signed-off-by: Matthias Fend <matthias.f...@emfend.at> > > --- > > ...t-information-for-version-generation.patch | 29 ++++ > > .../libcamera-2022-08-30-g68683d3811a8/series | 4 + > > rules/libcamera.in | 90 ++++++++++++ > > rules/libcamera.make | 133 ++++++++++++++++++ > > 4 files changed, 256 insertions(+) > > create mode 100644 > > patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch > > create mode 100644 patches/libcamera-2022-08-30-g68683d3811a8/series > > create mode 100644 rules/libcamera.in > > create mode 100644 rules/libcamera.make > > > > diff --git > > a/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch > > > > b/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch > > new file mode 100644 > > index 000000000..3e5c5ce68 > > --- /dev/null > > +++ > > b/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch > > @@ -0,0 +1,29 @@ > > +From: Matthias Fend <matthias.f...@emfend.at> > > +Date: Wed, 31 Aug 2022 16:54:20 +0200 > > +Subject: [PATCH] do not use git information for version generation > > + > > +Since libcamera is checked out without a git repo, git version reports the > > +version of the BSP. Since this is obviously wrong, just use the project > > +version. > > + > > +Signed-off-by: Matthias Fend <matthias.f...@emfend.at> > > +--- > > + meson.build | 5 ++--- > > + 1 file changed, 2 insertions(+), 3 deletions(-) > > + > > +diff --git a/meson.build b/meson.build > > +index 72919102ad55..e333df59388d 100644 > > +--- a/meson.build > > ++++ b/meson.build > > +@@ -20,9 +20,8 @@ libcamera_git_version = > > run_command('utils/gen-version.sh', > > + meson.project_build_root(), > > + meson.project_source_root(), > > + check: false).stdout().strip() > > +-if libcamera_git_version == '' > > +- libcamera_git_version = meson.project_version() > > +-endif > > ++ > > ++libcamera_git_version = meson.project_version() > > + > > + libcamera_version = libcamera_git_version.split('+')[0] > > + > > diff --git a/patches/libcamera-2022-08-30-g68683d3811a8/series > > b/patches/libcamera-2022-08-30-g68683d3811a8/series > > new file mode 100644 > > index 000000000..6ca42eafc > > --- /dev/null > > +++ b/patches/libcamera-2022-08-30-g68683d3811a8/series > > @@ -0,0 +1,4 @@ > > +# generated by git-ptx-patches > > +#tag:base --start-number 1 > > +0001-do-not-use-git-information-for-version-generation.patch > > +# c3a57143ea9764ab95b84a7fb79896f4 - git-ptx-patches magic > > diff --git a/rules/libcamera.in b/rules/libcamera.in > > new file mode 100644 > > index 000000000..0a103fc51 > > --- /dev/null > > +++ b/rules/libcamera.in > > @@ -0,0 +1,90 @@ > > +## SECTION=multimedia_libs > > + > > +config LIBCAMERA > > + bool > > + prompt "libcamera" > > + select HOST_MESON > > + select HOST_SYSTEM_PYTHON3 > > + select HOST_SYSTEM_PYTHON3_JINJA2 > > + select HOST_SYSTEM_PYTHON3_PYYAML > > + select HOST_SYSTEM_PYTHON3_PLY > > + select GNUTLS > > Please see below about selecting the crypto lib. Than this would be > changed to: > > select GNUTLS if > LIBCAMERA_IPA_MODULE_SIGN_GNUTLS > select OPENSSL if > LIBCAMERA_IPA_MODULE_SIGN_OPENSSL
And select HOST_OPENSSL if LIBCAMERA_IPA_MODULE_SIGN >From what I can tell, openssl is always used to sign the modules. > > + select UDEV_LIBUDEV > > + select LIBYAML > > missing select BOOST if > LIBCAMERA_PIPELINE_RASPBERRYPI > > > + select LIBUNWIND if LIBCAMERA_BACKTRACE > > + select GSTREAMER1 if LIBCAMERA_GSTREAMER > > + select GST_PLUGINS_BASE1 if LIBCAMERA_GSTREAMER > > + select LIBEVENT if LIBCAMERA_CAM > > missing select LIBDRM if LIBCAMERA_CAM > > > + select QT5 if LIBCAMERA_QCAM > > + select QT5_MODULE_QTBASE if LIBCAMERA_QCAM > > + select QT5_MODULE_QTBASE_GUI if LIBCAMERA_QCAM > > + select QT5_MODULE_QTBASE_WIDGETS if LIBCAMERA_QCAM > > + help > > + A complex camera support library for Linux, Android, and ChromeOS. > > + > > +if LIBCAMERA > > I would provide the user the choice of selecting/enabling the ipa module > signing. Hmmm, what would be the benefit of making this optional? And if the modules are not signed then they should be stripped. Michael > config LIBCAMERA_IPA_MODULE_SIGN > bool > default y > prompt "Enable IPA module signing" > help > Without IPA module signing, all IPA modules will be isolated in a > separate process. This adds an unnecessary extra overhead at > runtime. > > if LIBCAMERA_IPA_MODULE_SIGN > > choice > prompt "Crypt provider" > default LIBCAMERA_IPA_MODULE_SIGN_GNUTLS > > config LIBCAMERA_IPA_MODULE_SIGN_GNUTLS > bool "gnutls" > > config LIBCAMERA_IPA_MODULE_SIGN_OPENSSL > bool "openssl (libcrypto)" > > endchoice > > endif > > Regards, > Marco > > > + > > +config LIBCAMERA_GSTREAMER > > + bool > > + prompt "install GStreamer plugin" > > + > > +config LIBCAMERA_CAM > > + bool > > + prompt "install cam test application" > > + > > +config LIBCAMERA_QCAM > > + bool > > + prompt "install qcam test application" > > + > > +config LIBCAMERA_BACKTRACE > > + bool > > + prompt "enable tracing support" > > + > > +endif > > + > > +menu "IPAs" > > + > > +config LIBCAMERA_IPA_IPU3 > > + bool > > + prompt "ipu3" > > + > > +config LIBCAMERA_IPA_RASPBERRYPI > > + bool > > + prompt "raspberrypi" > > + > > +config LIBCAMERA_IPA_RKISP1 > > + bool > > + prompt "rkisp1" > > + > > +config LIBCAMERA_IPA_VIMC > > + bool > > + prompt "vimc" > > +endmenu > > + > > +menu "Pipelines" > > + > > +config LIBCAMERA_PIPELINE_IPU3 > > + bool > > + prompt "ipu3" > > + > > +config LIBCAMERA_PIPELINE_RASPBERRYPI > > + bool > > + prompt "raspberrypi" > > + > > +config LIBCAMERA_PIPELINE_RKISP1 > > + bool > > + prompt "rkisp1" > > + > > +config LIBCAMERA_PIPELINE_SIMPLE > > + bool > > + prompt "simple" > > + > > +config LIBCAMERA_PIPELINE_UVCVIDEO > > + bool > > + prompt "uvcvideo" > > + > > +config LIBCAMERA_PIPELINE_VIMC > > + bool > > + prompt "vimc" > > + > > +endmenu > > diff --git a/rules/libcamera.make b/rules/libcamera.make > > new file mode 100644 > > index 000000000..78a5e94de > > --- /dev/null > > +++ b/rules/libcamera.make > > @@ -0,0 +1,133 @@ > > +# -*-makefile-*- > > +# > > +# Copyright (C) 2022 by Matthias Fend <matthias.f...@emfend.at> > > +# > > +# For further information about the PTXdist project and license conditions > > +# see the README file. > > +# > > + > > +# > > +# We provide this package > > +# > > +PACKAGES-$(PTXCONF_LIBCAMERA) += libcamera > > + > > +# > > +# Paths and names > > +# > > +LIBCAMERA_VERSION := 2022-08-30-g68683d3811a8 > > +LIBCAMERA_MD5 := 2f5a985257a0797e0bd0b4182ef9bc9c > > +LIBCAMERA := libcamera-$(LIBCAMERA_VERSION) > > +LIBCAMERA_SUFFIX := tar.gz > > +LIBCAMERA_URL := > > https://git.libcamera.org/libcamera/libcamera.git;tag=$(LIBCAMERA_VERSION) > > +LIBCAMERA_SOURCE := $(SRCDIR)/$(LIBCAMERA).$(LIBCAMERA_SUFFIX) > > +LIBCAMERA_DIR := $(BUILDDIR)/$(LIBCAMERA) > > +LIBCAMERA_LICENSE := Apache-2.0 AND \ > > + BSD-2-Clause AND BSD-3-Clause AND \ > > + CC0-1.0 AND CC-BY-SA-4.0 AND \ > > + GPL-2.0-or-later AND GPL-2.0 WITH Linux-syscall-note > > AND \ > > + (GPL-2.0+ WITH Linux-syscall-note OR MIT) AND > > LGPL-2.1-or-later > > +LIBCAMERA_LICENSE_FILES := > > file://LICENSES/Apache-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \ > > + > > file://LICENSES/BSD-2-Clause.txt;md5=63d6ee386b8aaba70b1bf15a79ca50f2 \ > > + > > file://LICENSES/BSD-3-Clause.txt;md5=954f4d71a37096249f837652a7f586c0 \ > > + > > file://LICENSES/CC0-1.0.txt;md5=6fd064768b8d61c31ddd0540570fbd33 \ > > + > > file://LICENSES/CC-BY-SA-4.0.txt;md5=598a2bb2d212cf9bc240fb554efcb169 \ > > + > > file://LICENSES/GPL-2.0-or-later.txt;md5=fed54355545ffd980b814dab4a3b312c \ > > + > > file://LICENSES/GPL-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ > > + > > file://LICENSES/Linux-syscall-note.txt;md5=370f20aa0795bf47c9a50d8cee5a7cfb > > \ > > + > > file://LICENSES/GPL-2.0+.txt;md5=fed54355545ffd980b814dab4a3b312c \ > > + > > file://LICENSES/MIT.txt;md5=38aa75cf4c4c87f018227d5ec9638d75 \ > > + > > file://LICENSES/LGPL-2.1-or-later.txt;md5=2a4f4fd2128ea2f65047ee63fbca9f68 > > + > > +# > > ---------------------------------------------------------------------------- > > +# Prepare > > +# > > ---------------------------------------------------------------------------- > > + > > +LIBCAMERA_IPAS-y := > > +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_IPU3) += ipu3 > > +LIBCAMERA_IPASC-$(PTXCONF_LIBCAMERA_IPA_RASPBERRYPI) += raspberrypi > > +LIBCAMERA_IPASM-$(PTXCONF_LIBCAMERA_IPA_RASPBERRYPI) += rpi > > +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_RKISP1) += rkisp1 > > +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_VIMC) += vimc > > + > > +LIBCAMERA_IPASC-y += $(LIBCAMERA_IPAS-y) > > +LIBCAMERA_IPASM-y += $(LIBCAMERA_IPAS-y) > > + > > +LIBCAMERA_PIPELINES-y := > > +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_IPU3) += ipu3 > > +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI) += > > raspberrypi > > +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_RKISP1) += rkisp1 > > +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_SIMPLE) += simple > > +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO) += uvcvideo > > +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_VIMC) += vimc > > + > > +LIBCAMERA_CONF_TOOL := meson > > +LIBCAMERA_CONF_OPT := \ > > + $(CROSS_MESON_USR) \ > > + -Dandroid=disabled \ > > + -Dcam=$(call ptx/endis,PTXCONF_LIBCAMERA_CAM)d \ > > + -Ddocumentation=disabled \ > > + -Dgstreamer=$(call ptx/endis,PTXCONF_LIBCAMERA_GSTREAMER)d \ > > + -Dipas=$(subst $(ptx/def/space),$(ptx/def/comma),$(strip > > $(LIBCAMERA_IPASC-y))) \ > > + -Dlc-compliance=disabled \ > > + -Dpipelines=$(subst $(ptx/def/space),$(ptx/def/comma),$(strip > > $(LIBCAMERA_PIPELINES-y))) \ > > + -Dqcam=$(call ptx/endis,PTXCONF_LIBCAMERA_QCAM)d \ > > + -Dtest=false \ > > + -Dtracing=$(call ptx/endis,PTXCONF_LIBCAMERA_TRACING)d \ > > + -Dv4l2=false \ > > + -Dpycamera=disabled > > + > > +# > > ---------------------------------------------------------------------------- > > +# Target-Install > > +# > > ---------------------------------------------------------------------------- > > + > > +define install_ipa > > + @$(call install_copy, libcamera, 0, 0, 0755, -, \ > > + /usr/libexec/libcamera/$(strip $(1))_ipa_proxy) > > + @$(call install_alternative_tree, libcamera, 0, 0, \ > > + /usr/share/libcamera/ipa/$(strip $(1))) > > +endef > > + > > +define install_ipa_module > > + # The IPA modules must not be stripped, otherwise the associated > > + # signatures will no longer be valid. > > + @$(call install_copy, libcamera, 0, 0, 0644, -, \ > > + /usr/lib/libcamera/ipa_$(strip $(1)).so, n) > > + @$(call install_copy, libcamera, 0, 0, 0644, -, \ > > + /usr/lib/libcamera/ipa_$(strip $(1)).so.sign) > > +endef > > + > > +$(STATEDIR)/libcamera.targetinstall: > > + @$(call targetinfo) > > + > > + @$(call install_init, libcamera) > > + @$(call install_fixup, libcamera, PRIORITY, optional) > > + @$(call install_fixup, libcamera, SECTION, base) > > + @$(call install_fixup, libcamera, AUTHOR, "Matthias Fend > > <matthias.f...@emfend.at>") > > + @$(call install_fixup, libcamera, DESCRIPTION, missing) > > + > > + @$(call install_lib, libcamera, 0, 0, 0644, libcamera) > > + @$(call install_lib, libcamera, 0, 0, 0644, libcamera-base) > > + > > + @$(foreach ipa,$(LIBCAMERA_IPASC-y), \ > > + $(call install_ipa, $(ipa))$(ptx/nl)) > > + > > + @$(foreach ipa_module,$(LIBCAMERA_IPASM-y), \ > > + $(call install_ipa_module, $(ipa_module))$(ptx/nl)) > > + > > +ifdef PTXCONF_LIBCAMERA_GSTREAMER > > + @$(call install_lib, libcamera, 0, 0, 0644, > > gstreamer-1.0/libgstlibcamera) > > +endif > > + > > +ifdef PTXCONF_LIBCAMERA_CAM > > + @$(call install_copy, libcamera, 0, 0, 0755, -, /usr/bin/cam) > > +endif > > + > > +ifdef PTXCONF_LIBCAMERA_QCAM > > + @$(call install_copy, libcamera, 0, 0, 0755, -, /usr/bin/qcam) > > +endif > > + > > + @$(call install_finish, libcamera) > > + > > + @$(call touch) > > + > > +# vim: syntax=make > > -- > > 2.25.1 > > > > > > > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |