1 |
On Wed, Feb 9, 2022 at 6:16 PM Robin H. Johnson <robbat2@g.o> wrote: |
2 |
> |
3 |
> Potential families of solutions as I proposed: |
4 |
> ---------------------------------------------- |
5 |
> 1) make 1:1 upstream distfile to gentoo distfile official and accepted |
6 |
> EVEN if a package has tens of thousands of distfiles. |
7 |
> 1.1) Provide a way to share duplicated Manifest entries between packages |
8 |
> |
9 |
> 2) make distfile bundling "official", accepting large growth in mirror usage |
10 |
> 2.1) This would include tooling to make it easy, repeatable, verifiable etc. |
11 |
> |
12 |
> 3) Additional fetch phases, that depend on inputs from src_unpack: this |
13 |
> would run things like ecosystem-specific fetch tooling. |
14 |
> That tooling would be responsible for the steps I mentioned above, |
15 |
> parallel download, verifications, writing to distdir in a way the |
16 |
> ecosystem could use |
17 |
|
18 |
I'm not sure I'd recommend it, but another option would be to have an |
19 |
additional layer of manifest/URL references. |
20 |
|
21 |
You put foo.ref in your SRC_URI, and it gets manifested as usual. |
22 |
foo.ref is a text file with a list of URLs and hashes, which get |
23 |
fetched and verified. That could be done by calling a function in a |
24 |
new extra fetch phase, or by putting it additionally in some variable |
25 |
that an eclass accepts. |
26 |
|
27 |
You could instead put foo.ref in some other variable defined by the |
28 |
EAPI if you want portage to be able to handle it directly in the fetch |
29 |
phase. It would be like a special SRC_URI that gets around length |
30 |
issues and the need to store the manifests in the repo. That would |
31 |
lock down the defined behavior in a secure manner and now there is no |
32 |
extra phase. |
33 |
|
34 |
Either way though you still get a bazillion small files hosted |
35 |
somewhere and which need to be fetched, hopefully in an efficient |
36 |
manner. It is secure because everything is hashed and tied to the |
37 |
manifest in the repo, but as a single file. |
38 |
|
39 |
-- |
40 |
Rich |