From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Fri, 09 Sep 2022 11:46:48 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1oWab0-00BkfI-G2 for lore@lore.pengutronix.de; Fri, 09 Sep 2022 11:46:48 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1oWab1-0005i6-Kk; Fri, 09 Sep 2022 11:46:47 +0200 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oWaaJ-0005hQ-S5; Fri, 09 Sep 2022 11:46:03 +0200 Received: from [2a0a:edc0:0:1101:1d::39] (helo=dude03.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1oWaaG-004nA2-Tq; Fri, 09 Sep 2022 11:46:02 +0200 Received: from mol by dude03.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1oWaaH-0057cq-SA; Fri, 09 Sep 2022 11:46:01 +0200 Date: Fri, 9 Sep 2022 11:46:01 +0200 From: Michael Olbrich To: Matthias Fend Message-ID: Mail-Followup-To: Matthias Fend , ptxdist@pengutronix.de References: <20220908072918.406891-1-matthias.fend@emfend.at> <20220908072918.406891-2-matthias.fend@emfend.at> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220908072918.406891-2-matthias.fend@emfend.at> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-IRC: #ptxdist @freenode X-Accept-Language: de,en X-Accept-Content-Type: text/plain Subject: Re: [ptxdist] [PATCH 1/1] libcamera: new package X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Cc: ptxdist@pengutronix.de Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false 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 > --- > ...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 > +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 > +--- > + 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 > +# > +# 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 (-g). > +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 ") > + @$(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 |