»Q« <[email protected]> wrote:
>
>> $ grep KEYWORDS /usr/portage/metadata/md5-cache/dev-perl/Pango-1.224.0-r1
>> KEYWORDS=~alpha ...
>>
>> $ grep KEYWORDS /usr/portage/dev-perl/Pango/Pango-1.224.0-r1.ebuild
>> KEYWORDS="alpha ..."

This seems to be a race issue in the gentoo infrastructure:
Calculation of the metadata can need a long time.
Apparently, this happens on the same directory into which
fresh ebuilds are fetched so that the whole data can be
inconsistent in some cases.

Portage apparently verifies with a checksum whether metadata is up-to-date,
and if not, it calculates the metadata locally, so it detects the race
and "fixes" it locally. Eix does not use this mechanism by default,
because checksumming for the whole tree slows down considerably,
and execution of ebuilds (to calculate the metadata) is always
very slow and a security risk: Note that in contrast to portage,
eix has to do it for every ebuild in the tree (portage only does
it on an as-needed basis).

It should be possible to configure eix to behave this way, too
(though I hardly ever tested it.)
>From memory, I guess that putting one of

PORTDIR_CACHE_METHOD="parse#metadata-md5#assign"
PORTDIR_CACHE_METHOD="parse|ebuild*#metadata-md5#assign"
PORTDIR_CACHE_METHOD="ebuild*#metadata-md5"
PORTDIR_CACHE_METHOD="ebuild#metadata-md5"

in /etc/eixrc/  should do (ordered from
fastest/still safe but not very reliable to
slowest/least secure but completely reliable).
(Maybe the appendix [the part after #] is autoamtic by
CACHE_METHOD_PARSE; I do not recall in the moment whether
CACHE_METHODS_PARSE applies to PORTDIR_CACHE_METHOD as well.)

> I ran eix-sync again -- D'oh! I meant not to do that in case waiting
> would help answer my question -- and now the KEYWORDS in
> metadata/md5-cache/dev-perl/Pango-1.224.0-r1r1 matches the KEYWORDS in
> the ebuild, and all is healed again.

Yes, meanwhile the metadata generation on the gentoo infrastructure
had probably been executed once more. It might be that the metadata for
some other ebuild is then out of sync.

> I would like to know how the metadata cache gets out of step with the
> info in the ebuilds in the first place, how to prevent that

Except generating the metadata by yourself there is not much you
can do.
Alterantively, file a bug to infra, 'though I am not sure whether
they will consider it as a bug, since portage has means to linger
the effect.


Reply via email to