From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6460145511220379648 X-Received: by 10.46.7.26 with SMTP id 26mr145524ljh.5.1504860113055; Fri, 08 Sep 2017 01:41:53 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 10.28.150.151 with SMTP id y145ls232231wmd.4.gmail; Fri, 08 Sep 2017 01:41:52 -0700 (PDT) X-Google-Smtp-Source: ADKCNb4KHv+3scirLwIcd+3ef/THQe5D5d4nNwLuSIZkp6is3U8FhoVfK+/puxD7dDX5ErjmfxK5 X-Received: by 10.223.183.19 with SMTP id l19mr122622wre.6.1504860112679; Fri, 08 Sep 2017 01:41:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504860112; cv=none; d=google.com; s=arc-20160816; b=W5WEfpZcTlxklFwTO+2pbXw7sUSzjxH7F1J+2zVF8EZrEWg69WmpTDUabPeHblWj8g MyGhJ72Lyhk0I9tnvD4gQp0AHbBkiID2ZbQsj+UQvOGZpqYA8ft4u+ASjvm61SGToD38 KPHmQUHuIzx36ITF6+hPnnyb44BL2+E0o72lGW9Sp1mF1nGqSV/XZnlN3I/sA99wtLTs a1MJBogcl6rwpmqmNBUPpQIxfRSbIyh2tSnshQYq/fo//wIlujXYzvedaMFCwSYDT122 zcVFB8iVmOSjvEX94bvKhAl9+bmor6wlaA8TI7emj6WP0o7sykpNE5G7iOScAYNcVV81 kKDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:arc-authentication-results; bh=h0lYDkCo0wJvHzo4XDeAZv76cVxUTS9bu9dvKywCISM=; b=Ibomwj0UITeypz3jn+y644ZR2dqycdtcL2+uCsZQ6mbQQKyaWcC/99emKsLpqwc0fq 7pDs9YPsPATQVkEfkx8kbJvv/9GHB0//woQtcrF60nKPd4BIGFw4V4SrjV3SIi2SU7oe ZDWom4ZR9jF/ZChni0G3UsNCcvTNNGMtl3udNSJyyDFTZ/zT/FG6LaAmRryTpRMM0FHU lvg8bSc75+lfGXEzlI9vlJbTBPCVun6aAhdrv4YSHty+/LCvPm2gBPvBwFmZxKbNmQfH LU7XYlkZDYG8LpKrHw/QNdvvoCwe7U36MxYNuq49/nbCtmievlSnip6FRExYKlfAVq/c PzZQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 192.35.17.2 is neither permitted nor denied by best guess record for domain of henning.schild@siemens.com) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from thoth.sbs.de (thoth.sbs.de. [192.35.17.2]) by gmr-mx.google.com with ESMTPS id r8si148992wma.4.2017.09.08.01.41.52 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Sep 2017 01:41:52 -0700 (PDT) Received-SPF: neutral (google.com: 192.35.17.2 is neither permitted nor denied by best guess record for domain of henning.schild@siemens.com) client-ip=192.35.17.2; Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 192.35.17.2 is neither permitted nor denied by best guess record for domain of henning.schild@siemens.com) smtp.mailfrom=henning.schild@siemens.com Received: from mail3.siemens.de (mail3.siemens.de [139.25.208.14]) by thoth.sbs.de (8.15.2/8.15.2) with ESMTPS id v888fpTi003792 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 8 Sep 2017 10:41:51 +0200 Received: from md1em3qc ([139.25.68.40]) by mail3.siemens.de (8.15.2/8.15.2) with ESMTP id v888fppC024302; Fri, 8 Sep 2017 10:41:51 +0200 Date: Fri, 8 Sep 2017 10:42:01 +0200 From: Henning Schild To: Alexander Smirnov Cc: Subject: Re: [PATCH 5/6] meta/dpkg: add dpkg-custom class Message-ID: <20170908104201.4f5db805@md1em3qc> In-Reply-To: <5785905c-16fe-049f-9b15-b28a929363c6@ilbers.de> References: <356cb2c3f7dfead49d75580fdff10dfa8c41232e.1504119538.git.henning.schild@siemens.com> <20170908101549.25d4e3ff@md1em3qc> <5785905c-16fe-049f-9b15-b28a929363c6@ilbers.de> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TUID: ppt20IW+xAe9 Am Fri, 8 Sep 2017 11:31:23 +0300 schrieb Alexander Smirnov : > On 09/08/2017 11:15 AM, Henning Schild wrote: > > Am Mon, 4 Sep 2017 18:36:23 +0300 > > schrieb Alexander Smirnov : > > > >> On 08/30/2017 10:03 PM, Henning Schild wrote: > >>> Issues: > >>> 1. full customizations of the images is hard to impossible to > >>> realize in a layer without touching Isar > >>> 1.1. there is no easy way to just copy a file into the image > >>> 1.2. configuration (passwords, groups, cfg-files changes) can not > >>> be done in a layer, there is no way too hook into multistrap or > >>> the configure-script > >>> > >>> Change: > >>> Introduce a class that lets users create custom debian packages on > >>> the fly, without having to create a /debian directory and actually > >>> building. That allows you to pull in debian-dependencies, you > >>> could have a package that has no content and is just there to > >>> install what you need for a feature of your product. > >>> Using package hooks (preinst, postinst ..) you can configure > >>> pretty much all you want when installing the package. > >>> The package can contain actual payload as well, basically any > >>> files that come from "somewhere else". Say binary data like > >>> wallpapers, sound files or application binaries. > >>> > >>> Impact: > >>> This patch addresses the metioned issue in a way that uses debian > >>> mechanism. All the customizations will enjoy features like > >>> - collission protection (multiple packages providing the same > >>> file) > >>> - config file protection > >>> - versioning and the ability to deploy your changes in an > >>> updateable way > >>> > >>> This patch introduces a major new feature to Isar. > >>> > >>> This class introduces a new class for building debian packages on > >>> the fly. They can basically contain anything from random sources, > >>> where building happens outside of Isar. It also allows to create > >>> meta-packages that contain nothing but pull in dependencies, once > >>> all our packets come in via multistrap that will come in handy. > >>> For rootfs configuration you would use post- and pre- scripts just > >>> like regular debian packages do. > >>> > >> > >> Good idea. > >> > >>> Signed-off-by: Henning Schild > >>> --- > >>> meta/classes/dpkg-custom.bbclass | 57 > >>> ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 > >>> insertions(+) create mode 100644 meta/classes/dpkg-custom.bbclass > >>> > >>> diff --git a/meta/classes/dpkg-custom.bbclass > >>> b/meta/classes/dpkg-custom.bbclass new file mode 100644 > >>> index 0000000..e4e743f > >>> --- /dev/null > >>> +++ b/meta/classes/dpkg-custom.bbclass > >>> @@ -0,0 +1,57 @@ > >>> +# This software is a part of ISAR. > >>> +# Copyright (C) 2017 Siemens AG > >>> + > >>> +inherit dpkg > >>> + > >>> +DEBIAN_DEPENDS ?= "" > >>> +MAINTAINER ?= "FIXME Unknown maintainer" > >>> + > >>> +D = "${WORKDIR}/image/" > >>> + > >>> +# Populate folder that will be picked up as package > >>> +# TODO this should be called 'do_install' > >>> +do_populate_package() { > >>> + bbnote "Put your files for this package in ${D}" > >>> +} > >>> + > >>> +addtask populate_package after do_unpack before > >>> do_deb_package_prepare + > >>> +# so we can put hooks etc. in there already > >>> +do_populate_package[dirs] = "${D}/DEBIAN" > >>> + > >>> +do_deb_package_prepare() { > >>> + cat<<-__EOF__ > ${D}/DEBIAN/control > >>> + Package: ${PN} > >>> + Architecture: `dpkg --print-architecture` > >>> + Section: misc > >>> + Priority: optional > >>> + Maintainer: ${MAINTAINER} > >>> + Depends: `echo ${DEBIAN_DEPENDS} | tr '[:blank:]' > >>> ','` > >>> + Version: ${PV}+isar > >>> + Description: ${DESCRIPTION} > >>> + __EOF__ > >>> + for t in pre post > >>> + do > >>> + for a in inst rm > >>> + do > >>> + chmod -f +x ${D}/DEBIAN/${t}${a} || true > >>> + done > >>> + done > >>> +} > >>> + > >>> +addtask deb_package_prepare after do_populate_package before > >>> do_deb_package_conffiles + > >>> +do_deb_package_conffiles() { > >>> + CONFFILES=${D}/DEBIAN/conffiles > >>> + find ${D} -type f -path '*/etc/*' | sed -e 's|^${D}|/|' > >>> >> $CONFFILES > >>> + test -s $CONFFILES || rm $CONFFILES > >>> +} > >>> + > >>> +addtask deb_package_conffiles after do_deb_package_prepare before > >>> do_deb_package + > >>> +do_deb_package() { > >>> + sudo chown -R root:root ${D}/DEBIAN/ > >>> + sudo dpkg-deb --build ${D} ${WORKDIR} > >>> +} > >>> + > >>> +addtask deb_package after do_deb_package_conffiles before > >>> do_install > >> > >> If I got this correctly, the difference from dpkg-debian flow is > >> that you generate 'debian' folder on the fly. So: > > > > Well it is a capital "DEBIAN" folder that contains the package > > metadata and no build instructions like 'debian'. > > > >> 1. Why we need another do_deb_package, while do_build from dpkg > >> class does the same? > > > > do_build does not do the same. It eventually calls > > 'dpkg-buildpackage' which does "configure; make; make install; make > > deb" > > > > Using the same language this step is just "make deb" and it uses the > > debian tool 'dpkg-deb'. > > > > Custom steps for "configure; make;" could be added in the future. > > "make install" is do_populate_package. > > Ok, I see now. But why it's done by host dpkg-deb tool? This should > be done inside buildchroot to keep version compatibility. If you use > host stretch and build for wheezy, there will be big gap in versions. Thanks for pointing that out. That is a mistake just like the ARCH thing Claudius pointed out. I will look into that. I kindly ask you to review the patch again and provide such feedback inline. Henning > > > >> 2. Can we just add optional task to generic pipeline which > >> generates debian folder? Or make it as a part of do_build: if [ ! > >> -d ${D}/debian ]; then blablabla. > > > > That would be adding support for 'debian'-izing a source package. > > > > This patch is more about packaging binaries and creating > > meta-packages. > > Ok. >