public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
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.
>



  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