From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6460145511220379648 X-Received: by 10.28.87.7 with SMTP id l7mr458032wmb.30.1504169591942; Thu, 31 Aug 2017 01:53:11 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 10.28.11.212 with SMTP id 203ls1241621wml.14.gmail; Thu, 31 Aug 2017 01:53:11 -0700 (PDT) X-Google-Smtp-Source: ADKCNb7BQcNd/tcryA6f/WlVH0qnBmMi0s6ozCBNJcgoDKgG8wOQW+FwzIbKAA1U78t6OS5iZomJ X-Received: by 10.28.225.86 with SMTP id y83mr394680wmg.28.1504169591573; Thu, 31 Aug 2017 01:53:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504169591; cv=none; d=google.com; s=arc-20160816; b=osADwnyOLnBpl5QaeF/cadUNAPiGGOzS36O5yHtXRs84aPZQs3QsBhOebkXykJVmMv fxXAIDeZgUQBD1t0SvXYDXyPsb0Tb7zji8Rchh1731BbD5CKzz5CLelqXQ9wjRV+ayl5 noD4Xl/arW1D5yFw2f1qfIvumraJU5A42KyaS0nTFfC1KbeUIUM5H1Kv7QnJw5tJySO4 gLY8R29eMfSpz5Z6duHkaom3S6B7GyQmQJRlsXGiCIoDIue+FuhO2priovOm9raOzTaM vvsnotzQl+F6zWgGE5icUE3wVRNgmG7NuoCuq/+ZabBBzJqM4pi1v/zd8NK78YnZ/aNs O2qA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject :arc-authentication-results; bh=lQC0VqwNef0xGZqQd0/1dz86KPOvAj3y+/lcghEcByM=; b=WCyCtOoAcnE8fBGwRiU706iXn/jUtsMDJbxNbNPnA1IosHr5jIOeKSu2q0irocX5N9 p9gN01vWpDVrkzFxoN1T4RrS7oHaLqj3lXwcaVCxR8kH2MHh8Xq/CJ6HOeFxEF+lFPqh zvf0QswegZIBU3gI7k22ZvurzdsWnirUVdSXMW1dlboXCd+1dyzZA6OCla9TM/Z2IzCn NvAqgdKMoKilQYJMFhDxvG47+fgcmQEKLCQigOEQyRk61F2NP3QClT23apAhc1sDKX1b PxN2LzV1lODuXzVh2fHOYBvRVGLGNlfsMA/LP56LWysd838Tga+g9KCXY6R318LpRwRR ncSQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 192.35.17.28 is neither permitted nor denied by best guess record for domain of claudius.heine.ext@siemens.com) smtp.mailfrom=claudius.heine.ext@siemens.com Return-Path: Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id 74si226224wmf.8.2017.08.31.01.53.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 31 Aug 2017 01:53:11 -0700 (PDT) Received-SPF: neutral (google.com: 192.35.17.28 is neither permitted nor denied by best guess record for domain of claudius.heine.ext@siemens.com) client-ip=192.35.17.28; Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 192.35.17.28 is neither permitted nor denied by best guess record for domain of claudius.heine.ext@siemens.com) smtp.mailfrom=claudius.heine.ext@siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id v7V8rAsK002267 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 31 Aug 2017 10:53:10 +0200 Received: from [139.25.68.223] (linux-ses-ext02.ppmd.siemens.net [139.25.68.223]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id v7V8rASY018135; Thu, 31 Aug 2017 10:53:10 +0200 Subject: Re: [PATCH 5/6] meta/dpkg: add dpkg-custom class From: Claudius Heine To: "[ext] Henning Schild" , isar-users@googlegroups.com Cc: Alexander Smirnov , Christian Storm , Claudius Heine References: <356cb2c3f7dfead49d75580fdff10dfa8c41232e.1504119538.git.henning.schild@siemens.com> <75fe7dd9-7cf0-9f10-7060-64b69fa38194@siemens.com> Message-ID: Date: Thu, 31 Aug 2017 10:53:10 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <75fe7dd9-7cf0-9f10-7060-64b69fa38194@siemens.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-TUID: ZHCf2kKlC+uE Hi agani, was a bit to fast sending the mail before, On 08/31/2017 10:38 AM, [ext] Claudius Heine wrote: > Hi > > On 08/30/2017 09:03 PM, [ext] 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. >> >> Signed-off-by: Henning Schild >> --- >> meta/classes/dpkg-custom.bbclass | 57 >> ++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 57 insertions(+) >> create mode 100644 meta/classes/dpkg-custom.bbclass > > Also not a big fan of this name. 'custom' is a bit too unspecific for > what it does. I get that your idea that those packages are *custom* > made, but at the same time, so are all the packages that are directly > created within isar. > > I liked the old 'dpkg-bin' name more, but maybe even this is a bit to > unspecific. How about 'dpkg-plain'? That describes better that those > packages are very simple, created impromptu without much to it, IMO. > > Cheers, > Claudius > >> >> 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() { OE has a slightly different naming scheme for these tasks. They would call them 'do_package_deb_prepare' or similar [1]. Might cause confusion if we have different naming schemes between those two projects. >> + cat<<-__EOF__ > ${D}/DEBIAN/control >> + Package: ${PN} >> + Architecture: `dpkg --print-architecture` Are you sure that this works when cross building? Wouldn't dpkg print the architecture of the host system instead of the target system? I think this kind of information has to come from the machine variables. Cheers, Claudius >> + 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 >> > [1] http://git.openembedded.org/openembedded-core/tree/meta/classes/package_deb.bbclass#n43 -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-54 Fax: (+49)-8142-66989-80 Email: ch@denx.de