Gentoo Archives: gentoo-dev

From: Rich Freeman <rich0@g.o>
To: gentoo-dev <gentoo-dev@l.g.o>
Subject: Re: Re: [gentoo-dev] [pre-GLEP] Gentoo binary package container format [gentoo@jonesmz.com]
Date: Sun, 18 Nov 2018 21:55:36
Message-Id: CAGfcS_kdKAtwhbhitbZ9vj5pHWH8i7b6Ro3_Sh7JTCOBgUDP+Q@mail.gmail.com
In Reply to: Fwd: Re: [gentoo-dev] [pre-GLEP] Gentoo binary package container format [gentoo@jonesmz.com] by Roy Bamford
1 On Sun, Nov 18, 2018 at 4:10 PM Roy Bamford <neddyseagoon@g.o> wrote:
2 >
3 > Replying off list because I am not on the whitelist.
4
5 That seems odd.
6
7 > 1) append a uuid to each filename. Generated when the bin package file is generated.
8 > 2) encode the hostname of the machine that generated the file
9 > 3) encode the use flags in the filename.
10
11 So, I brought up this same issue in the earlier discussion and it was
12 considered out of scope, and I think this is fair. The GLEP does not
13 specify filename, and IMO the standard for what goes INSIDE the file
14 will work just fine with any future enhancements that address exactly
15 this use case.
16
17 Besides your case of building for a cluster, another use case is
18 having a central binary repo that portage could check and utilize when
19 a user's preferences happen to match what is pre-built.
20
21 I suggest we start a different thread for any additional discussion of
22 this use case. I was thinking and it probably wouldn't be super-hard
23 to actually start building something like this. But, I don't want to
24 derail this GLEP as I don't see any reason designing something like
25 this needs to hold up the binary package format. Both the existing
26 and proposed binary package formats will encode any metadata needed by
27 the package manager inside the file, and the only extension we need is
28 to encode identifying info in the filename.
29
30 My idea is to basically have portage generate a tag with all the info
31 needed to identify the "right" package, take a hash of it, and then
32 stick that in the filename. Then when portage is looking for a binary
33 package to use at install time it generates the same tag using the
34 same algorithm and looks for a matching hash. If a hit is found then
35 it reads the complete metadata in the file and applies all the sanity
36 checks it already does. Generating of binary packages with the hash
37 cold be made optional, and portage could also be configured to first
38 look for the matching hash, then fall back to the existing naming
39 convention, so that it would be compatible with existing generic
40 names. So, users would get a choice as to whether they want to build
41 up a library of these packages, or just have each build overwrite the
42 last.
43
44 Then the next step would be to allow these files to be fetched from a
45 binary repo optionally, and then finally we'd need tools to create the
46 repo. But, this step isn't needed for your use case. With the proper
47 optional switches you could utilize as much of this scheme as you
48 like.
49
50 Also, you could optionally choose how much you want portage to encode
51 in the tag and look for. Are you very fussy and only want a binary
52 package with matching CFLAGS/USE/whatever? Or is just matching
53 USE/arch/etc enough? Some of the existing portage options could
54 potentially be re-used here.
55
56 Please make any replies in a new thread.
57
58 --
59 Rich

Replies