From: Aisha Tammy <gentoo.dev@aisha.cc>
To: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] New project: binhost
Date: Wed, 10 Feb 2021 14:16:12 -0500 [thread overview]
Message-ID: <e8888b0f-4884-e4e1-e00a-9f8e02b0f33e@aisha.cc> (raw)
In-Reply-To: <CAGfcS_m+eAAT803qXRpU+SWyUq88CSPMiE9yUEPHWysyp-awYQ@mail.gmail.com>
On 2/10/21 2:11 PM, Rich Freeman wrote:
> On Wed, Feb 10, 2021 at 12:57 PM Andreas K. Hüttel <dilfridge@gentoo.org> wrote:
>> * what portage features are still needed or need improvements (e.g. binpkg
>> signing and verification)
>> * how should hosting look like
> Some ideas for portage enhancements:
>
> 1. Ability to fetch binary packages from some kind of repo.
> 2. Ability to have multiple binary packages co-exist in a repo (local
> or remote) with different build attributes (arch, USE, CFLAGS,
> DEPENDS, whatever).
> 3. Ability to pick the most appropriate binary packages to use based
> on user preferences (with a mix of hard and soft preferences).
>
> One idea I've had around how #2-3 might be implemented is:
> 1. Binary packages already contain data on how they were built (USE
> flags, dependencies, etc). Place this in a file using a deterministic
> sorting/etc order so that two builds with the same settings will have
> the same results.
this is provided by FEATURES="binpkg-multi-instance"
(or maybe i misread)
> 2. Generate a hash of the file contents - this can go in the filename
> so that the file can co-exist with other files, and be located
> assuming you have a full matching set of metadata.
> 3. Start dropping attributes from the file based on a list of
> priorities and generate additional hashes. Create symlinked files to
> the original file using these hashes (overwriting or not existing
> symlinks based on policy). This allows the binary package to be found
> using either an exact set of attributes or a subset of higher-priority
> attributes. This is analogous to shared object symlinking.
> 4. The package manager will look for a binary package first using the
> user's full config, and then by dropping optional elements of the
> config (so maybe it does the search without CFLAGs, then without USE
> flags). Eventually it aborts based on user prefs (maybe the user only
> wants an exact match, or is willing to accept alternate CFLAGs but not
> USE flags, or maybe anything for the arch is selected.
> 5. As always the final selected binary package still gets evaluated
> like any other binary package to ensure it is usable.
>
> Such a system can identify whether a potentially usable file exists
> using only filename, cutting down on fetching. In the interests of
> avoiding useless fetches we would only carry step 3 reasonably far -
> packages would have to match based on architecture and any dynamic
> linking requirements. So we wouldn't generate hashes that didn't
> include at least those minimums, and the package manager wouldn't
> search for them.
>
> Obviously you could do more (if you have 5 combinations of use flags,
> look for the set that matches most closely). That couldn't be done
> using hashes alone in an efficient way. You could have a small
> manifest file alongside the binary package that could be fetched
> separately if the package manager wants to narrow things down and
> fetch a few of those to narrow it down further.
>
> Or you could skip the hash searching and just fetch all the manifests
> for a particular package/arch and just search all of those, but that
> is more data to transfer just to do a query. A metadata cache of some
> kind of might be another solution. Content hashes would probably
> still be useful just to allow co-existence of alternate builds.
>
next prev parent reply other threads:[~2021-02-10 19:16 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-10 17:57 [gentoo-dev] New project: binhost Andreas K. Hüttel
2021-02-10 18:51 ` Lars Wendler
2021-02-11 9:17 ` Michał Górny
2021-02-14 0:37 ` Zac Medico
2021-02-14 0:53 ` Zac Medico
2021-02-21 4:17 ` Zac Medico
2021-02-21 16:57 ` Andreas K. Huettel
2021-02-23 19:46 ` Zac Medico
2021-02-23 20:05 ` Zac Medico
2021-02-23 20:33 ` Zac Medico
2021-02-24 10:29 ` Zac Medico
2021-02-24 12:13 ` Zac Medico
2021-02-14 0:29 ` Zac Medico
2021-02-16 1:50 ` Francesco Riosa
2021-02-16 7:58 ` Jaco Kroon
2021-02-10 18:51 ` Aisha Tammy
2021-02-10 19:11 ` Rich Freeman
2021-02-10 19:15 ` Andreas K. Hüttel
2021-02-16 1:37 ` Francesco Riosa
2021-02-10 19:16 ` Aisha Tammy [this message]
2021-02-10 23:19 ` Alexey Sokolov
2021-02-11 9:41 ` Jaco Kroon
2021-02-14 1:51 ` Zac Medico
2021-02-14 13:30 ` Rich Freeman
2021-02-23 19:53 ` Zac Medico
2021-02-10 20:04 ` Frédéric Pierret
2021-03-13 12:25 ` Frédéric Pierret
2021-02-10 21:34 ` Toralf Förster
2021-02-11 14:00 ` Andrew Ammerlaan
2021-02-13 3:32 ` Marc Schiffbauer
2021-02-13 4:21 ` Aisha Tammy
2021-02-13 9:13 ` Michael Jones
2021-02-13 12:08 ` m1027
2021-02-15 14:20 ` [gentoo-dev] " Michael Haubenwallner
2021-03-13 8:43 ` [gentoo-dev] " Torokhov Sergey
2021-03-13 10:47 ` Marco Scardovi
2021-03-13 11:58 ` Wolfgang E. Sanyer
2021-03-14 21:12 ` Torokhov Sergey
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=e8888b0f-4884-e4e1-e00a-9f8e02b0f33e@aisha.cc \
--to=gentoo.dev@aisha.cc \
--cc=gentoo-dev@lists.gentoo.org \
/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