Gentoo Archives: gentoo-commits

From: "André Erdmann" <dywi@×××××××.de>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/R_overlay:master commit in: /
Date: Mon, 09 Jul 2012 17:19:38
Message-Id: 1341852264.78ca6a4c4a2cad2cbd3281ec9cd5ebfe008b799a.dywi@gentoo
1 commit: 78ca6a4c4a2cad2cbd3281ec9cd5ebfe008b799a
2 Author: André Erdmann <dywi <AT> mailerd <DOT> de>
3 AuthorDate: Mon Jul 9 16:44:24 2012 +0000
4 Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
5 CommitDate: Mon Jul 9 16:44:24 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=78ca6a4c
7
8 find_invalid.py: verify overlay creation
9
10 new file: find_invalid.py
11
12 ---
13 find_invalid.py | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
14 1 files changed, 84 insertions(+), 0 deletions(-)
15
16 diff --git a/find_invalid.py b/find_invalid.py
17 new file mode 100755
18 index 0000000..95a3876
19 --- /dev/null
20 +++ b/find_invalid.py
21 @@ -0,0 +1,84 @@
22 +#!/usr/bin/python
23 +# scans a directory for bad overlay creation results:
24 +# * empty dirs
25 +# * missing metadata/Manifest)
26 +# In contrast to repoman, it does verify that overlay creation succeeded,
27 +# not that every ebuild is correct.
28 +
29 +import os
30 +import sys
31 +
32 +MISSING_METADATA = set()
33 +MISSING_MANIFEST = set()
34 +EMPTY = set()
35 +
36 +no_metadata = MISSING_METADATA.add
37 +no_manifest = MISSING_MANIFEST.add
38 +empty = EMPTY.add
39 +
40 +if len ( sys.argv ) != 2:
41 + sys.stderr.write ( "usage: {} <dir>\n".format ( sys.argv [0] ) )
42 + sys.exit ( os.EX_USAGE )
43 +
44 +topdir = os.path.abspath ( sys.argv [1] )
45 +
46 +if not os.path.isdir ( topdir ):
47 + sys.stderr.write ( "{!r} isn't a directory!\n".format ( topdir ) )
48 + sys.exit ( os.EX_USAGE )
49 +
50 +def ebuild_check ( filenames ):
51 + man = False
52 + mtd = False
53 + eb = False
54 + for f in filenames:
55 + if f.endswith ( '.ebuild' ):
56 + eb = True
57 +
58 + elif f == 'metadata.xml':
59 + mtd = True
60 +
61 + elif f == 'Manifest':
62 + man = True
63 +
64 + if eb and mtd and man:
65 + return ( True, True, True )
66 +
67 + return ( eb, man, mtd )
68 +
69 +
70 +for dpath, dnames, fnames in os.walk ( topdir ):
71 + here = dpath.replace ( topdir, "<overlay root>" )
72 +
73 + e = ebuild_check ( fnames )
74 +
75 + if e[0]:
76 +
77 + if not e[1]:
78 + # metadata missing
79 + no_metadata ( here )
80 +
81 + if not e[2]:
82 + # manifest missing
83 + no_manifest ( here )
84 +
85 + elif len ( dnames ) == 0 and len ( fnames ) == 0:
86 + empty ( here )
87 +
88 +
89 +ALL_OK = not ( MISSING_METADATA or MISSING_MANIFEST or EMPTY )
90 +
91 +if MISSING_METADATA:
92 + print ( "*** The following ebuild directories have no metadata file:" )
93 + print ( '\n'.join ( sorted ( MISSING_METADATA ) ) )
94 +
95 +if MISSING_MANIFEST:
96 + print ( "*** The following ebuild directories have no Manifest file:" )
97 + print ( '\n'.join ( sorted ( MISSING_MANIFEST ) ) )
98 +
99 +if EMPTY:
100 + print ( "*** The following dirs are empty:" )
101 + print ( '\n'.join ( sorted ( EMPTY ) ) )
102 +
103 +
104 +if ALL_OK:
105 + print ( "everything looks ok" )