From: Claudius Heine <claudius.heine.ext@siemens.com>
To: isar-users@googlegroups.com
Subject: Re: Reproducibility of builds
Date: Tue, 19 Sep 2017 10:55:25 +0200 [thread overview]
Message-ID: <d9b3e24d-0f74-0703-b120-f86eb7a8efb9@siemens.com> (raw)
In-Reply-To: <20170918150558.GB3848@yssyq.radix50.net>
Hi Baurzhan,
On 09/18/2017 05:05 PM, Baurzhan Ismagulov wrote:
> What I don't like is the implementation via a http proxy. IMHO, it's too
> indirect for the task (why bother with dynamic proxying if the list of packages
> is defined statically in a given apt repo).
Only if someone bothers to create a separate debian mirror repository
for every product. It uses much more resources. It would be much easier
to have a global package cache and a project local package index for it.
IMO that would be only possible with a caching repo proxy.
> It supports only one of apt's six
> fetch methods (such as https, file, ssh, etc., see sources.list(5), more could
> be defined in the future or in special environments).
At first. I started with a http proxy it the easiest to implement. Its
always possible to add additional functionality to the proxy to support
other fetch methods if necessary. But IMO that not really that important.
> The implementation is
> going to be complex, since it needs to distinguish between different build
> process chains in the same environment (two bitbakes running in a single
> docker).
Why? We have more then one port available, so we can run more then one
proxy simultaneously for each build. My current implementation just
chooses a free port and makes it available to the calling process.
> It should be trivial to get a list of packages from multistrap. The same
> functionality is available in debootstrap, when we move to it.
The problem is we still need to use apt in the buildchroot to install
additional build dependencies for each recipe. Those are not part of
what multistrap/debootstrap lists out. But since it would go through the
http proxy it would be part of the static package cache.
> Mirroring could
> be done by an existing or a new tool. The latter may be a step to identify
> requirements and get experience with the workflow before integrating the
> functionality into the former (possibly upon feedback from Debian community).
As I said, I don't see the sense in creating a full debian mirror for
every project. And partial mirrors are difficult to create because of
multistrap/debootstrap (in case of the buildchroot) don't know about
every package that is added to the image.
>
> Archiving of the apt repo is a CM issue outside of Isar. For reproducing older
> versions, it should be managed in an SCM (e.g., git).
That should be possible. Just archive the package index in a git repo
and the packages in a git lfs repo.
> Synchronization between
> the right product and apt repo revisions is also outside Isar and could be
> solved e.g. with kas.
Never said that it is. But isar is responsible for providing ways to
import/export some kind of package list into a build.
> Or, one goes hard-core and commits apt stuff into the
> product repo.
That might depend on your 'product' definition, but for me product is
not a image. So products can have varying package versions, while images
obviously doesn't. So committing them together with products makes no
sense to me. But committing them together with the final image with a
reference of the used refspec of the product repository makes more sense.
> In the future, we might come with a better solution for archiving
> and version pinning; at this stage I'd like to utilize existing Debian means
> first before going further. The details of the pinning concept would be
> affected by bitbake debian/control backend implementation.
I said nothing about pining, because IMO package updates etc. should
still be possible on the target if wanted. But we should be able to
recreate images at least from a package list. So apt package pinning is
just a different solution for a different problem. If you mean pinning
just in the bootstraping phase, then yes, that would be nice. But I
don't know how that can solve the buildchroot problem. Also since the
package index contains just one version of each package, I don't see how
it would be possible to pin them to an older version at this stage,
because those would no longer be available in the index and *bootstrap
would not know where to fetch them.
AFAIK Debian currently has no convenient means for solving these issues yet.
I used apt-cacher-ng when I worked with elbe, but setting that up for
every project separately is a big hassle. I want a easy solutions where
this stuff is done inside of the normal bitbake process, where not every
developer has to wire up her own process of building root file systems.
Because if they have to build their own most developers don't care about
it or it becomes impossible to recreate images because a couple of
unknown software packages in some unknown version and with unknown
configuration are necessary for it.
So its important to use normal upstream package mirrors and have a
process in place inside bitbake that cares about these issues transparently.
IMO its important to not have to many options and unneeded complexity.
So reproducibility should be the default and everyone is free to
update/clear the package index manually via a single bitbake task.
Cheers,
Claudius
--
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
next prev parent reply other threads:[~2017-09-19 8:55 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-03 8:13 Claudius Heine
2017-08-21 11:23 ` Claudius Heine
2017-08-28 11:27 ` Claudius Heine
2017-09-05 10:05 ` Alexander Smirnov
2017-09-05 10:38 ` Jan Kiszka
2017-09-05 11:50 ` Alexander Smirnov
2017-09-05 11:54 ` Claudius Heine
2017-09-06 13:39 ` Claudius Heine
2017-09-18 15:05 ` Baurzhan Ismagulov
2017-09-19 8:55 ` Claudius Heine [this message]
2017-11-14 16:04 ` Christian Storm
2017-11-14 16:22 ` Claudius Heine
2017-11-17 16:53 ` [ext] Christian Storm
2017-11-17 18:14 ` Claudius Heine
2017-11-20 8:33 ` [ext] Christian Storm
2017-11-20 9:16 ` Claudius Heine
2017-11-29 18:53 ` Alexander Smirnov
2017-11-29 19:02 ` Jan Kiszka
2017-11-30 8:04 ` Alexander Smirnov
2017-11-30 14:48 ` Jan Kiszka
2017-11-30 9:31 ` Claudius Heine
2017-12-06 16:21 ` Alexander Smirnov
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=d9b3e24d-0f74-0703-b120-f86eb7a8efb9@siemens.com \
--to=claudius.heine.ext@siemens.com \
--cc=isar-users@googlegroups.com \
/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