repoman: Don't count git snapshots as live.
authorZac Medico <zmedico@gentoo.org>
Thu, 7 Oct 2010 19:45:08 +0000 (12:45 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 7 Oct 2010 19:45:08 +0000 (12:45 -0700)
This solves bug #339939 by searching for a EGIT_COMMIT variable
definition.

bin/repoman

index 1308ec717d7b7fe485521b26c648227101dc1288..e20accf10a5b4030d038efde9302ee8bda1a66f1 100755 (executable)
@@ -442,6 +442,8 @@ live_eclasses = frozenset([
        "tla",
 ])
 
+_git_snapshot_re = re.compile('^\s*EGIT_COMMIT=')
+
 suspect_rdepend = frozenset([
        "app-arch/cabextract",
        "app-arch/rpm2targz",
@@ -1466,6 +1468,19 @@ for x in scanlist:
                eapi = myaux["EAPI"]
                inherited = pkg.inherited
                live_ebuild = live_eclasses.intersection(inherited)
+               if len(live_ebuild) == 1 and next(iter(live_ebuild)) == 'git':
+                       is_snapshot = False
+                       f = codecs.open(_unicode_encode(full_path,
+                               encoding=_encodings['fs'], errors='strict'),
+                               mode='r', encoding=_encodings['repo.content'],
+                               errors='replace')
+                       for line in f:
+                               if _git_snapshot_re.match(line) is not None:
+                                       is_snapshot = True
+                                       break
+                       f.close()
+                       if is_snapshot:
+                               live_ebuild = frozenset()
 
                for k, v in myaux.items():
                        if not isinstance(v, basestring):