On Sat, Oct 29, 2016 at 5:42 AM, Neil Bothwick <[email protected]> wrote:
> On Fri, 28 Oct 2016 23:53:03 -0700, Daniel Campbell wrote:
>
>> >     Anyone seeing this again? I've just sync'd to two servers in
>> > Australia, and then, for the hell of it, one in Canada and am getting
>> > it for:
>> >
>> > dev-libs/botan
>> > app-arch/tar
>> > media-video/libav
>> > app-crypt/qca
>> > net-print/cups-filters
>> >
>> > I suppose time will sort it out.....
>> >
>> >     Andrew
>> >
>> This shouldn't happen unless the distfiles aren't found, or someone (a
>> dev) didn't use repoman to commit, leaving an old Manifest around.
>
> It looks like repoman is the culprit
>
> https://bugs.gentoo.org/show_bug.cgi?id=598376
>

This is probably not the issue here, since Gentoo uses thin manifests
(there is nothing for repoman to update).  The manifests that are
causing the problem aren't created by regular Gentoo developers.
They're created by a script that runs as a part of the rsync mirror
process.

This is a fairly well-known problem that has been around for over a year.

You will only run into this problem if you use rsync to update your
repository, since the problem is created when creating the master
rsync mirror.  The original git repository doesn't contain the error,
and the git mirror on github doesn't mess with the Manifests.

The issue apparently has to do with Changelog generation.  In April
the Council gave Infra the option to stop generating Changelogs, which
would eliminate the problem.  I suspect those maintaining the scripts
prefer to keep them around, and I don't think anybody on the Council
has access to change the scripts.

I switched to git syncing eons ago, so I've never seen this bug.  I
recognize it has been a source of frustration for a lot of users, and
a bit of frustration for the Council, since there doesn't seem to be a
lot we can do to change it in practice.

zlg is of course right that these kinds of problems can also be caused
by maintainer failure to use repoman/etc or if an upstream distfile
changes.  If that is the problem then you'll see it no matter how you
sync your repo.  However, when you get a bunch of these after syncing
it is almost always a result of the mirror creation process.  I can't
remember the last time I saw a manifest error (granted, I'm also using
mgorny's stable mirror branch, which I think screens for these kinds
of errors).

While there can be some latency I do in general recommend syncing from
https://github.com/gentoo-mirror/gentoo .  This is a mirror of the
Gentoo developer git repository with two changes:
1.  Metadata is added to the mirror, which greatly speeds things up
compared to using the raw git repository (you can do this yourself, it
is one of the steps done by the rsync generation process as well, but
this one is not buggy).
2.  The default stable branch of this mirror screens for numerous
issues before accepting commits.  That means it is generally a little
behind the main branch (at this moment the main branch is 2 minutes
old, and the default stable branch is 20min old), but a lot of the
really annoying issues that are caused by devs skipping repoman won't
be seen.   Now, if a maintainer breaks a package then this mirror will
quickly get out of date until the problem is corrected, but Gentoo QA
gets warnings when this is happening and usually the maintainer is
being pestered or somebody else is fixing it.  I suspect this process
has probably reduced the error rate for everybody.  I have seen this
get a few days old though, which is something to keep in mind.

It does not contain Changelogs, though if you use it you'll have a
full history so you can just run git whatchanged <path> to get
something pretty close to a changelog.

To use it just put this in /etc/portage/repos.conf/gentoo.conf:
[DEFAULT]
main-repo = gentoo

[gentoo]
location = /usr/portage
sync-type = git
sync-uri = https://github.com/gentoo-mirror/gentoo.git
auto-sync = yes

If you want to git-sync from some other mirror, just change the url accordingly.

If you switch your mirror I suggest just renaming /usr/portage and
letting portage re-create it.

The other big benefit of git syncing is that if you sync every day it
is a lot faster.  If you sync less often it will become slower
compared to rsync.  git is much more efficient at finding what has
changed, but rsync is not burdened with transferring a complete
history.  If you only sync once every few months rsync will be a lot
faster.

-- 
Rich

Reply via email to