Not sure why repoman attempts to fetch this file from our mirrors, CC-ing dev-portage@. >>> Downloading 'http://ftp.fi.muni.cz/pub/linux/gentoo/distfiles/setup_descent_2.1.0.8.exe' --2017-12-10 17:17:53-- http://ftp.fi.muni.cz/pub/linux/gentoo/distfiles/setup_descent_2.1.0.8.exe Resolving ftp.fi.muni.cz (ftp.fi.muni.cz)... 147.251.48.205, 2001:718:801:230::cd Connecting to ftp.fi.muni.cz (ftp.fi.muni.cz)|147.251.48.205|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2017-12-10 17:17:54 ERROR 404: Not Found. !!! Couldn't download 'setup_descent_2.1.0.8.exe'. Aborting.
I don't think repoman looks at the RESTRICT variable for this. If the source is not found in distfiles, then it tries to download it normally mirrors first. RESTRICT="bindist !cdinstall? ( fetch )" So either run a regex on the RESTRICT variable looking for fetch in any way or using more portage api code top parse the restrict state.
Couldn't it just skip plain filenames in SRC_URI?
The digestgen function is too greedy about fetching files here: if required_hash_types.difference(myhashes): missing_files.append(myfile) Once it decides to fetch a file there, it's going to report an error if the file fails to fetch.
The digestgen function became too greedy in this hunk from commit e1de82ebe6ef2dbaab7b56bcf2bb6ff75743a000: @@ -72,7 +72,7 @@ def digestgen(myarchives=None, mysettings=None, myportdb=None): # exist before and after the transition. required_hash_types = set() required_hash_types.add("size") - required_hash_types.add(MANIFEST2_REQUIRED_HASH) + required_hash_types.update(repo_required_hashes)
(In reply to Zac Medico from comment #4) > The digestgen function became too greedy in this hunk from commit > e1de82ebe6ef2dbaab7b56bcf2bb6ff75743a000: > > @@ -72,7 +72,7 @@ def digestgen(myarchives=None, mysettings=None, > myportdb=None): > # exist before and after the transition. > required_hash_types = set() > required_hash_types.add("size") > - required_hash_types.add(MANIFEST2_REQUIRED_HASH) > + required_hash_types.update(repo_required_hashes) Actually, I just checked and repo_required_hashes only contains SHA512 here, which is good. @mgorny, how did you trigger the fetch? Did you remove the existing Manifest file or DIST entry?
I've changed required-hashes to force it to update everything. So attempting to fetch distfiles for this package was fully desired. However, this is not the same behavior as Portage exhibited for other fetch-restricted packages (in which case it didn't attempt fetching from mirrors).
Can this be fixed with EAPI 8 now? Or it's a Portage bug? I'm a bit confused.