mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] [PATCH 0/1] libcamera: new package
@ 2022-09-08  7:29 Matthias Fend
  2022-09-08  7:29 ` [ptxdist] [PATCH 1/1] " Matthias Fend
  0 siblings, 1 reply; 5+ messages in thread
From: Matthias Fend @ 2022-09-08  7:29 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.

As libcamera depends on HOST_SYSTEM_PYTHON3_PLY and 
HOST_SYSTEM_PYTHON3_PYYAML, patch 
'host-system-python3: add ply and pyyaml option' is a necessary
prerequisite.

Matthias Fend (1):
  libcamera: new package

 ...t-information-for-version-generation.patch |  29 ++++
 .../series                                    |   4 +
 rules/libcamera.in                            |  90 ++++++++++++
 rules/libcamera.make                          | 137 ++++++++++++++++++
 4 files changed, 260 insertions(+)
 create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
 create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
 create mode 100644 rules/libcamera.in
 create mode 100644 rules/libcamera.make

-- 
2.25.1




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [ptxdist] [PATCH 1/1] libcamera: new package
  2022-09-08  7:29 [ptxdist] [PATCH 0/1] libcamera: new package Matthias Fend
@ 2022-09-08  7:29 ` Matthias Fend
  2022-09-09  9:46   ` Michael Olbrich
  0 siblings, 1 reply; 5+ messages in thread
From: Matthias Fend @ 2022-09-08  7:29 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 ++++
 .../series                                    |   4 +
 rules/libcamera.in                            |  90 ++++++++++++
 rules/libcamera.make                          | 137 ++++++++++++++++++
 4 files changed, 260 insertions(+)
 create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
 create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
 create mode 100644 rules/libcamera.in
 create mode 100644 rules/libcamera.make

diff --git a/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
new file mode 100644
index 000000000..3e5c5ce68
--- /dev/null
+++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/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-68683d3811a803aa087c38a2063cf64c8d084d49/series b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
new file mode 100644
index 000000000..6ca42eafc
--- /dev/null
+++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/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..3ed9e2a71
--- /dev/null
+++ b/rules/libcamera.make
@@ -0,0 +1,137 @@
+# -*-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	:= 68683d3811a803aa087c38a2063cf64c8d084d49
+LIBCAMERA_MD5		:= 0a1c0f6656dae9dc338b46aab50d83f9
+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		:=
+LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_IPU3,ipu3)
+LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RASPBERRYPI,raspberrypi)
+LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RKISP1,rkisp1)
+LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_VIMC,vimc)
+
+LIBCAMERA_IPAS		:= $(strip $(LIBCAMERA_IPAS))
+LIBCAMERA_IPAS		:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_IPAS))
+
+LIBCAMERA_PIPELINES	:=
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_IPU3,ipu3)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI,raspberrypi)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RKISP1,rkisp1)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_SIMPLE,simple)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO,uvcvideo)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_VIMC,vimc)
+
+LIBCAMERA_PIPELINES	:= $(strip $(LIBCAMERA_PIPELINES))
+LIBCAMERA_PIPELINES	:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_PIPELINES))
+
+
+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=$(LIBCAMERA_IPAS) \
+	-Dlc-compliance=disabled \
+	-Dpipelines=$(LIBCAMERA_PIPELINES) \
+	-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, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so, 0)
+	@$(call install_copy, libcamera, 0, 0, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so.sign)
+	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/libexec/libcamera/$(strip $(2))_ipa_proxy)
+	@$(call install_alternative_tree, libcamera, 0, 0, /usr/share/libcamera/ipa/$(strip $(2)))
+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)
+
+ifdef PTXCONF_LIBCAMERA_IPA_IPU3
+	@$(call install_ipa, ipu3, ipu3)
+endif
+
+ifdef PTXCONF_LIBCAMERA_IPA_RASPBERRYPI
+	@$(call install_ipa, rpi, raspberrypi)
+endif
+
+ifdef PTXCONF_LIBCAMERA_IPA_RKISP1
+	@$(call install_ipa, rkisp1, rkisp1)
+endif
+
+ifdef PTXCONF_LIBCAMERA_IPA_VIMC
+	@$(call install_ipa, vimc, vimc)
+endif
+
+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] 5+ messages in thread

* Re: [ptxdist] [PATCH 1/1] libcamera: new package
  2022-09-08  7:29 ` [ptxdist] [PATCH 1/1] " Matthias Fend
@ 2022-09-09  9:46   ` Michael Olbrich
  2022-09-10 12:27     ` Matthias Fend
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Olbrich @ 2022-09-09  9:46 UTC (permalink / raw)
  To: Matthias Fend; +Cc: ptxdist

On Thu, Sep 08, 2022 at 09:29:18AM +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 ++++
>  .../series                                    |   4 +
>  rules/libcamera.in                            |  90 ++++++++++++
>  rules/libcamera.make                          | 137 ++++++++++++++++++
>  4 files changed, 260 insertions(+)
>  create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
>  create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
>  create mode 100644 rules/libcamera.in
>  create mode 100644 rules/libcamera.make
> 
> diff --git a/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
> new file mode 100644
> index 000000000..3e5c5ce68
> --- /dev/null
> +++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/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-68683d3811a803aa087c38a2063cf64c8d084d49/series b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
> new file mode 100644
> index 000000000..6ca42eafc
> --- /dev/null
> +++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/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..3ed9e2a71
> --- /dev/null
> +++ b/rules/libcamera.make
> @@ -0,0 +1,137 @@
> +# -*-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	:= 68683d3811a803aa087c38a2063cf64c8d084d49

Please use a faked git-describe string: 2022-08-30-g68683d3811a8
(<commit-date>-g<short-hash>).

> +LIBCAMERA_MD5		:= 0a1c0f6656dae9dc338b46aab50d83f9
> +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		:=
> +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_IPU3,ipu3)
> +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RASPBERRYPI,raspberrypi)
> +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RKISP1,rkisp1)
> +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_VIMC,vimc)

For stuff like that I prefer:

LIBCAMERA_IPAS-y				:=
LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_IPU3)	+= ipu3
...

> +
> +LIBCAMERA_IPAS		:= $(strip $(LIBCAMERA_IPAS))
> +LIBCAMERA_IPAS		:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_IPAS))

I'd do this as part of the LIBCAMERA_CONF_OPT. Then yoy can reuse the
variable below.

> +
> +LIBCAMERA_PIPELINES	:=
> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_IPU3,ipu3)
> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI,raspberrypi)
> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RKISP1,rkisp1)
> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_SIMPLE,simple)
> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO,uvcvideo)
> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_VIMC,vimc)
> +
> +LIBCAMERA_PIPELINES	:= $(strip $(LIBCAMERA_PIPELINES))
> +LIBCAMERA_PIPELINES	:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_PIPELINES))

same here.

> +
> +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=$(LIBCAMERA_IPAS) \
> +	-Dlc-compliance=disabled \
> +	-Dpipelines=$(LIBCAMERA_PIPELINES) \
> +	-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, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so, 0)

Use 'n' as the last argument. And this should have a comment, why this
library is not stripped.

> +	@$(call install_copy, libcamera, 0, 0, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so.sign)
> +	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/libexec/libcamera/$(strip $(2))_ipa_proxy)
> +	@$(call install_alternative_tree, libcamera, 0, 0, /usr/share/libcamera/ipa/$(strip $(2)))

Break all four lines before the filename.

> +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)
> +
> +ifdef PTXCONF_LIBCAMERA_IPA_IPU3
> +	@$(call install_ipa, ipu3, ipu3)
> +endif
> +
> +ifdef PTXCONF_LIBCAMERA_IPA_RASPBERRYPI
> +	@$(call install_ipa, rpi, raspberrypi)
> +endif
> +
> +ifdef PTXCONF_LIBCAMERA_IPA_RKISP1
> +	@$(call install_ipa, rkisp1, rkisp1)
> +endif
> +
> +ifdef PTXCONF_LIBCAMERA_IPA_VIMC
> +	@$(call install_ipa, vimc, vimc)
> +endif
> +

	@$(foreach ipa,$(LIBCAMERA_IPAS-y), \
		$(call install_ipa, $(ipa), $(ipa))$(ptx/nl))

Untested, instead of the stuff above.

Michael

> +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] 5+ messages in thread

* Re: [ptxdist] [PATCH 1/1] libcamera: new package
  2022-09-09  9:46   ` Michael Olbrich
@ 2022-09-10 12:27     ` Matthias Fend
  2022-09-10 12:35       ` Michael Olbrich
  0 siblings, 1 reply; 5+ messages in thread
From: Matthias Fend @ 2022-09-10 12:27 UTC (permalink / raw)
  To: ptxdist; +Cc: Michael Olbrich

Hi Michael,

Am 09.09.2022 um 11:46 schrieb Michael Olbrich:
> On Thu, Sep 08, 2022 at 09:29:18AM +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 ++++
>>   .../series                                    |   4 +
>>   rules/libcamera.in                            |  90 ++++++++++++
>>   rules/libcamera.make                          | 137 ++++++++++++++++++
>>   4 files changed, 260 insertions(+)
>>   create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
>>   create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
>>   create mode 100644 rules/libcamera.in
>>   create mode 100644 rules/libcamera.make
>>
>> diff --git a/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
>> new file mode 100644
>> index 000000000..3e5c5ce68
>> --- /dev/null
>> +++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/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-68683d3811a803aa087c38a2063cf64c8d084d49/series b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
>> new file mode 100644
>> index 000000000..6ca42eafc
>> --- /dev/null
>> +++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/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..3ed9e2a71
>> --- /dev/null
>> +++ b/rules/libcamera.make
>> @@ -0,0 +1,137 @@
>> +# -*-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	:= 68683d3811a803aa087c38a2063cf64c8d084d49
> 
> Please use a faked git-describe string: 2022-08-30-g68683d3811a8
> (<commit-date>-g<short-hash>).
> 
>> +LIBCAMERA_MD5		:= 0a1c0f6656dae9dc338b46aab50d83f9
>> +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		:=
>> +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_IPU3,ipu3)
>> +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RASPBERRYPI,raspberrypi)
>> +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RKISP1,rkisp1)
>> +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_VIMC,vimc)
> 
> For stuff like that I prefer:
> 
> LIBCAMERA_IPAS-y				:=
> LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_IPU3)	+= ipu3
> ...
> 
>> +
>> +LIBCAMERA_IPAS		:= $(strip $(LIBCAMERA_IPAS))
>> +LIBCAMERA_IPAS		:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_IPAS))
> 
> I'd do this as part of the LIBCAMERA_CONF_OPT. Then yoy can reuse the
> variable below.
> 
>> +
>> +LIBCAMERA_PIPELINES	:=
>> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_IPU3,ipu3)
>> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI,raspberrypi)
>> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RKISP1,rkisp1)
>> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_SIMPLE,simple)
>> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO,uvcvideo)
>> +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_VIMC,vimc)
>> +
>> +LIBCAMERA_PIPELINES	:= $(strip $(LIBCAMERA_PIPELINES))
>> +LIBCAMERA_PIPELINES	:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_PIPELINES))
> 
> same here.
> 
>> +
>> +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=$(LIBCAMERA_IPAS) \
>> +	-Dlc-compliance=disabled \
>> +	-Dpipelines=$(LIBCAMERA_PIPELINES) \
>> +	-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, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so, 0)
> 
> Use 'n' as the last argument. And this should have a comment, why this
> library is not stripped.
> 
>> +	@$(call install_copy, libcamera, 0, 0, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so.sign)
>> +	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/libexec/libcamera/$(strip $(2))_ipa_proxy)
>> +	@$(call install_alternative_tree, libcamera, 0, 0, /usr/share/libcamera/ipa/$(strip $(2)))
> 
> Break all four lines before the filename.
> 
>> +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)
>> +
>> +ifdef PTXCONF_LIBCAMERA_IPA_IPU3
>> +	@$(call install_ipa, ipu3, ipu3)
>> +endif
>> +
>> +ifdef PTXCONF_LIBCAMERA_IPA_RASPBERRYPI
>> +	@$(call install_ipa, rpi, raspberrypi)
>> +endif
>> +
>> +ifdef PTXCONF_LIBCAMERA_IPA_RKISP1
>> +	@$(call install_ipa, rkisp1, rkisp1)
>> +endif
>> +
>> +ifdef PTXCONF_LIBCAMERA_IPA_VIMC
>> +	@$(call install_ipa, vimc, vimc)
>> +endif
>> +
> 
> 	@$(foreach ipa,$(LIBCAMERA_IPAS-y), \
> 		$(call install_ipa, $(ipa), $(ipa))$(ptx/nl))
> 
> Untested, instead of the stuff above.

This was actually my first attempt where I noticed that there is a 
slight inconsistency in the names of the RaspberryPI IPA. The build 
option and module proxy are named "raspberrypi", while the IPA module 
itself uses "rpi" :/

As an alternative to the current variant, one could of course also 
create a second list with the actual IPA module names. But I'm not sure 
if that's better. Any favors?

Thank you for your comments and improvements.

~Matthias

> 
> Michael
> 
>> +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] 5+ messages in thread

* Re: [ptxdist] [PATCH 1/1] libcamera: new package
  2022-09-10 12:27     ` Matthias Fend
@ 2022-09-10 12:35       ` Michael Olbrich
  0 siblings, 0 replies; 5+ messages in thread
From: Michael Olbrich @ 2022-09-10 12:35 UTC (permalink / raw)
  To: Matthias Fend; +Cc: ptxdist

Hi,

On Sat, Sep 10, 2022 at 02:27:45PM +0200, Matthias Fend wrote:
> Am 09.09.2022 um 11:46 schrieb Michael Olbrich:
> > On Thu, Sep 08, 2022 at 09:29:18AM +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 ++++
> > >   .../series                                    |   4 +
> > >   rules/libcamera.in                            |  90 ++++++++++++
> > >   rules/libcamera.make                          | 137 ++++++++++++++++++
> > >   4 files changed, 260 insertions(+)
> > >   create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
> > >   create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
> > >   create mode 100644 rules/libcamera.in
> > >   create mode 100644 rules/libcamera.make
> > > 
> > > diff --git a/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
> > > new file mode 100644
> > > index 000000000..3e5c5ce68
> > > --- /dev/null
> > > +++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/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-68683d3811a803aa087c38a2063cf64c8d084d49/series b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
> > > new file mode 100644
> > > index 000000000..6ca42eafc
> > > --- /dev/null
> > > +++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/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..3ed9e2a71
> > > --- /dev/null
> > > +++ b/rules/libcamera.make
> > > @@ -0,0 +1,137 @@
> > > +# -*-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	:= 68683d3811a803aa087c38a2063cf64c8d084d49
> > 
> > Please use a faked git-describe string: 2022-08-30-g68683d3811a8
> > (<commit-date>-g<short-hash>).
> > 
> > > +LIBCAMERA_MD5		:= 0a1c0f6656dae9dc338b46aab50d83f9
> > > +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		:=
> > > +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_IPU3,ipu3)
> > > +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RASPBERRYPI,raspberrypi)
> > > +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RKISP1,rkisp1)
> > > +LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_VIMC,vimc)
> > 
> > For stuff like that I prefer:
> > 
> > LIBCAMERA_IPAS-y				:=
> > LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_IPU3)	+= ipu3
> > ...
> > 
> > > +
> > > +LIBCAMERA_IPAS		:= $(strip $(LIBCAMERA_IPAS))
> > > +LIBCAMERA_IPAS		:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_IPAS))
> > 
> > I'd do this as part of the LIBCAMERA_CONF_OPT. Then yoy can reuse the
> > variable below.
> > 
> > > +
> > > +LIBCAMERA_PIPELINES	:=
> > > +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_IPU3,ipu3)
> > > +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI,raspberrypi)
> > > +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RKISP1,rkisp1)
> > > +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_SIMPLE,simple)
> > > +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO,uvcvideo)
> > > +LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_VIMC,vimc)
> > > +
> > > +LIBCAMERA_PIPELINES	:= $(strip $(LIBCAMERA_PIPELINES))
> > > +LIBCAMERA_PIPELINES	:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_PIPELINES))
> > 
> > same here.
> > 
> > > +
> > > +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=$(LIBCAMERA_IPAS) \
> > > +	-Dlc-compliance=disabled \
> > > +	-Dpipelines=$(LIBCAMERA_PIPELINES) \
> > > +	-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, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so, 0)
> > 
> > Use 'n' as the last argument. And this should have a comment, why this
> > library is not stripped.
> > 
> > > +	@$(call install_copy, libcamera, 0, 0, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so.sign)
> > > +	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/libexec/libcamera/$(strip $(2))_ipa_proxy)
> > > +	@$(call install_alternative_tree, libcamera, 0, 0, /usr/share/libcamera/ipa/$(strip $(2)))
> > 
> > Break all four lines before the filename.
> > 
> > > +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)
> > > +
> > > +ifdef PTXCONF_LIBCAMERA_IPA_IPU3
> > > +	@$(call install_ipa, ipu3, ipu3)
> > > +endif
> > > +
> > > +ifdef PTXCONF_LIBCAMERA_IPA_RASPBERRYPI
> > > +	@$(call install_ipa, rpi, raspberrypi)
> > > +endif
> > > +
> > > +ifdef PTXCONF_LIBCAMERA_IPA_RKISP1
> > > +	@$(call install_ipa, rkisp1, rkisp1)
> > > +endif
> > > +
> > > +ifdef PTXCONF_LIBCAMERA_IPA_VIMC
> > > +	@$(call install_ipa, vimc, vimc)
> > > +endif
> > > +
> > 
> > 	@$(foreach ipa,$(LIBCAMERA_IPAS-y), \
> > 		$(call install_ipa, $(ipa), $(ipa))$(ptx/nl))
> > 
> > Untested, instead of the stuff above.
> 
> This was actually my first attempt where I noticed that there is a slight
> inconsistency in the names of the RaspberryPI IPA. The build option and
> module proxy are named "raspberrypi", while the IPA module itself uses "rpi"
> :/
> 
> As an alternative to the current variant, one could of course also create a
> second list with the actual IPA module names. But I'm not sure if that's
> better. Any favors?

I expect that there will be more plugins in the future. So I prefer the
loop. Take a look at gst-plugins-good1. It has the same problem with
different names for meson options and file names. It uses a shared list
when the name matches and separate otherwise.

Michael

> Thank you for your comments and improvements.
> 
> ~Matthias
> 
> > 
> > Michael
> > 
> > > +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] 5+ messages in thread

end of thread, other threads:[~2022-09-10 12:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-08  7:29 [ptxdist] [PATCH 0/1] libcamera: new package Matthias Fend
2022-09-08  7:29 ` [ptxdist] [PATCH 1/1] " Matthias Fend
2022-09-09  9:46   ` Michael Olbrich
2022-09-10 12:27     ` Matthias Fend
2022-09-10 12:35       ` Michael Olbrich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox