More fault tollerant metadata parsing
This fixes parsing metadata for repositories where the filelists does not contain package entries like for gitlab repos.
there you find a filelists document which contains only
< ? xml version="1.0" encoding="UTF-8" ? > < filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="0" / >
Updated by dalley over 2 years ago
- Version deleted (
I'm closing the PR since we'd like to get rid of the current implementation of "iterative" parsing entirely as soon as we are able to do so.
Regarding the issue, DNF works, with the repos, which makes it kind of de-facto valid, although I've never seen any repository tool create metadata that looks like this before.
My best guess for what packages.gitlab.com is using for this is artifactory, but again, I'm not totally sure. Their docs say:
Indexing the File List
The filelists.xml metadata file of an RPM repository contains a list of all the files in each package hosted in the repository. When the repository contains many packages, reindexing this file as a result of interactions with the YUM client can be resource intensive causing a degradation of performance. Therefore, from version 5.4, reindexing this file is initially disabled when an RPM repository is created. To enable indexing filelists.xml, set the Enable File List Indexing checkbox.
Note that the filelists.xml metadata file for a virtual repository may not be complete (i.e. it may not actually list all the files it aggregates) if any of the repositories it aggregates do not have file listing enabled. Note that if indexing of the filelists.xml file is disabled, it is not possible to search for a file using the YUM client to determine which package wrote the queried file to the filesystem.
I actually don't think this is universally true, it seems like perhaps it came out of some more recent developments and isn't applicable to older versions of yum, but nonetheless we probably do want to attempt to support it.
A little more info here - following some of the links here it looks like a few years ago downloading filelists was made optional: https://github.com/coreos/rpm-ostree/issues/1127#issue-278715219