mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [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-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 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: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-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-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-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

* 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

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