1 |
On Sat, Oct 29, 2016 at 5:42 AM, Neil Bothwick <neil@××××××××××.uk> wrote: |
2 |
> On Fri, 28 Oct 2016 23:53:03 -0700, Daniel Campbell wrote: |
3 |
> |
4 |
>> > Anyone seeing this again? I've just sync'd to two servers in |
5 |
>> > Australia, and then, for the hell of it, one in Canada and am getting |
6 |
>> > it for: |
7 |
>> > |
8 |
>> > dev-libs/botan |
9 |
>> > app-arch/tar |
10 |
>> > media-video/libav |
11 |
>> > app-crypt/qca |
12 |
>> > net-print/cups-filters |
13 |
>> > |
14 |
>> > I suppose time will sort it out..... |
15 |
>> > |
16 |
>> > Andrew |
17 |
>> > |
18 |
>> This shouldn't happen unless the distfiles aren't found, or someone (a |
19 |
>> dev) didn't use repoman to commit, leaving an old Manifest around. |
20 |
> |
21 |
> It looks like repoman is the culprit |
22 |
> |
23 |
> https://bugs.gentoo.org/show_bug.cgi?id=598376 |
24 |
> |
25 |
|
26 |
This is probably not the issue here, since Gentoo uses thin manifests |
27 |
(there is nothing for repoman to update). The manifests that are |
28 |
causing the problem aren't created by regular Gentoo developers. |
29 |
They're created by a script that runs as a part of the rsync mirror |
30 |
process. |
31 |
|
32 |
This is a fairly well-known problem that has been around for over a year. |
33 |
|
34 |
You will only run into this problem if you use rsync to update your |
35 |
repository, since the problem is created when creating the master |
36 |
rsync mirror. The original git repository doesn't contain the error, |
37 |
and the git mirror on github doesn't mess with the Manifests. |
38 |
|
39 |
The issue apparently has to do with Changelog generation. In April |
40 |
the Council gave Infra the option to stop generating Changelogs, which |
41 |
would eliminate the problem. I suspect those maintaining the scripts |
42 |
prefer to keep them around, and I don't think anybody on the Council |
43 |
has access to change the scripts. |
44 |
|
45 |
I switched to git syncing eons ago, so I've never seen this bug. I |
46 |
recognize it has been a source of frustration for a lot of users, and |
47 |
a bit of frustration for the Council, since there doesn't seem to be a |
48 |
lot we can do to change it in practice. |
49 |
|
50 |
zlg is of course right that these kinds of problems can also be caused |
51 |
by maintainer failure to use repoman/etc or if an upstream distfile |
52 |
changes. If that is the problem then you'll see it no matter how you |
53 |
sync your repo. However, when you get a bunch of these after syncing |
54 |
it is almost always a result of the mirror creation process. I can't |
55 |
remember the last time I saw a manifest error (granted, I'm also using |
56 |
mgorny's stable mirror branch, which I think screens for these kinds |
57 |
of errors). |
58 |
|
59 |
While there can be some latency I do in general recommend syncing from |
60 |
https://github.com/gentoo-mirror/gentoo . This is a mirror of the |
61 |
Gentoo developer git repository with two changes: |
62 |
1. Metadata is added to the mirror, which greatly speeds things up |
63 |
compared to using the raw git repository (you can do this yourself, it |
64 |
is one of the steps done by the rsync generation process as well, but |
65 |
this one is not buggy). |
66 |
2. The default stable branch of this mirror screens for numerous |
67 |
issues before accepting commits. That means it is generally a little |
68 |
behind the main branch (at this moment the main branch is 2 minutes |
69 |
old, and the default stable branch is 20min old), but a lot of the |
70 |
really annoying issues that are caused by devs skipping repoman won't |
71 |
be seen. Now, if a maintainer breaks a package then this mirror will |
72 |
quickly get out of date until the problem is corrected, but Gentoo QA |
73 |
gets warnings when this is happening and usually the maintainer is |
74 |
being pestered or somebody else is fixing it. I suspect this process |
75 |
has probably reduced the error rate for everybody. I have seen this |
76 |
get a few days old though, which is something to keep in mind. |
77 |
|
78 |
It does not contain Changelogs, though if you use it you'll have a |
79 |
full history so you can just run git whatchanged <path> to get |
80 |
something pretty close to a changelog. |
81 |
|
82 |
To use it just put this in /etc/portage/repos.conf/gentoo.conf: |
83 |
[DEFAULT] |
84 |
main-repo = gentoo |
85 |
|
86 |
[gentoo] |
87 |
location = /usr/portage |
88 |
sync-type = git |
89 |
sync-uri = https://github.com/gentoo-mirror/gentoo.git |
90 |
auto-sync = yes |
91 |
|
92 |
If you want to git-sync from some other mirror, just change the url accordingly. |
93 |
|
94 |
If you switch your mirror I suggest just renaming /usr/portage and |
95 |
letting portage re-create it. |
96 |
|
97 |
The other big benefit of git syncing is that if you sync every day it |
98 |
is a lot faster. If you sync less often it will become slower |
99 |
compared to rsync. git is much more efficient at finding what has |
100 |
changed, but rsync is not burdened with transferring a complete |
101 |
history. If you only sync once every few months rsync will be a lot |
102 |
faster. |
103 |
|
104 |
-- |
105 |
Rich |