From: Matthias Fend <matthias.fend@emfend.at>
To: ptxdist@pengutronix.de
Cc: Michael Olbrich <m.olbrich@pengutronix.de>
Subject: Re: [ptxdist] [PATCH v2 1/1] libcamera: new package
Date: Wed, 14 Sep 2022 07:54:43 +0200 [thread overview]
Message-ID: <fda8f9e7-847c-64b5-7695-c92df5528905@emfend.at> (raw)
In-Reply-To: <20220913152409.GA28082@pengutronix.de>
Hi Michael,
Am 13.09.2022 um 17:24 schrieb Michael Olbrich:
> On Sun, Sep 11, 2022 at 12:41:05PM +0200, Matthias Fend wrote:
>> libcamera is an open source camera stack and framework for Linux, Android,
>> and ChromeOS.
>>
>> Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
>> ---
>> ...t-information-for-version-generation.patch | 29 ++++
>> .../libcamera-2022-08-30-g68683d3811a8/series | 4 +
>> rules/libcamera.in | 90 ++++++++++++
>> rules/libcamera.make | 133 ++++++++++++++++++
>> 4 files changed, 256 insertions(+)
>> create mode 100644 patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
>> create mode 100644 patches/libcamera-2022-08-30-g68683d3811a8/series
>> create mode 100644 rules/libcamera.in
>> create mode 100644 rules/libcamera.make
>>
>> diff --git a/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch b/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
>> new file mode 100644
>> index 000000000..3e5c5ce68
>> --- /dev/null
>> +++ b/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
>> @@ -0,0 +1,29 @@
>> +From: Matthias Fend <matthias.fend@emfend.at>
>> +Date: Wed, 31 Aug 2022 16:54:20 +0200
>> +Subject: [PATCH] do not use git information for version generation
>> +
>> +Since libcamera is checked out without a git repo, git version reports the
>> +version of the BSP. Since this is obviously wrong, just use the project
>> +version.
>> +
>> +Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
>> +---
>> + meson.build | 5 ++---
>> + 1 file changed, 2 insertions(+), 3 deletions(-)
>> +
>> +diff --git a/meson.build b/meson.build
>> +index 72919102ad55..e333df59388d 100644
>> +--- a/meson.build
>> ++++ b/meson.build
>> +@@ -20,9 +20,8 @@ libcamera_git_version = run_command('utils/gen-version.sh',
>> + meson.project_build_root(),
>> + meson.project_source_root(),
>> + check: false).stdout().strip()
>> +-if libcamera_git_version == ''
>> +- libcamera_git_version = meson.project_version()
>> +-endif
>> ++
>> ++libcamera_git_version = meson.project_version()
>> +
>> + libcamera_version = libcamera_git_version.split('+')[0]
>> +
>> diff --git a/patches/libcamera-2022-08-30-g68683d3811a8/series b/patches/libcamera-2022-08-30-g68683d3811a8/series
>> new file mode 100644
>> index 000000000..6ca42eafc
>> --- /dev/null
>> +++ b/patches/libcamera-2022-08-30-g68683d3811a8/series
>> @@ -0,0 +1,4 @@
>> +# generated by git-ptx-patches
>> +#tag:base --start-number 1
>> +0001-do-not-use-git-information-for-version-generation.patch
>> +# c3a57143ea9764ab95b84a7fb79896f4 - git-ptx-patches magic
>> diff --git a/rules/libcamera.in b/rules/libcamera.in
>> new file mode 100644
>> index 000000000..0a103fc51
>> --- /dev/null
>> +++ b/rules/libcamera.in
>> @@ -0,0 +1,90 @@
>> +## SECTION=multimedia_libs
>> +
>> +config LIBCAMERA
>> + bool
>> + prompt "libcamera"
>> + select HOST_MESON
>> + select HOST_SYSTEM_PYTHON3
>> + select HOST_SYSTEM_PYTHON3_JINJA2
>> + select HOST_SYSTEM_PYTHON3_PYYAML
>> + select HOST_SYSTEM_PYTHON3_PLY
>> + select GNUTLS
>> + select UDEV_LIBUDEV
>> + select LIBYAML
>> + select LIBUNWIND if LIBCAMERA_BACKTRACE
>> + select GSTREAMER1 if LIBCAMERA_GSTREAMER
>> + select GST_PLUGINS_BASE1 if LIBCAMERA_GSTREAMER
>> + select LIBEVENT if LIBCAMERA_CAM
>> + select QT5 if LIBCAMERA_QCAM
>> + select QT5_MODULE_QTBASE if LIBCAMERA_QCAM
>> + select QT5_MODULE_QTBASE_GUI if LIBCAMERA_QCAM
>> + select QT5_MODULE_QTBASE_WIDGETS if LIBCAMERA_QCAM
>> + help
>> + A complex camera support library for Linux, Android, and ChromeOS.
>> +
>> +if LIBCAMERA
>> +
>> +config LIBCAMERA_GSTREAMER
>> + bool
>> + prompt "install GStreamer plugin"
>> +
>> +config LIBCAMERA_CAM
>> + bool
>> + prompt "install cam test application"
>> +
>> +config LIBCAMERA_QCAM
>> + bool
>> + prompt "install qcam test application"
>> +
>> +config LIBCAMERA_BACKTRACE
>> + bool
>> + prompt "enable tracing support"
>> +
>> +endif
>> +
>> +menu "IPAs"
>> +
>> +config LIBCAMERA_IPA_IPU3
>> + bool
>> + prompt "ipu3"
>> +
>> +config LIBCAMERA_IPA_RASPBERRYPI
>> + bool
>> + prompt "raspberrypi"
>> +
>> +config LIBCAMERA_IPA_RKISP1
>> + bool
>> + prompt "rkisp1"
>> +
>> +config LIBCAMERA_IPA_VIMC
>> + bool
>> + prompt "vimc"
>> +endmenu
>> +
>> +menu "Pipelines"
>
> So, I missed this in the first version: Why would someone enable (for
> example) the ipu3 pipeline but not the ipu3 IPA? In other words, wouldn't
> it be easier to have one "Hardware" option each and enable both IPA and
> pipeline (or whichever is available)?
- There are some pipelines (simple, uvc) that are not directly mapped to
an IPA.
- It is possible, and I think a likely use case, that for example the
IPU3 pipeline is selected, but a custom (then from another package) IPA
is used.
- libcamera provides extra separate options for pipelines and IPAs and I
assume someone has thought about that. Perhaps there will be more
possible pipeline and IPA combinations in the future.
For these reasons, I have decided to map these options completely and
not to include any further implications and relationships in the rule file.
Does that sound reasonable to you, or should I still change it as suggested?
Thanks,
~Matthias
>
> Michael
>
>> +
>> +config LIBCAMERA_PIPELINE_IPU3
>> + bool
>> + prompt "ipu3"
>> +
>> +config LIBCAMERA_PIPELINE_RASPBERRYPI
>> + bool
>> + prompt "raspberrypi"
>> +
>> +config LIBCAMERA_PIPELINE_RKISP1
>> + bool
>> + prompt "rkisp1"
>> +
>> +config LIBCAMERA_PIPELINE_SIMPLE
>> + bool
>> + prompt "simple"
>> +
>> +config LIBCAMERA_PIPELINE_UVCVIDEO
>> + bool
>> + prompt "uvcvideo"
>> +
>> +config LIBCAMERA_PIPELINE_VIMC
>> + bool
>> + prompt "vimc"
>> +
>> +endmenu
>> diff --git a/rules/libcamera.make b/rules/libcamera.make
>> new file mode 100644
>> index 000000000..78a5e94de
>> --- /dev/null
>> +++ b/rules/libcamera.make
>> @@ -0,0 +1,133 @@
>> +# -*-makefile-*-
>> +#
>> +# Copyright (C) 2022 by Matthias Fend <matthias.fend@emfend.at>
>> +#
>> +# For further information about the PTXdist project and license conditions
>> +# see the README file.
>> +#
>> +
>> +#
>> +# We provide this package
>> +#
>> +PACKAGES-$(PTXCONF_LIBCAMERA) += libcamera
>> +
>> +#
>> +# Paths and names
>> +#
>> +LIBCAMERA_VERSION := 2022-08-30-g68683d3811a8
>> +LIBCAMERA_MD5 := 2f5a985257a0797e0bd0b4182ef9bc9c
>> +LIBCAMERA := libcamera-$(LIBCAMERA_VERSION)
>> +LIBCAMERA_SUFFIX := tar.gz
>> +LIBCAMERA_URL := https://git.libcamera.org/libcamera/libcamera.git;tag=$(LIBCAMERA_VERSION)
>> +LIBCAMERA_SOURCE := $(SRCDIR)/$(LIBCAMERA).$(LIBCAMERA_SUFFIX)
>> +LIBCAMERA_DIR := $(BUILDDIR)/$(LIBCAMERA)
>> +LIBCAMERA_LICENSE := Apache-2.0 AND \
>> + BSD-2-Clause AND BSD-3-Clause AND \
>> + CC0-1.0 AND CC-BY-SA-4.0 AND \
>> + GPL-2.0-or-later AND GPL-2.0 WITH Linux-syscall-note AND \
>> + (GPL-2.0+ WITH Linux-syscall-note OR MIT) AND LGPL-2.1-or-later
>> +LIBCAMERA_LICENSE_FILES := file://LICENSES/Apache-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \
>> + file://LICENSES/BSD-2-Clause.txt;md5=63d6ee386b8aaba70b1bf15a79ca50f2 \
>> + file://LICENSES/BSD-3-Clause.txt;md5=954f4d71a37096249f837652a7f586c0 \
>> + file://LICENSES/CC0-1.0.txt;md5=6fd064768b8d61c31ddd0540570fbd33 \
>> + file://LICENSES/CC-BY-SA-4.0.txt;md5=598a2bb2d212cf9bc240fb554efcb169 \
>> + file://LICENSES/GPL-2.0-or-later.txt;md5=fed54355545ffd980b814dab4a3b312c \
>> + file://LICENSES/GPL-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
>> + file://LICENSES/Linux-syscall-note.txt;md5=370f20aa0795bf47c9a50d8cee5a7cfb \
>> + file://LICENSES/GPL-2.0+.txt;md5=fed54355545ffd980b814dab4a3b312c \
>> + file://LICENSES/MIT.txt;md5=38aa75cf4c4c87f018227d5ec9638d75 \
>> + file://LICENSES/LGPL-2.1-or-later.txt;md5=2a4f4fd2128ea2f65047ee63fbca9f68
>> +
>> +# ----------------------------------------------------------------------------
>> +# Prepare
>> +# ----------------------------------------------------------------------------
>> +
>> +LIBCAMERA_IPAS-y :=
>> +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_IPU3) += ipu3
>> +LIBCAMERA_IPASC-$(PTXCONF_LIBCAMERA_IPA_RASPBERRYPI) += raspberrypi
>> +LIBCAMERA_IPASM-$(PTXCONF_LIBCAMERA_IPA_RASPBERRYPI) += rpi
>> +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_RKISP1) += rkisp1
>> +LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_VIMC) += vimc
>> +
>> +LIBCAMERA_IPASC-y += $(LIBCAMERA_IPAS-y)
>> +LIBCAMERA_IPASM-y += $(LIBCAMERA_IPAS-y)
>> +
>> +LIBCAMERA_PIPELINES-y :=
>> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_IPU3) += ipu3
>> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI) += raspberrypi
>> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_RKISP1) += rkisp1
>> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_SIMPLE) += simple
>> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO) += uvcvideo
>> +LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_VIMC) += vimc
>> +
>> +LIBCAMERA_CONF_TOOL := meson
>> +LIBCAMERA_CONF_OPT := \
>> + $(CROSS_MESON_USR) \
>> + -Dandroid=disabled \
>> + -Dcam=$(call ptx/endis,PTXCONF_LIBCAMERA_CAM)d \
>> + -Ddocumentation=disabled \
>> + -Dgstreamer=$(call ptx/endis,PTXCONF_LIBCAMERA_GSTREAMER)d \
>> + -Dipas=$(subst $(ptx/def/space),$(ptx/def/comma),$(strip $(LIBCAMERA_IPASC-y))) \
>> + -Dlc-compliance=disabled \
>> + -Dpipelines=$(subst $(ptx/def/space),$(ptx/def/comma),$(strip $(LIBCAMERA_PIPELINES-y))) \
>> + -Dqcam=$(call ptx/endis,PTXCONF_LIBCAMERA_QCAM)d \
>> + -Dtest=false \
>> + -Dtracing=$(call ptx/endis,PTXCONF_LIBCAMERA_TRACING)d \
>> + -Dv4l2=false \
>> + -Dpycamera=disabled
>> +
>> +# ----------------------------------------------------------------------------
>> +# Target-Install
>> +# ----------------------------------------------------------------------------
>> +
>> +define install_ipa
>> + @$(call install_copy, libcamera, 0, 0, 0755, -, \
>> + /usr/libexec/libcamera/$(strip $(1))_ipa_proxy)
>> + @$(call install_alternative_tree, libcamera, 0, 0, \
>> + /usr/share/libcamera/ipa/$(strip $(1)))
>> +endef
>> +
>> +define install_ipa_module
>> + # The IPA modules must not be stripped, otherwise the associated
>> + # signatures will no longer be valid.
>> + @$(call install_copy, libcamera, 0, 0, 0644, -, \
>> + /usr/lib/libcamera/ipa_$(strip $(1)).so, n)
>> + @$(call install_copy, libcamera, 0, 0, 0644, -, \
>> + /usr/lib/libcamera/ipa_$(strip $(1)).so.sign)
>> +endef
>> +
>> +$(STATEDIR)/libcamera.targetinstall:
>> + @$(call targetinfo)
>> +
>> + @$(call install_init, libcamera)
>> + @$(call install_fixup, libcamera, PRIORITY, optional)
>> + @$(call install_fixup, libcamera, SECTION, base)
>> + @$(call install_fixup, libcamera, AUTHOR, "Matthias Fend <matthias.fend@emfend.at>")
>> + @$(call install_fixup, libcamera, DESCRIPTION, missing)
>> +
>> + @$(call install_lib, libcamera, 0, 0, 0644, libcamera)
>> + @$(call install_lib, libcamera, 0, 0, 0644, libcamera-base)
>> +
>> + @$(foreach ipa,$(LIBCAMERA_IPASC-y), \
>> + $(call install_ipa, $(ipa))$(ptx/nl))
>> +
>> + @$(foreach ipa_module,$(LIBCAMERA_IPASM-y), \
>> + $(call install_ipa_module, $(ipa_module))$(ptx/nl))
>> +
>> +ifdef PTXCONF_LIBCAMERA_GSTREAMER
>> + @$(call install_lib, libcamera, 0, 0, 0644, gstreamer-1.0/libgstlibcamera)
>> +endif
>> +
>> +ifdef PTXCONF_LIBCAMERA_CAM
>> + @$(call install_copy, libcamera, 0, 0, 0755, -, /usr/bin/cam)
>> +endif
>> +
>> +ifdef PTXCONF_LIBCAMERA_QCAM
>> + @$(call install_copy, libcamera, 0, 0, 0755, -, /usr/bin/qcam)
>> +endif
>> +
>> + @$(call install_finish, libcamera)
>> +
>> + @$(call touch)
>> +
>> +# vim: syntax=make
>> --
>> 2.25.1
>>
>>
>>
>
next prev parent reply other threads:[~2022-09-14 5:55 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
2022-09-14 5:54 ` Matthias Fend [this message]
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=fda8f9e7-847c-64b5-7695-c92df5528905@emfend.at \
--to=matthias.fend@emfend.at \
--cc=m.olbrich@pengutronix.de \
--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