From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Sat, 17 Sep 2022 20:35:03 +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 1oZced-007xSA-Kn for lore@lore.pengutronix.de; Sat, 17 Sep 2022 20:35:03 +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 1oZceb-0003l2-W1; Sat, 17 Sep 2022 20:35:01 +0200 Received: from lx20.hoststar.hosting ([168.119.41.54]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oZcdb-0003ae-4t for ptxdist@pengutronix.de; Sat, 17 Sep 2022 20:34:00 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=emfend.at; s=mail; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=47WFbiVWgom/IuJq7MQ5xxGBpV50zOt0nrB2v/nivlE=; b=O9G4ihseZyUhB0e9a0/ee/e5L8 X+kg8x0aGIkAkzyodYb/aqPWIaFlVoUb2Ii6/rlxpDnSF5teEcqQJ3/pAQGljK7TiGy+dDZq5dJA6 rQBa7wHHGLogpULqGzlT2E3V7iK7sd2G0Zoc9dXDa1f6SKmYAobGs6gNo7aIIdRcw68g=; Received: from 194-208-208-245.tele.net ([194.208.208.245]:60542 helo=localhost.localdomain) by lx20.hoststar.hosting with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93) (envelope-from ) id 1oZcdZ-007mjl-4e for ptxdist@pengutronix.de; Sat, 17 Sep 2022 20:33:58 +0200 From: Matthias Fend To: ptxdist@pengutronix.de Date: Sat, 17 Sep 2022 20:33:50 +0200 Message-Id: <20220917183350.1838893-2-matthias.fend@emfend.at> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220917183350.1838893-1-matthias.fend@emfend.at> References: <20220917183350.1838893-1-matthias.fend@emfend.at> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.ext.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-4.0 required=4.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Subject: [ptxdist] [PATCH v4 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 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 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 ++++ .../libcamera-2022-08-30-g68683d3811a8/series | 4 + rules/libcamera.in | 129 ++++++++++++++++ rules/libcamera.make | 143 ++++++++++++++++++ 4 files changed, 305 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 +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-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..1f2d70aad --- /dev/null +++ b/rules/libcamera.in @@ -0,0 +1,129 @@ +## SECTION=multimedia_libs + +menuconfig LIBCAMERA + bool + select HOST_MESON + select HOST_SYSTEM_PYTHON3 + select HOST_SYSTEM_PYTHON3_JINJA2 + select HOST_SYSTEM_PYTHON3_PYYAML + select HOST_SYSTEM_PYTHON3_PLY + select HOST_OPENSSL + select GNUTLS if LIBCAMERA_IPA_MODULE_SIGN_GNUTLS + select OPENSSL if LIBCAMERA_IPA_MODULE_SIGN_OPENSSL + 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 LIBDRM if LIBCAMERA_CAM_KMS_SINK + 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 + prompt "libcamera " + 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" + +if LIBCAMERA_CAM + +config LIBCAMERA_CAM_KMS_SINK + bool + prompt "Enable KMS sink" +endif + +config LIBCAMERA_QCAM + bool + prompt "Install qcam test application" + +config LIBCAMERA_BACKTRACE + bool + prompt "Add support for backtraces" + +menu "Platforms" + +config LIBCAMERA_PIPELINE_IPU3 + bool + prompt "ipu3 pipeline" + +config LIBCAMERA_IPA_IPU3 + bool + default y + prompt "ipu3 IPA" + depends on LIBCAMERA_PIPELINE_IPU3 + +config LIBCAMERA_PIPELINE_RASPBERRYPI + bool + prompt "raspberrypi pipeline" + +config LIBCAMERA_IPA_RASPBERRYPI + bool + default y + prompt "raspberrypi IPA" + depends on LIBCAMERA_PIPELINE_RASPBERRYPI + +config LIBCAMERA_PIPELINE_RKISP1 + bool + prompt "rkisp1 pipeline" + +config LIBCAMERA_IPA_RKISP1 + bool + default y + prompt "rkisp1 IPA" + depends on LIBCAMERA_PIPELINE_RKISP1 + +config LIBCAMERA_PIPELINE_SIMPLE + bool + prompt "simple pipeline" + +config LIBCAMERA_PIPELINE_UVCVIDEO + bool + prompt "uvcvideo pipeline" + +config LIBCAMERA_PIPELINE_VIMC + bool + prompt "vimc pipeline" + +config LIBCAMERA_IPA_VIMC + bool + default y + prompt "vimc IPA" + depends on LIBCAMERA_PIPELINE_VIMC + +endmenu + +config LIBCAMERA_IPA_MODULE_SIGN + bool + default y + prompt "Enable IPA module signing" + help + Without IPA module signing, all IPA modules will be isolated in a + separate process. This adds an unnecessary extra overhead at runtime. + +if LIBCAMERA_IPA_MODULE_SIGN + +choice + prompt "Crypt provider" + default LIBCAMERA_IPA_MODULE_SIGN_GNUTLS + +config LIBCAMERA_IPA_MODULE_SIGN_GNUTLS + bool "gnutls" + +config LIBCAMERA_IPA_MODULE_SIGN_OPENSSL + bool "openssl (libcrypto)" + +endchoice + +endif + +endif diff --git a/rules/libcamera.make b/rules/libcamera.make new file mode 100644 index 000000000..a6560fb48 --- /dev/null +++ b/rules/libcamera.make @@ -0,0 +1,143 @@ +# -*-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 := 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-or-later 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=disabled \ + -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_signed + # 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 + +define install_ipa_module + @$(call install_copy, libcamera, 0, 0, 0644, -, \ + /usr/lib/libcamera/ipa_$(strip $(1)).so) +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) + + @$(foreach ipa,$(LIBCAMERA_IPASC-y), \ + $(call install_ipa, $(ipa))$(ptx/nl)) + +ifdef PTXCONF_LIBCAMERA_IPA_MODULE_SIGN + @$(foreach ipa_module,$(LIBCAMERA_IPASM-y), \ + $(call install_ipa_module_signed, $(ipa_module))$(ptx/nl)) +else + @$(foreach ipa_module,$(LIBCAMERA_IPASM-y), \ + $(call install_ipa_module, $(ipa_module))$(ptx/nl)) +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