From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6509751388101148672 X-Received: by 10.25.22.98 with SMTP id m95mr1035902lfi.14.1516906361097; Thu, 25 Jan 2018 10:52:41 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.46.124.1 with SMTP id x1ls1465044ljc.13.gmail; Thu, 25 Jan 2018 10:52:40 -0800 (PST) X-Google-Smtp-Source: AH8x225brgW/7JW3bOO6qs90axRJ1Tt+Uw5tqdnD3pxcflJUZK/bXEFXaIkp84AbjV0T3KQkc1Ld X-Received: by 10.25.181.134 with SMTP id g6mr959469lfk.27.1516906360420; Thu, 25 Jan 2018 10:52:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516906360; cv=none; d=google.com; s=arc-20160816; b=B36vRhgqk1riA7iHlidZd6epDK6JcwiW/ejj39KnMobu5z3WqE4zsmcn45UGGvcXTK PYw/tsK8OFyWPfbtod5VTghJ6/LGjgkExEp+MI1UhQsuBv6vUeI4dtPO6S8dQ6WOzRZ/ K9rr73jUKehVl+JoqJ7KZ1GbXVrRNYOzDP1V7oP4bpka3Xo12a/My+q+wvpkHm9uaeVx b6gvbBIIhB5EMmqOAo1CRJo6UsWerpxxk1CxQ1uLS57ic63NAGVKfNzkHj35KZHmbQ4b vM5EfIk7zshCLb5z84I12AgXR7isjIw3s90H03ATerw5EpGSFc0hSoZ6F6ESMeTOi1tA diKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=X8vehkv5Mz2+5dlfqZUtXuNKztXO62rwMmK+sVfV6Vs=; b=KXQvOMkvE3e1Q7HXNArN3XQ6hUF0rXK/rJ6Y6g6ERaqiLp/EMgC7WmdPuE8hbxS79o ViMcu0Xf78oXZcrGNGbQAuBFXXgjYmUGNNBKSOgaXrdIEgBFN+DgAubOpfJdtInumdVG lkV7UgssNyUWKyJwNICQcuA/hbkgFd4wPbdyAIVErTH245Q+es8GMIWd34lmTOjX65k9 qxU2GZL+eMi76tFoYOeXo9t/ijDA7IooA4ha7X0F+AV2dkf+ecQzlslIB6XiCz9XabnP 9BgkeytE/pCYB8F/s1qQlMrbvr0NJJfwOqzLQjlJ/hiYsRRcyy7IDXrrXz3DPWqTB/tD XfqA== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@googlemail.com header.s=20161025 header.b=uRmSpH9M; spf=pass (google.com: domain of benbrenson89@googlemail.com designates 2a00:1450:400c:c09::234 as permitted sender) smtp.mailfrom=benbrenson89@googlemail.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=googlemail.com Return-Path: Received: from mail-wm0-x234.google.com (mail-wm0-x234.google.com. [2a00:1450:400c:c09::234]) by gmr-mx.google.com with ESMTPS id b10si687170lfe.4.2018.01.25.10.52.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Jan 2018 10:52:40 -0800 (PST) Received-SPF: pass (google.com: domain of benbrenson89@googlemail.com designates 2a00:1450:400c:c09::234 as permitted sender) client-ip=2a00:1450:400c:c09::234; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@googlemail.com header.s=20161025 header.b=uRmSpH9M; spf=pass (google.com: domain of benbrenson89@googlemail.com designates 2a00:1450:400c:c09::234 as permitted sender) smtp.mailfrom=benbrenson89@googlemail.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=googlemail.com Received: by mail-wm0-x234.google.com with SMTP id g1so16517912wmg.2 for ; Thu, 25 Jan 2018 10:52:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language; bh=X8vehkv5Mz2+5dlfqZUtXuNKztXO62rwMmK+sVfV6Vs=; b=uRmSpH9MwNE0hxa+86lLVUzirUC9C4OZ1CVSqIT1tyVVHDRSiSgyg1eFqq6g3zPp/O EMNDb5v0zPz3gmkUL7Lt3EgvcGDiyJX+A6ScE7YRuibrI4pcGHwFQGkuPQmwnbIH31zu k1HK6UHFHjwJVu34LSByzOaTGHEOafGCHKAMVaUv6iyZTAUV8c7htHm2beND9GsfuM2I FMi57g2fTxbkWswa4mBANmHmAKLvyBHuL2RWnWlIClbkWrUyDlFZWWuYwmOPPnox8cxH yULSP6Enkfr+28dWn2FL0h65/6DvVdqzOQG+G8Jxl86PKVuc4rO2h8uSME9JVME9PGke fi5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=X8vehkv5Mz2+5dlfqZUtXuNKztXO62rwMmK+sVfV6Vs=; b=lcU5LTYKha3vgLbH/ZR2TCGkvW01sX8UXwFNJrJq6WYk51S/SB5kvUq2xa83B1p780 ZCg0Kjx7PRtqcT8YYEO4uHrHmvgmEjWLGVmHDU2WZc9NNE2D5qubDdf/8vKX/Xek7xHo 8hUZx2QdaQi45kbsLbUdv8VpeuVYjabt68u114ZIKICPzHPLlEDMboxIIZIT1+FI2oC7 zxYeuz9+mrJCrT0ZntITKZd1z9jjmh48+Tm6fBR/i4X/UreQbjZz5xUUyJ52ClkaXkmR usb6ypSShgwDLgV0NcLGVLk18zCKrXFL8CjT32iS652ekX708I/oZbQ4s4aF3w0m7f46 6wxA== X-Gm-Message-State: AKwxytcWr2e4bznIkMP9qDNyNFgp8HTZrEZuS1yeat3inCxHtpZFKHPP wba18EgX8MNQ5E98Hu88Qi+nUSRq X-Received: by 10.28.52.9 with SMTP id b9mr9188119wma.114.1516906360035; Thu, 25 Jan 2018 10:52:40 -0800 (PST) Return-Path: Received: from [192.168.0.11] (ipb21b4230.dynamic.kabel-deutschland.de. [178.27.66.48]) by smtp.gmail.com with ESMTPSA id 44sm8621370wrv.0.2018.01.25.10.52.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Jan 2018 10:52:39 -0800 (PST) Subject: Re: [RFC v2][PATCH 2/3] build-rep: Add helper class To: Jan Kiszka , isar-users Cc: Claudius Heine References: <20180111111939.25667-1-asmirnov@ilbers.de> <20180111111939.25667-3-asmirnov@ilbers.de> <20180112133205.2d2d6615@mmd1pvb1c.ad001.siemens.net> <20180112172526.19bd23a2@mmd1pvb1c.ad001.siemens.net> <4c5b731d-d337-8be2-cd2d-025768ee6497@googlemail.com> <7dff65b2-2d63-d694-6a68-69ba3f0a8ad4@siemens.com> From: Benedikt Niedermayr Message-ID: <03b98c2b-90f8-3eb3-99c5-9c231d6734de@googlemail.com> Date: Thu, 25 Jan 2018 19:52:38 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <7dff65b2-2d63-d694-6a68-69ba3f0a8ad4@siemens.com> Content-Type: multipart/mixed; boundary="------------D60D1245AB5DB271963E79F3" Content-Language: en-US X-TUID: SixjQPUmJnRb This is a multi-part message in MIME format. --------------D60D1245AB5DB271963E79F3 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Am 24.01.2018 um 22:31 schrieb Jan Kiszka: > On 2018-01-24 21:53, Benedikt Niedermayr wrote: >> Am 24.01.2018 um 19:48 schrieb Jan Kiszka: >>> I also started to look into aptly, which I had on my notes for a while. >>> One reason is that it could act as a manual workaround for the missing >>> version-freezing support in Isar (pull into aptly repo, take a snapshot, >>> and then build from it with Isar). >>> >>> Another is that we also need some tooling to manage mirrors and >>> snapshots on the long run, and reprepro, TBHO, smells strange. On first >>> glance, it looks to me like the multistrap of the repo management tools: >>> once a cool thing, but now unmaintained. >>> >>> Did you dig further into aptly? I'm currently wondering how it >>> internally manages snapshots, if it does proper deduplication and how >>> much of that can be preserved when publishing for consumption by, say, >>> Isar... >>> >>> Jan >>> >> Yes, >> >> Until now I have implemented two approaches. >> >> So I will offer some of my results tomorrow. >> >> What I first did, was to use aptly as a complete mirror. Aptly creates a >> mirror and each package, which is requested by Isar will be added to the >> mirror and then be downloaded from there. >> >> Unfortunately that was not as easy as expected, since aptly cannot >> download packages directly. Aptly was originally developed for creating >> complete debian mirrors. >> >> It has now the "-filter" option, which can be used for narrowing the >> packages (and also dependecies) to be mirrored. >> >> So for each additional package I extended the filter and updated the >> mirror afterwards, but that architecture appeared to suffer under less >> performance, since each extension of the filter >> >> and subsequent update caused a download of debians packages.gz file (~ >> 10MB). >> > You went down the same path I was exploring the past hours. But I > dropped as well, also because of such traps: > > https://groups.google.com/forum/#!searchin/aptly-discuss/partial$20mirroring%7Csort:date/aptly-discuss/SCMrc0w5Mq0/up4RpnMLBgAJ > >> My current approach is to create only a local repo after the first Isar >> build suceeded. This avoids complexity for now, since Isar and all >> debian tools are resolving dependencies as usual, when >> >> running against upstream repos. > Would be interested to see the changes you did for that. > >> After the first build I create a snapshot of the local repo (both is >> possible: creating snapshots of local repos and also mirrors). >> >> >> I'm just investigating the deduplication topic and will give you response. >> > Deduplication seems to be done by aptly simply by creating hardlinks. > That even works nicely when publishing to a local directory. > > Thinking the aptly path further: I quickly started to dream of a lazy > mirror. What if we could teach it to create a full mirror but only fetch > packages when someone requests them? > > That means we would first need a live publication services using the > built-in webserver or something like inotify or even fuse for file-based > publication. Then we could track accesses and pull from upstream on > demand. After the first build, we would snapshot the result and use that > from then on. The impact on Isar would be minimal, no separate > dependency tracking, no Debian logic duplication, simple user interface. > > That's very similar to what Claudius initially proposed, but we would be > building on top of an existing, mature repo management tool. > > Jan > Hi, > Would be interested to see the changes you did for that. I can only give you my current implementation of my apt-cache.bbclass and dpkg-cross.bbclass. The apt-cache.bbclass contains a simple shell based API for accessing the aptly functionality. I will push that results to my next branch at my isar fork tomorrow. > Deduplication seems to be done by aptly simply by creating hardlinks. > That even works nicely when publishing to a local directory. > > Thinking the aptly path further: I quickly started to dream of a lazy > mirror. What if we could teach it to create a full mirror but only fetch > packages when someone requests them? > > That means we would first need a live publication services using the > built-in webserver or something like inotify or even fuse for file-based > publication. Then we could track accesses and pull from upstream on > demand. After the first build, we would snapshot the result and use that > from then on. The impact on Isar would be minimal, no separate > dependency tracking, no Debian logic duplication, simple user interface. > > That's very similar to what Claudius initially proposed, but we would be > building on top of an existing, mature repo management tool. That sounds very nice. I don't know how to find good solution/design for that. But maybe a good brain wave might change that :-) I also thinking about combining buildfragments (debian packages) with Bitbake's "setscene" mechanism, in order to create a sstate cache functionality, like yocto does. I also don't know how to achieve that goal, since there is very less (means none) documentation about setscene, and the only point to start from there is the sstate implementation of yocto itself. So first of all I have to understand the masses of code related to the sstate cache. It is a big goal but it is also very nice feature and may solve a lot of problems related to mirroring or snapshoting a repository, since then a direct relationship between task hashes and build fragments (debian packages) would be given. If any of the task changes in a recipe, a new/old build fragment would be the result. And checking out any commit of a meta-layer would relate to matching build fragments. This would be very helpful when checking out to a sooner commit of Isar (or any other layer). A relationship between your current git repository state and related mirror could then be guaranteed. Benni --------------D60D1245AB5DB271963E79F3 Content-Type: text/plain; charset=UTF-8; name="apt-cache.bbclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="apt-cache.bbclass" IyBUaGlzIHNvZnR3YXJlIGlzIGEgcGFydCBvZiBJU0FSLgojIENvcHlyaWdodCAoQykgMjAx Ny0yMDE4IE1peGVkLU1vZGUgR21iSAojCiMgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGNvbW1v biBmdW5jdGlvbmFsaXR5IGZvciB0aGUgYXB0IGNhY2hlLgojCiMgVG9kbzoKIyAxLiBXaGVu IGEgZnVuY3Rpb24gb2YgdGhpcyBBUEkgcmV0dXJuIGFuIGVycm9yLCBiaXRiYWtlIHNob3Vs ZCBvdXRwdXQgdGhlIGxhc3QgZnVuY3Rpb24gcHJvZHVjZWQgdGhlIGVycm9yIQojCiMgMi4g QWRkIGZ1bmN0aW9uYWxpdHkgb2YgY3JlYXRpbmcgc25hcHNob3RzIG9mIGxvY2FsIGlzYXIg cmVwby4KIwojCkNGR19GSUxFID0gIiR7Q0FDSEVfQ09ORl9ESVJ9LyR7Q0FDSEVfQ0ZHX0ZJ TEV9IgpNSVJST1IgPSAiJHtESVNUUk9fU1VJVEV9LW1pcnJvciIKU05BUFNIT1RfQkFTRU5B TUU9InNuYXBzaG90IgpJU0FSX1JFUE9fTE9DQUwgPSAiaXNhci1yZXBvLWxvY2FsIgpJU0FS X0ZJUlNUX0JVSUxEX0RPTkUgPSAiJHtUTVBESVJ9L2ZpcnN0X2J1aWxkX2RvbmUiCgojIFJl cHJvZHVjaWJsZSBidWlsZCBpcyBub3QgZGVmYXVsdApJU0FSX1JFUFJPRFVDSUJMRV9CVUlM RCA/PSAiMSIKCgojIFJlbmFtZSBhIHNuYXBzaG90CiMgJDE6IE9sZCBuYW1lLgojICQyOiBO ZXcgbmFtZS4KX3JlbmFtZV9zbmFwc2hvdCgpIHsKCWFwdGx5IC1jb25maWc9JHtDRkdfRklM RX0gc25hcHNob3QgcmVuYW1lICQxICQyCn0KCgojIENyZWF0ZSBhIG5ldyByZXBvc2l0b3J5 IGRhdGFiYXNlIGZvciBJc2FyIGdlbmVyYXRlZCBwYWNrYWdlcy4KIyAkMTogUmVwb3NpdG9y eSBkYXRhYmFzZSBuYW1lCl9yZXBvX2RiX2NyZWF0ZSgpIHsKICAgIGFwdGx5IC1jb25maWc9 JHtDRkdfRklMRX0gXAogICAgICAgICAgcmVwbyBjcmVhdGUgXAogICAgICAgICAgLWNvbXBv bmVudD0ibWFpbiIgXAogICAgICAgICAgLWRpc3RyaWJ1dGlvbj0iJHtESVNUUk9fU1VJVEV9 IiBcCiAgICAgICAgICAkMQp9CgoKIyBEcm9wIGEgY3JlYXRlZCByZXBvc2l0b3J5IGRhdGFi YXNlIHNpbGVudHkuCl9yZXBvX2RiX2Ryb3AoKSB7CiAgICBhcHRseSAtY29uZmlnPSR7Q0ZH X0ZJTEV9IFwKICAgICAgICAgIHJlcG8gZHJvcCBcCiAgICAgICAgICAkMSB8fCBiYndhcm4g ImRyb3AgZGIgZmFpbGVkIgoKfQoKCiMgQWRkIHBhY2thZ2VzIHRvIHRoZSBsb2NhbCByZXBv c2l0b3J5IGRhdGFiYXNlLgojICQxOiBSZXBvc2l0b3J5IGRhdGFiYXNlIG5hbWUuCiMgJCo6 IFBhY2thZ2VzIHRvIGFkZC4KX3JlcG9fZGJfYWRkX3BhY2thZ2UoKSB7CiAgICByZXBvPSQx CiAgICBzaGlmdAogICAgYXB0bHkgLWNvbmZpZz0ke0NGR19GSUxFfSByZXBvIGFkZCAtZm9y Y2UtcmVwbGFjZSAkcmVwbyAkKgp9CgoKIyBEZWxldGUgcGFja2FnZXMgZnJvbSB0aGUgcmVw b3NpdG9yeSBkYXRhYmFzZS4KIyAkMTogUmVwb3NpdG9yeSBkYXRhYmFzZSBuYW1lLgojICQq OiBQYWNrYWdlcyB0byBkZWxldGUuCl9yZXBvX2RiX2RlbGV0ZV9wYWNrYWdlKCkgewogICAg IwogICAgIyBUb2RvOiBSZW1vdmUgZnJvbSBwb29sPyBCdXQgbWF5YmUgdGhpcyBpcyByZXF1 aXJlZCBmb3Igc25hcHNob3RzPwogICAgIyBXZSBoYXZlIGJ1aWxkIGZyYWdtZW50cyBzYXZl ZCBhdCB0aGUgcG9vbCEgVGhhdCBpcyBnb29kLgogICAgIwogICAgIyBBZnRlciAzIHJlYnVp bGRzOgogICAgIwogICAgIy4vcHVibGljL2lzYXIvcG9vbC9tYWluL3Mvc3d1cGRhdGUvc3d1 cGRhdGVfMS4wX2FybWhmLmRlYgogICAgIy4vcG9vbC9kZi84OC83MDJmYTYwOWZiZDkwYjcz NWQ3Y2RiNmRmZWVmX3N3dXBkYXRlXzEuMF9hcm1oZi5kZWIKICAgICMuL3Bvb2wvZjAvNmUv MjFkMDlhMDczNjZkN2Y5ZjdmNjY5MGVhNzY1Nl9zd3VwZGF0ZV8xLjBfYXJtaGYuZGViCiAg ICAjLi9wb29sL2JkL2MzLzk3NGM4OTAzZDQxNjY2ZDIzMjM5YTgzMzA2Mjdfc3d1cGRhdGVf MS4wX2FybWhmLmRlYgoKICAgIHJlcG89JDEKICAgIHNoaWZ0CiAgICBhcHRseSAtY29uZmln PSR7Q0ZHX0ZJTEV9IHJlcG8gcmVtb3ZlICRyZXBvICQqCn0KCgojIFB1Ymxpc2ggcmVwb3Np dG9yeSBjb25zdW1lZCBieSBhcHQuIFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVk CiMgZm9yIHJlcG9zaXRvcmllcwojICQxOiBSZXBvc2l0b3J5IGRhdGFiYXNlIG5hbWUKIyAk MjogUGF0aCBQcmVmaXgKX3JlcG9fZGJfcHVibGlzaCgpewogICAgYXB0bHkgLWNvbmZpZz0k e0NGR19GSUxFfSBcCiAgICAgICAgICBwdWJsaXNoIHJlcG8gXAogICAgICAgICAgLWFyY2hp dGVjdHVyZXM9IiR7REVCX0hPU1RfQVJDSH0sJHtESVNUUk9fQVJDSH0iIFwKICAgICAgICAg ICQxIFwKICAgICAgICAgICQyCgp9CgoKIyBEcm9wIGFuIGFscmVhZHkgcHVibGlzaGVkIHJl cG9zaXRvcnkuCiMgJDE6IFBhdGggcHJlZml4Cl9yZXBvX2RiX3B1Ymxpc2hfZHJvcCgpIHsK ICAgIGFwdGx5IC1jb25maWc9JHtDRkdfRklMRX0gXAogICAgICAgICAgcHVibGlzaCBkcm9w IFwKICAgICAgICAgICR7RElTVFJPX1NVSVRFfSBcCiAgICAgICAgICAkMSB8fCBiYndhcm4g ImRyb3AgcHVibGlzaGVkIGZhaWxlZCIKfQoKCiMgU3dpdGNoIGFscmVhZHkgcHVibGlzaGVk IHJlcG9zaXRvcnkgdG8gbmV3IHJlcG9zaXRvcnkuIFRoaXMKIyB3aWxsIGNoYW5nZSB0aGUg Y29udGVudCBvZiB0aGUgcHVibGlzaGVkIHJlcG9zaXRvcnkuIFRoaXMgZnVuY3Rpb24KIyBj YW4gb25seSBiZSBjYWxsZWQgb24gcHVibGlzaGVkIHJlcG9zLgojICQxOiBQcmVmaXguCl9y ZXBvX2RiX3B1Ymxpc2hlZF91cGRhdGUoKSB7CiAgICBhcHRseSAtY29uZmlnPSR7Q0ZHX0ZJ TEV9IFwKICAgICAgICAgIHB1Ymxpc2ggdXBkYXRlIFwKICAgICAgICAgIC1mb3JjZS1vdmVy d3JpdGUgXAogICAgICAgICAgJHtESVNUUk9fU1VJVEV9ICQxCn0KCgojIEFkZCBwYWNrYWdl cyB0byB0aGUgaXNhciBjYWNoZS4KIyAkMTogUmVwb3NpdG9yeSBkYXRhYmFzZSBuYW1lLgoj ICQyOiBSZXBvc2l0b3J5IHByZWZpeAojICQqOiBQYWNrYWdlcyB0byBhZGQuCmNhY2hlX2Fk ZF9wYWNrYWdlKCkgewogICAgcmVwbz0kMQogICAgcHJlZml4PSQyCiAgICBzaGlmdCAyCiAg ICBfcmVwb19kYl9hZGRfcGFja2FnZSAkcmVwbyAkKgogICAgX3JlcG9fZGJfcHVibGlzaGVk X3VwZGF0ZSAkcHJlZml4Cn0KCgojIERlbGV0ZSBhIHBhY2thZ2UgZnJvbSB0aGUgYXB0IGNh Y2hlLgojIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBiZSBjYWxsZWQgd2l0aGluIGRvX2Ns ZWFuKGFsbCkgdGFzay4KIyAkMTogUmVwb3NpdG9yeSBkYXRhYmFzZSBuYW1lLgojICQyOiBS ZXBvc2l0b3J5IHByZWZpeAojICQqOiBQYWNrYWdlcyB0byBkZWxldGUuCmNhY2hlX2RlbGV0 ZV9wYWNrYWdlKCkgewogICAgcmVwbz0kMQogICAgcHJlZml4PSQyCiAgICBzaGlmdCAyCiAg ICBfcmVwb19kYl9kZWxldGVfcGFja2FnZSAkcmVwbyAkKgogICAgX3JlcG9fZGJfcHVibGlz aGVkX3VwZGF0ZSAkcHJlZml4Cn0KCgpjYWNoZV9jcmVhdGVfc25hcHNob3QoKSB7CiAgICBh cHRseSAtY29uZmlnPSR7Q0ZHX0ZJTEV9IFwKICAgICAgICAgIHNuYXBzaG90IGNyZWF0ZSAk e1NOQVBTSE9UX0JBU0VOQU1FfV8ke0RBVEVUSU1FfSBmcm9tIHJlcG8gJHtJU0FSX1JFUE9f TE9DQUx9Cn0KCgpjYWNoZV9sb2FkX3NuYXBzaG90KCkgewogICIke0ZVTkNOQU1FWzFdfSBu b3QgaW1wbGVtZW50ZWQuIgp9CgojIFNldHVwIHRoZSBhcHQgY2FjaGUsIG9ubHkgaWYgbm8g Y2FjaGUgaXMgYXZhaWxhYmxlLCB5ZXQuCmRvX2NhY2hlX3NldHVwKCkgewogICAgc2V0IC1F CiAgICBfY2xlYW51cCgpIHsKICAgICAgICByZXQ9JD8KICAgICAgICBiYndhcm4gIkVycm9y IGluIGFwdC1jYWNoZS5iYmxjYXNzOiAke0JBU0hfU09VUkNFWzBdfTogKExpbmUgJHtCQVNI X0xJTkVOT1swXX0sIEZ1bmM6JHtGVU5DTkFNRVsxXX0pIgogICAgICAgIChleGl0ICRyZXQp IHx8IGJiX2V4aXRfaGFuZGxlcgogICAgfQogICAgdHJhcCAnX2NsZWFudXAnIEVSUgoKICAg ICMgVmVyeSBmaXJzdCBidWlsZCBvZiBpc2FyLiBTZXR0aW5nIHVwIHRoZSBjYWNoZS4KICAg IGlmIFsgISAtZSAiJHtDRkdfRklMRX0iIF07IHRoZW4KICAgICAgICBiYnBsYWluICJDcmVh dGluZyBsb2NhbCBhcHQgY2FjaGUgZm9yIGZpcnN0IGJ1aWxkLiIKICAgICAgICBzZWQgLWUg J3N8IyNDQUNIRV9ESVIjI3wke0NBQ0hFX0RJUn18JyBcCiAgICAgICAgICAgICR7RklMRVNE SVJ9LyR7Q0FDSEVfQ0ZHX0ZJTEV9LmluID4gJHtDRkdfRklMRX0KCiAgICAgICAgX3JlcG9f ZGJfY3JlYXRlICR7SVNBUl9SRVBPX0xPQ0FMfSAke0lTQVJfQ0FDSEVfTE9DQUxfUFJFRklY fQogICAgICAgIF9yZXBvX2RiX3B1Ymxpc2ggJHtJU0FSX1JFUE9fTE9DQUx9ICR7SVNBUl9D QUNIRV9MT0NBTF9QUkVGSVh9CiAgICBmaQoKCiAgICBpZiBbIC1lICIke0lTQVJfRklSU1Rf QlVJTERfRE9ORX0iIF0gJiYgWyAiJHtSRVBST0RVQ0lCTEVfQlVJTERfRU5BQkxFRH0iID09 ICIxIiBdOyB0aGVuCiAgICAgICAgYmJwbGFpbiAiUmV1c2luZyBsYXN0IGFwdCBjYWNoZSBz bmFwc2hvdDogJChhcHRseSAtLWNvbmZpZz0ke0NGR19GSUxFfSAtLXJhdyAtc29ydD10aW1l IHNuYXBzaG90IGxpc3QgfCB0YWlsIC1uIDEpIgogICAgICAgIHJldHVybgogICAgZmkKCiAg ICAjYmJ3YXJuICJSZXB1Ymxpc2hpbmcgcmVwbyBvZiBsYXN0IGJ1aWxkIgogICAgI19yZXBv X2RiX3B1Ymxpc2hfZHJvcCAke0lTQVJfQ0FDSEVfTE9DQUxfUFJFRklYfQogICAgI19yZXBv X2RiX2Ryb3AgJHtJU0FSX1JFUE9fTE9DQUx9CiAgICAjX3JlcG9fZGJfY3JlYXRlICR7SVNB Ul9SRVBPX0xPQ0FMfSAke0lTQVJfQ0FDSEVfTE9DQUxfUFJFRklYfQogICAgI19yZXBvX2Ri X3B1Ymxpc2ggJHtJU0FSX1JFUE9fTE9DQUx9ICR7SVNBUl9DQUNIRV9MT0NBTF9QUkVGSVh9 Cgp9CmFkZHRhc2sgZG9fY2FjaGVfc2V0dXAgYmVmb3JlIGRvX3Jvb3Rmcwpkb19jYWNoZV9z ZXR1cFtkaXJzXSArPSAiJHtDQUNIRV9DT05GX0RJUn0iCmRvX2NhY2hlX3NldHVwW2xvY2tm aWxlc10gPSAiJHtEUEtHX0xPQ0t9Igo= --------------D60D1245AB5DB271963E79F3 Content-Type: text/plain; charset=UTF-8; name="dpkg-cross.bbclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dpkg-cross.bbclass" IyBUaGlzIHNvZnR3YXJlIGlzIGEgcGFydCBvZiBJU0FSLgojIENvcHlyaWdodCAoQykgMjAx NyBNaXhlZCBNb2RlIEdtYkgKCiMgQ2xhc3MgaW1wbGVtZW50aW5nIGNvbW1vbiBmdW5jdGlv bmFsaXRpZXMgZm9yIHJ1bm5pbmcgY3Jvc3MgYnVpbGRzCiMgZm9yIGRlYmlhbml6ZWQgcGFj a2FnZXMuCiMgRG8gbm90IGRpcmVjdGx5IGluaGVyaXQgdGhpcyBjbGFzcy4KIyBJbnN0ZWFk IGluaGVyaXQgZnJvbSBjcm9zcy5iYmNsYXNzLCB3aGljaCBpcyBkb25lIGJ5IHNldHRpbmcg dGhlIEJCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiIHdpdGhpbiB5b3VyIHJlY2lwZS4KCmluaGVy aXQgZmV0Y2ggcGF0Y2ggYXB0LWNhY2hlCgpERVBFTkRTICs9ICJjcm9zcy1idWlsZGNocm9v dCIKZG9fdW5wYWNrW2RlcHRhc2tdID0gImRvX2luc3RhbGwiCmRvX2luc3RhbGxbcmRlcHRh c2tdID0gImRvX2luc3RhbGwiCgpDSFJPT1RfRElSID0gIiR7Q1JPU1NfQlVJTERDSFJPT1Rf RElSfSIKQlVJTERST09UID0gIiR7Q0hST09UX0RJUn0vJHtQUH0iCkVYVFJBQ1RESVIgPSAi JHtCVUlMRFJPT1R9IgpTID0gIiR7RVhUUkFDVERJUn0vJHtTUkNfRElSfSIKQiA9ICIke0JV SUxEUk9PVH0vJHtCVUlMRF9ESVJ9IgoKCnB5dGhvbiAoKSB7CiAgICBzID0gZC5nZXRWYXIo J1MnLCBUcnVlKS5yc3RyaXAoJy8nKQogICAgZXh0cmFjdF9kaXIgPSBkLmdldFZhcignRVhU UkFDVERJUicsIFRydWUpLnJzdHJpcCgnLycpCgogICAgaWYgcyA9PSBleHRyYWN0X2RpcjoK ICAgICAgICBiYi5mYXRhbCgnXG5TIGVxdWFscyBFWFRSQUNURElSLiBNYXliZSBTUkNfRElS IHZhcmlhYmxlIHdhcyBub3Qgc2V0LicpCn0KCgpPUFRTID0gIi0tdG9vbD0nYXB0LWdldCAt byBEZWJ1Zzo6cGtnUHJvYmxlbVJlc29sdmVyPXllcyAtLW5vLWluc3RhbGwtcmVjb21tZW5k cyAteSAke0FQVF9FWFRSQV9PUFRTfSciCmRvX2luc3RhbGxfZGVwZW5kcygpIHsKICAgIGNk ICR7UFBTfQogICAgYXB0LWdldCB1cGRhdGUKICAgIG1rLWJ1aWxkLWRlcHMgJHtPUFRTfSAt aSAtciBkZWJpYW4vY29udHJvbAp9CmFkZHRhc2sgZG9faW5zdGFsbF9kZXBlbmRzIGFmdGVy IGRvX3BhdGNoIGJlZm9yZSBkb19idWlsZApkb19pbnN0YWxsX2RlcGVuZHNbbG9ja2ZpbGVz XSA9ICIke0RQS0dfTE9DS30iCmRvX2luc3RhbGxfZGVwZW5kc1tzdGFtcC1leHRyYS1pbmZv XSA9ICIke01BQ0hJTkV9LmNocm9vdCIKZG9faW5zdGFsbF9kZXBlbmRzW2Nocm9vdF0gPSAi MSIKZG9faW5zdGFsbF9kZXBlbmRzW2lkXSA9ICIke0NST1NTX0JVSUxEQ0hST09UX0lEfSIK CgojIEJ1aWxkIHBhY2thZ2UgZnJvbSBzb3VyY2VzCmRvX2J1aWxkKCkgewogICAgY2QgJHtQ UFN9CiAgICBkcGtnLWJ1aWxkcGFja2FnZSAke0RFQl9TSUdOfSAtcGdwZyAtc24gLS1ob3N0 LWFyY2g9JHtERUJfQVJDSH0gLVoke0RFQl9DT01QUkVTU0lPTn0KfQpkb19idWlsZFtzdGFt cC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkV9LmNocm9vdCIKZG9fYnVpbGRbY2hyb290XSA9 ICIxIgpkb19idWlsZFtpZF0gPSAiJHtDUk9TU19CVUlMRENIUk9PVF9JRH0iCgoKZG9faW5z dGFsbCgpIHsKICAgIGNhY2hlX2FkZF9wYWNrYWdlICR7SVNBUl9SRVBPX0xPQ0FMfSAke0lT QVJfQ0FDSEVfTE9DQUxfUFJFRklYfSAke0JVSUxEUk9PVH0vKi5kZWIKfQphZGR0YXNrIGRv X2luc3RhbGwgYWZ0ZXIgZG9fYnVpbGQKZG9faW5zdGFsbFtsb2NrZmlsZXNdID0gIiR7RFBL R19MT0NLfSIKZG9faW5zdGFsbFtzdGFtcC1leHRyYS1pbmZvXSA9ICIke0RJU1RST30iCmRv X2luc3RhbGxbZGlyc10gKz0gIiR7REVQTE9ZX0RJUl9JTUFHRX0iCgoKZG9fY2xlYW5fY2Fj aGVfcGtnKCkgewogICAgcGtncz0iJChscyAke0JVSUxEUk9PVH0vKi5kZWIpIgogICAgZm9y IHBrZyBpbiAkcGtncyA7IGRvCiAgICAgICAgY2FjaGVfZGVsZXRlX3BhY2thZ2UgJHtJU0FS X1JFUE9fTE9DQUx9ICR7SVNBUl9DQUNIRV9MT0NBTF9QUkVGSVh9ICIkKGJhc2VuYW1lICRw a2cgfCBzZWQgJ3MvXy4qLmRlYi8vJykiCiAgICBkb25lCn0KYWRkdGFzayBkb19jbGVhbl9j YWNoZV9wa2cgYmVmb3JlIGRvX2NsZWFuIGRvX2NsZWFuYWxsCg== --------------D60D1245AB5DB271963E79F3--