1 |
On 11/06/2017 07:27 AM, Michał Górny wrote: |
2 |
> @@ -148,15 +147,21 @@ class Manifest(object): |
3 |
> self.pkgdir = _unicode_decode(pkgdir).rstrip(os.sep) + os.sep |
4 |
> self.fhashdict = {} |
5 |
> self.hashes = set() |
6 |
> + self.required_hashes = set() |
7 |
> |
8 |
> if hashes is None: |
9 |
> hashes = MANIFEST2_HASH_DEFAULTS |
10 |
> + if required_hashes is None: |
11 |
> + required_hashes = hashes |
12 |
> |
13 |
> self.hashes.update(hashes) |
14 |
> self.hashes.difference_update(hashname for hashname in \ |
15 |
> list(self.hashes) if hashname not in get_valid_checksum_keys()) |
16 |
> self.hashes.add("size") |
17 |
> - self.hashes.add(MANIFEST2_REQUIRED_HASH) |
18 |
> + |
19 |
> + self.required_hashes.update(required_hashes) |
20 |
> + self.required_hashes.intersection_update(self.hashes) |
21 |
> + |
22 |
|
23 |
Requiring that presence of digests for all manifest-hashes can be |
24 |
problematic, because when we extend manifest-hashes it means that nobody |
25 |
can regenerate a particular manifest without fetching *all* distfiles |
26 |
referenced in the Manifest. It's much more friendly if we generate the |
27 |
missing digests when the distfiles happen to be available in DISTDIR, |
28 |
which is how the portage currently behaves. |
29 |
-- |
30 |
Thanks, |
31 |
Zac |