* [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