mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Michael Olbrich <m.olbrich@pengutronix.de>
To: Matthias Fend <matthias.fend@emfend.at>
Cc: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH v2 1/1] libcamera: new package
Date: Tue, 13 Sep 2022 17:24:09 +0200	[thread overview]
Message-ID: <20220913152409.GA28082@pengutronix.de> (raw)
In-Reply-To: <20220911104105.88583-2-matthias.fend@emfend.at>

On Sun, Sep 11, 2022 at 12:41:05PM +0200, Matthias Fend wrote:
> libcamera is an open source camera stack and framework for Linux, Android,
> and ChromeOS.
> 
> Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
> ---
>  ...t-information-for-version-generation.patch |  29 ++++
>  .../libcamera-2022-08-30-g68683d3811a8/series |   4 +
>  rules/libcamera.in                            |  90 ++++++++++++
>  rules/libcamera.make                          | 133 ++++++++++++++++++
>  4 files changed, 256 insertions(+)
>  create mode 100644 patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
>  create mode 100644 patches/libcamera-2022-08-30-g68683d3811a8/series
>  create mode 100644 rules/libcamera.in
>  create mode 100644 rules/libcamera.make
> 
> diff --git a/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch b/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
> new file mode 100644
> index 000000000..3e5c5ce68
> --- /dev/null
> +++ b/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
> @@ -0,0 +1,29 @@
> +From: Matthias Fend <matthias.fend@emfend.at>
> +Date: Wed, 31 Aug 2022 16:54:20 +0200
> +Subject: [PATCH] do not use git information for version generation
> +
> +Since libcamera is checked out without a git repo, git version reports the
> +version of the BSP. Since this is obviously wrong, just use the project
> +version.
> +
> +Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
> +---
> + meson.build | 5 ++---
> + 1 file changed, 2 insertions(+), 3 deletions(-)
> +
> +diff --git a/meson.build b/meson.build
> +index 72919102ad55..e333df59388d 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -20,9 +20,8 @@ libcamera_git_version = run_command('utils/gen-version.sh',
> +                                     meson.project_build_root(),
> +                                     meson.project_source_root(),
> +                                     check: false).stdout().strip()
> +-if libcamera_git_version == ''
> +-    libcamera_git_version = meson.project_version()
> +-endif
> ++
> ++libcamera_git_version = meson.project_version()
> + 
> + libcamera_version = libcamera_git_version.split('+')[0]
> + 
> diff --git a/patches/libcamera-2022-08-30-g68683d3811a8/series b/patches/libcamera-2022-08-30-g68683d3811a8/series
> new file mode 100644
> index 000000000..6ca42eafc
> --- /dev/null
> +++ b/patches/libcamera-2022-08-30-g68683d3811a8/series
> @@ -0,0 +1,4 @@
> +# generated by git-ptx-patches
> +#tag:base --start-number 1
> +0001-do-not-use-git-information-for-version-generation.patch
> +# c3a57143ea9764ab95b84a7fb79896f4  - git-ptx-patches magic
> diff --git a/rules/libcamera.in b/rules/libcamera.in
> new file mode 100644
> index 000000000..0a103fc51
> --- /dev/null
> +++ b/rules/libcamera.in
> @@ -0,0 +1,90 @@
> +## SECTION=multimedia_libs
> +
> +config LIBCAMERA
> +	bool
> +	prompt "libcamera"
> +	select HOST_MESON
> +	select HOST_SYSTEM_PYTHON3
> +	select HOST_SYSTEM_PYTHON3_JINJA2
> +	select HOST_SYSTEM_PYTHON3_PYYAML
> +	select HOST_SYSTEM_PYTHON3_PLY
> +	select GNUTLS
> +	select UDEV_LIBUDEV
> +	select LIBYAML
> +	select LIBUNWIND			if LIBCAMERA_BACKTRACE
> +	select GSTREAMER1			if LIBCAMERA_GSTREAMER
> +	select GST_PLUGINS_BASE1		if LIBCAMERA_GSTREAMER
> +	select LIBEVENT				if LIBCAMERA_CAM
> +	select QT5				if LIBCAMERA_QCAM
> +	select QT5_MODULE_QTBASE		if LIBCAMERA_QCAM
> +	select QT5_MODULE_QTBASE_GUI		if LIBCAMERA_QCAM
> +	select QT5_MODULE_QTBASE_WIDGETS	if LIBCAMERA_QCAM
> +	help
> +	  A complex camera support library for Linux, Android, and ChromeOS.
> +
> +if LIBCAMERA
> +
> +config LIBCAMERA_GSTREAMER
> +	bool
> +	prompt "install GStreamer plugin"
> +
> +config LIBCAMERA_CAM
> +	bool
> +	prompt "install cam test application"
> +
> +config LIBCAMERA_QCAM
> +	bool
> +	prompt "install qcam test application"
> +
> +config LIBCAMERA_BACKTRACE
> +	bool
> +	prompt "enable tracing support"
> +
> +endif
> +
> +menu "IPAs"
> +
> +config LIBCAMERA_IPA_IPU3
> +	bool
> +	prompt "ipu3"
> +
> +config LIBCAMERA_IPA_RASPBERRYPI
> +	bool
> +	prompt "raspberrypi"
> +
> +config LIBCAMERA_IPA_RKISP1
> +	bool
> +	prompt "rkisp1"
> +
> +config LIBCAMERA_IPA_VIMC
> +	bool
> +	prompt "vimc"
> +endmenu
> +
> +menu "Pipelines"

So, I missed this in the first version: Why would someone enable (for
example) the ipu3 pipeline but not the ipu3 IPA? In other words, wouldn't
it be easier to have one "Hardware" option each and enable both IPA and
pipeline (or whichever is available)?

Michael

> +
> +config LIBCAMERA_PIPELINE_IPU3
> +	bool
> +	prompt "ipu3"
> +
> +config LIBCAMERA_PIPELINE_RASPBERRYPI
> +	bool
> +	prompt "raspberrypi"
> +
> +config LIBCAMERA_PIPELINE_RKISP1
> +	bool
> +	prompt "rkisp1"
> +
> +config LIBCAMERA_PIPELINE_SIMPLE
> +	bool
> +	prompt "simple"
> +
> +config LIBCAMERA_PIPELINE_UVCVIDEO
> +	bool
> +	prompt "uvcvideo"
> +
> +config LIBCAMERA_PIPELINE_VIMC
> +	bool
> +	prompt "vimc"
> +
> +endmenu
> diff --git a/rules/libcamera.make b/rules/libcamera.make
> new file mode 100644
> index 000000000..78a5e94de
> --- /dev/null
> +++ b/rules/libcamera.make
> @@ -0,0 +1,133 @@
> +# -*-makefile-*-
> +#
> +# Copyright (C) 2022 by Matthias Fend <matthias.fend@emfend.at>
> +#
> +# For further information about the PTXdist project and license conditions
> +# see the README file.
> +#
> +
> +#
> +# We provide this package
> +#
> +PACKAGES-$(PTXCONF_LIBCAMERA) += libcamera
> +
> +#
> +# Paths and names
> +#
> +LIBCAMERA_VERSION	:= 2022-08-30-g68683d3811a8
> +LIBCAMERA_MD5		:= 2f5a985257a0797e0bd0b4182ef9bc9c
> +LIBCAMERA		:= libcamera-$(LIBCAMERA_VERSION)
> +LIBCAMERA_SUFFIX	:= tar.gz
> +LIBCAMERA_URL		:= https://git.libcamera.org/libcamera/libcamera.git;tag=$(LIBCAMERA_VERSION)
> +LIBCAMERA_SOURCE	:= $(SRCDIR)/$(LIBCAMERA).$(LIBCAMERA_SUFFIX)
> +LIBCAMERA_DIR		:= $(BUILDDIR)/$(LIBCAMERA)
> +LIBCAMERA_LICENSE	:= Apache-2.0 AND \
> +			   BSD-2-Clause AND BSD-3-Clause AND \
> +			   CC0-1.0 AND CC-BY-SA-4.0 AND \
> +			   GPL-2.0-or-later AND GPL-2.0 WITH Linux-syscall-note AND \
> +			   (GPL-2.0+ WITH Linux-syscall-note OR MIT) AND LGPL-2.1-or-later
> +LIBCAMERA_LICENSE_FILES	:= file://LICENSES/Apache-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \
> +			   file://LICENSES/BSD-2-Clause.txt;md5=63d6ee386b8aaba70b1bf15a79ca50f2 \
> +			   file://LICENSES/BSD-3-Clause.txt;md5=954f4d71a37096249f837652a7f586c0 \
> +			   file://LICENSES/CC0-1.0.txt;md5=6fd064768b8d61c31ddd0540570fbd33 \
> +			   file://LICENSES/CC-BY-SA-4.0.txt;md5=598a2bb2d212cf9bc240fb554efcb169 \
> +			   file://LICENSES/GPL-2.0-or-later.txt;md5=fed54355545ffd980b814dab4a3b312c \
> +			   file://LICENSES/GPL-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
> +			   file://LICENSES/Linux-syscall-note.txt;md5=370f20aa0795bf47c9a50d8cee5a7cfb \
> +			   file://LICENSES/GPL-2.0+.txt;md5=fed54355545ffd980b814dab4a3b312c \
> +			   file://LICENSES/MIT.txt;md5=38aa75cf4c4c87f018227d5ec9638d75 \
> +			   file://LICENSES/LGPL-2.1-or-later.txt;md5=2a4f4fd2128ea2f65047ee63fbca9f68
> +
> +# ----------------------------------------------------------------------------
> +# Prepare
> +# ----------------------------------------------------------------------------
> +
> +LIBCAMERA_IPAS-y					:=
> +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_IPU3)		+= ipu3
> +LIBCAMERA_IPASC-$(PTXCONF_LIBCAMERA_IPA_RASPBERRYPI)	+= raspberrypi
> +LIBCAMERA_IPASM-$(PTXCONF_LIBCAMERA_IPA_RASPBERRYPI)	+= rpi
> +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_RKISP1)		+= rkisp1
> +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_VIMC)		+= vimc
> +
> +LIBCAMERA_IPASC-y	+= $(LIBCAMERA_IPAS-y)
> +LIBCAMERA_IPASM-y	+= $(LIBCAMERA_IPAS-y)
> +
> +LIBCAMERA_PIPELINES-y						:=
> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_IPU3)		+= ipu3
> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI)	+= raspberrypi
> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_RKISP1)	+= rkisp1
> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_SIMPLE)	+= simple
> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO)	+= uvcvideo
> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_VIMC)		+= vimc
> +
> +LIBCAMERA_CONF_TOOL	:= meson
> +LIBCAMERA_CONF_OPT	:= \
> +	$(CROSS_MESON_USR) \
> +	-Dandroid=disabled \
> +	-Dcam=$(call ptx/endis,PTXCONF_LIBCAMERA_CAM)d \
> +	-Ddocumentation=disabled \
> +	-Dgstreamer=$(call ptx/endis,PTXCONF_LIBCAMERA_GSTREAMER)d \
> +	-Dipas=$(subst $(ptx/def/space),$(ptx/def/comma),$(strip $(LIBCAMERA_IPASC-y))) \
> +	-Dlc-compliance=disabled \
> +	-Dpipelines=$(subst $(ptx/def/space),$(ptx/def/comma),$(strip $(LIBCAMERA_PIPELINES-y))) \
> +	-Dqcam=$(call ptx/endis,PTXCONF_LIBCAMERA_QCAM)d \
> +	-Dtest=false \
> +	-Dtracing=$(call ptx/endis,PTXCONF_LIBCAMERA_TRACING)d \
> +	-Dv4l2=false \
> +	-Dpycamera=disabled
> +
> +# ----------------------------------------------------------------------------
> +# Target-Install
> +# ----------------------------------------------------------------------------
> +
> +define install_ipa
> +	@$(call install_copy, libcamera, 0, 0, 0755, -, \
> +		/usr/libexec/libcamera/$(strip $(1))_ipa_proxy)
> +	@$(call install_alternative_tree, libcamera, 0, 0, \
> +		/usr/share/libcamera/ipa/$(strip $(1)))
> +endef
> +
> +define install_ipa_module
> +	# The IPA modules must not be stripped, otherwise the associated
> +	# signatures will no longer be valid.
> +	@$(call install_copy, libcamera, 0, 0, 0644, -, \
> +		/usr/lib/libcamera/ipa_$(strip $(1)).so, n)
> +	@$(call install_copy, libcamera, 0, 0, 0644, -, \
> +		/usr/lib/libcamera/ipa_$(strip $(1)).so.sign)
> +endef
> +
> +$(STATEDIR)/libcamera.targetinstall:
> +	@$(call targetinfo)
> +
> +	@$(call install_init, libcamera)
> +	@$(call install_fixup, libcamera, PRIORITY, optional)
> +	@$(call install_fixup, libcamera, SECTION, base)
> +	@$(call install_fixup, libcamera, AUTHOR, "Matthias Fend <matthias.fend@emfend.at>")
> +	@$(call install_fixup, libcamera, DESCRIPTION, missing)
> +
> +	@$(call install_lib, libcamera, 0, 0, 0644, libcamera)
> +	@$(call install_lib, libcamera, 0, 0, 0644, libcamera-base)
> +
> +	@$(foreach ipa,$(LIBCAMERA_IPASC-y), \
> +		$(call install_ipa, $(ipa))$(ptx/nl))
> +
> +	@$(foreach ipa_module,$(LIBCAMERA_IPASM-y), \
> +		$(call install_ipa_module, $(ipa_module))$(ptx/nl))
> +
> +ifdef PTXCONF_LIBCAMERA_GSTREAMER
> +	@$(call install_lib, libcamera, 0, 0, 0644, gstreamer-1.0/libgstlibcamera)
> +endif
> +
> +ifdef PTXCONF_LIBCAMERA_CAM
> +	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/bin/cam)
> +endif
> +
> +ifdef PTXCONF_LIBCAMERA_QCAM
> +	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/bin/qcam)
> +endif
> +
> +	@$(call install_finish, libcamera)
> +
> +	@$(call touch)
> +
> +# vim: syntax=make
> -- 
> 2.25.1
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



  parent reply	other threads:[~2022-09-13 15:24 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-11 10:41 [ptxdist] [PATCH v2 0/1] " Matthias Fend
2022-09-11 10:41 ` [ptxdist] [PATCH v2 1/1] " Matthias Fend
2022-09-13 13:53   ` Marco Felsch
2022-09-13 15:31     ` Michael Olbrich
2022-09-14  8:03       ` Marco Felsch
2022-09-14  6:04     ` Matthias Fend
2022-09-14  7:50       ` Marco Felsch
2022-09-14 13:06         ` Michael Olbrich
2022-09-13 15:24   ` Michael Olbrich [this message]
2022-09-14  5:54     ` Matthias Fend
2022-09-14 12:59       ` Michael Olbrich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220913152409.GA28082@pengutronix.de \
    --to=m.olbrich@pengutronix.de \
    --cc=matthias.fend@emfend.at \
    --cc=ptxdist@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox