* [ptxdist] [PATCH v2 0/1] libcamera: new package @ 2022-09-11 10:41 Matthias Fend 2022-09-11 10:41 ` [ptxdist] [PATCH v2 1/1] " Matthias Fend 0 siblings, 1 reply; 11+ messages in thread From: Matthias Fend @ 2022-09-11 10:41 UTC (permalink / raw) To: ptxdist libcamera is an open source camera stack and framework for Linux, Android, and ChromeOS. Since libcamera is still quite new and there are no released versions yet, a git snapshot is used. A patch is currently required to deactivate the automatic git-based version generation, otherwise the git information from the BSP repository will be used incorrectly. This may lead to a build error, at least to an incorrect version. However, since libcamera versioning is currently being discussed, the patch may be dropped in the near future. Changelog: v2: - Changed format of git version tag - Use list-based processing for IPAs - Add a comment to note why IPA modules are not stripped - Some source format fixes Matthias Fend (1): libcamera: new package ...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 -- 2.25.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-11 10:41 [ptxdist] [PATCH v2 0/1] libcamera: new package Matthias Fend @ 2022-09-11 10:41 ` Matthias Fend 2022-09-13 13:53 ` Marco Felsch 2022-09-13 15:24 ` Michael Olbrich 0 siblings, 2 replies; 11+ messages in thread From: Matthias Fend @ 2022-09-11 10:41 UTC (permalink / raw) To: ptxdist libcamera is an open source camera stack and framework for Linux, Android, and ChromeOS. Signed-off-by: Matthias Fend <matthias.fend@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.fend@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.fend@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 + select UDEV_LIBUDEV + select LIBYAML + select LIBUNWIND if LIBCAMERA_BACKTRACE + select GSTREAMER1 if LIBCAMERA_GSTREAMER + select GST_PLUGINS_BASE1 if LIBCAMERA_GSTREAMER + select LIBEVENT 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 + +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.fend@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.fend@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 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-11 10:41 ` [ptxdist] [PATCH v2 1/1] " Matthias Fend @ 2022-09-13 13:53 ` Marco Felsch 2022-09-13 15:31 ` Michael Olbrich 2022-09-14 6:04 ` Matthias Fend 2022-09-13 15:24 ` Michael Olbrich 1 sibling, 2 replies; 11+ messages in thread From: Marco Felsch @ 2022-09-13 13:53 UTC (permalink / raw) To: ptxdist 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.fend@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.fend@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.fend@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 > + 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. 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.fend@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.fend@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 > > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-13 13:53 ` Marco Felsch @ 2022-09-13 15:31 ` Michael Olbrich 2022-09-14 8:03 ` Marco Felsch 2022-09-14 6:04 ` Matthias Fend 1 sibling, 1 reply; 11+ messages in thread From: Michael Olbrich @ 2022-09-13 15:31 UTC (permalink / raw) To: Marco Felsch; +Cc: Matthias Fend, ptxdist 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.fend@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.fend@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.fend@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.fend@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.fend@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 | ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-13 15:31 ` Michael Olbrich @ 2022-09-14 8:03 ` Marco Felsch 0 siblings, 0 replies; 11+ messages in thread From: Marco Felsch @ 2022-09-14 8:03 UTC (permalink / raw) To: ptxdist, Matthias Fend On 22-09-13, Michael Olbrich wrote: > On Tue, Sep 13, 2022 at 03:53:21PM +0200, Marco Felsch wrote: > > Hi Matthias, ... > > > + 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? To leave the user the option to not enable it at all. Maybe your rootfs size is very limited and you can't pull any of crpytolibs, then you can turn it off. > And if the modules are not signed then they should be stripped. The IPAs running in a seperate process if they are not signed. So the user has the choice between runtime overhead <-> rootfs size. Regards, Marco ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-13 13:53 ` Marco Felsch 2022-09-13 15:31 ` Michael Olbrich @ 2022-09-14 6:04 ` Matthias Fend 2022-09-14 7:50 ` Marco Felsch 1 sibling, 1 reply; 11+ messages in thread From: Matthias Fend @ 2022-09-14 6:04 UTC (permalink / raw) To: ptxdist, Marco Felsch Hi Marco, Am 13.09.2022 um 15:53 schrieb Marco Felsch: > 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.fend@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.fend@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.fend@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 > >> + select UDEV_LIBUDEV >> + select LIBYAML > > missing select BOOST if LIBCAMERA_PIPELINE_RASPBERRYPI Since commit 'ipa: raspberrypi: Use YamlParser to replace dependency on boost' this shouldn't be necessary anymore, but maybe I missed something? > >> + 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 It is possible to build and use 'cam' without libdrm (as in my case), but you get more features when additional libraries are available (libdrm, libjpeg, SDL2). Since at least one seems to need the KMS sink function, I can add an extra option for "cam" that selects libdrm. Would that meet your requirements? > >> + 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. > > 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 Thanks for your input. I will also include the additional crypto options. Is the reason for disabling module signing to reduce dependencies on the target, or anything else? Thanks, ~Matthias > > 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.fend@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.fend@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 >> >> >> > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-14 6:04 ` Matthias Fend @ 2022-09-14 7:50 ` Marco Felsch 2022-09-14 13:06 ` Michael Olbrich 0 siblings, 1 reply; 11+ messages in thread From: Marco Felsch @ 2022-09-14 7:50 UTC (permalink / raw) To: Matthias Fend; +Cc: ptxdist Hi Matthias, On 22-09-14, Matthias Fend wrote: > Hi Marco, > > Am 13.09.2022 um 15:53 schrieb Marco Felsch: > > 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.fend@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.fend@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.fend@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 > > > > > + select UDEV_LIBUDEV > > > + select LIBYAML > > > > missing select BOOST if LIBCAMERA_PIPELINE_RASPBERRYPI > > > Since commit 'ipa: raspberrypi: Use YamlParser to replace dependency on > boost' this shouldn't be necessary anymore, but maybe I missed something? Ah.. you're right, forget my comment. Didn't noticed that commit. > > > + 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 > > It is possible to build and use 'cam' without libdrm (as in my case), but > you get more features when additional libraries are available (libdrm, > libjpeg, SDL2). > Since at least one seems to need the KMS sink function, I can add an extra > option for "cam" that selects libdrm. > Would that meet your requirements? > > > > > > + 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. > > > > 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 > > Thanks for your input. I will also include the additional crypto options. > Is the reason for disabling module signing to reduce dependencies on the > target, or anything else? Yes, it would reduce the dependencies if off. Also this gives the user the ability to select the crypto lib which is already used on the target. Since the worst case would be to pull a 2nd lib if one already have one. Don't know if there is some option to select a global crypto provider. @Michael is this possible? Regards, Marco > > Thanks, > ~Matthias > > > > > 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.fend@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.fend@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 > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-14 7:50 ` Marco Felsch @ 2022-09-14 13:06 ` Michael Olbrich 0 siblings, 0 replies; 11+ messages in thread From: Michael Olbrich @ 2022-09-14 13:06 UTC (permalink / raw) To: Marco Felsch; +Cc: Matthias Fend, ptxdist On Wed, Sep 14, 2022 at 09:50:41AM +0200, Marco Felsch wrote: > On 22-09-14, Matthias Fend wrote: > > Thanks for your input. I will also include the additional crypto options. > > Is the reason for disabling module signing to reduce dependencies on the > > target, or anything else? > > Yes, it would reduce the dependencies if off. Also this gives the user > the ability to select the crypto lib which is already used on the > target. Since the worst case would be to pull a 2nd lib if one already > have one. > > Don't know if there is some option to select a global crypto provider. > @Michael is this possible? So, I like having a choice, because it allows minimizing the number of crypto libraries. But these is not global default, because it's hard to implement: If it's just a default for a choice option, then it must be enabled before all other packages: The default is is ignored if something is already enabled. So changing the default has no effect either. We could also hide the other options when a default is select. But that means that there is no way to overwrite the default. And sometimes not all backends have the same features. Neither version is really desirable, so I never bothered to implement anything like this. Michael -- 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 | ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-11 10:41 ` [ptxdist] [PATCH v2 1/1] " Matthias Fend 2022-09-13 13:53 ` Marco Felsch @ 2022-09-13 15:24 ` Michael Olbrich 2022-09-14 5:54 ` Matthias Fend 1 sibling, 1 reply; 11+ messages in thread From: Michael Olbrich @ 2022-09-13 15:24 UTC (permalink / raw) To: Matthias Fend; +Cc: ptxdist On Sun, Sep 11, 2022 at 12:41:05PM +0200, Matthias Fend wrote: > libcamera is an open source camera stack and framework for Linux, Android, > and ChromeOS. > > Signed-off-by: Matthias Fend <matthias.fend@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.fend@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.fend@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 > + select UDEV_LIBUDEV > + select LIBYAML > + select LIBUNWIND if LIBCAMERA_BACKTRACE > + select GSTREAMER1 if LIBCAMERA_GSTREAMER > + select GST_PLUGINS_BASE1 if LIBCAMERA_GSTREAMER > + select LIBEVENT 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 > + > +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" So, I missed this in the first version: Why would someone enable (for example) the ipu3 pipeline but not the ipu3 IPA? In other words, wouldn't it be easier to have one "Hardware" option each and enable both IPA and pipeline (or whichever is available)? Michael > + > +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.fend@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.fend@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 | ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-13 15:24 ` Michael Olbrich @ 2022-09-14 5:54 ` Matthias Fend 2022-09-14 12:59 ` Michael Olbrich 0 siblings, 1 reply; 11+ messages in thread From: Matthias Fend @ 2022-09-14 5:54 UTC (permalink / raw) To: ptxdist; +Cc: Michael Olbrich Hi Michael, Am 13.09.2022 um 17:24 schrieb Michael Olbrich: > On Sun, Sep 11, 2022 at 12:41:05PM +0200, Matthias Fend wrote: >> libcamera is an open source camera stack and framework for Linux, Android, >> and ChromeOS. >> >> Signed-off-by: Matthias Fend <matthias.fend@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.fend@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.fend@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 >> + select UDEV_LIBUDEV >> + select LIBYAML >> + select LIBUNWIND if LIBCAMERA_BACKTRACE >> + select GSTREAMER1 if LIBCAMERA_GSTREAMER >> + select GST_PLUGINS_BASE1 if LIBCAMERA_GSTREAMER >> + select LIBEVENT 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 >> + >> +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" > > So, I missed this in the first version: Why would someone enable (for > example) the ipu3 pipeline but not the ipu3 IPA? In other words, wouldn't > it be easier to have one "Hardware" option each and enable both IPA and > pipeline (or whichever is available)? - There are some pipelines (simple, uvc) that are not directly mapped to an IPA. - It is possible, and I think a likely use case, that for example the IPU3 pipeline is selected, but a custom (then from another package) IPA is used. - libcamera provides extra separate options for pipelines and IPAs and I assume someone has thought about that. Perhaps there will be more possible pipeline and IPA combinations in the future. For these reasons, I have decided to map these options completely and not to include any further implications and relationships in the rule file. Does that sound reasonable to you, or should I still change it as suggested? Thanks, ~Matthias > > Michael > >> + >> +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.fend@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.fend@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 >> >> >> > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ptxdist] [PATCH v2 1/1] libcamera: new package 2022-09-14 5:54 ` Matthias Fend @ 2022-09-14 12:59 ` Michael Olbrich 0 siblings, 0 replies; 11+ messages in thread From: Michael Olbrich @ 2022-09-14 12:59 UTC (permalink / raw) To: Matthias Fend; +Cc: ptxdist On Wed, Sep 14, 2022 at 07:54:43AM +0200, Matthias Fend wrote: > Am 13.09.2022 um 17:24 schrieb Michael Olbrich: > > On Sun, Sep 11, 2022 at 12:41:05PM +0200, Matthias Fend wrote: > > > libcamera is an open source camera stack and framework for Linux, Android, > > > and ChromeOS. > > > +menu "Pipelines" > > > > So, I missed this in the first version: Why would someone enable (for > > example) the ipu3 pipeline but not the ipu3 IPA? In other words, wouldn't > > it be easier to have one "Hardware" option each and enable both IPA and > > pipeline (or whichever is available)? > > - There are some pipelines (simple, uvc) that are not directly mapped to an > IPA. > > - It is possible, and I think a likely use case, that for example the IPU3 > pipeline is selected, but a custom (then from another package) IPA is used. > > - libcamera provides extra separate options for pipelines and IPAs and I > assume someone has thought about that. Perhaps there will be more possible > pipeline and IPA combinations in the future. > > For these reasons, I have decided to map these options completely and not to > include any further implications and relationships in the rule file. > > Does that sound reasonable to you, or should I still change it as suggested? The architecture (and therefore the meson options) is designed in a way to allow closed source IPAs. I don't think that this will be a very common use case in PTXdist. So I prefer one option right now. We can always change this later, if that assumption turns out to be wrong. Michael -- 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 | ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-09-14 13:06 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-09-11 10:41 [ptxdist] [PATCH v2 0/1] libcamera: new package Matthias Fend 2022-09-11 10:41 ` [ptxdist] [PATCH v2 1/1] " Matthias Fend 2022-09-13 13:53 ` Marco Felsch 2022-09-13 15:31 ` Michael Olbrich 2022-09-14 8:03 ` Marco Felsch 2022-09-14 6:04 ` Matthias Fend 2022-09-14 7:50 ` Marco Felsch 2022-09-14 13:06 ` Michael Olbrich 2022-09-13 15:24 ` Michael Olbrich 2022-09-14 5:54 ` Matthias Fend 2022-09-14 12:59 ` Michael Olbrich
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox