Gentoo Archives: gentoo-commits

From: "Paul Varner (fuzzyray)" <fuzzyray@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoolkit r567 - in trunk/src: . ekeyword2
Date: Fri, 01 May 2009 14:48:40
Message-Id: E1Lzu2X-00044W-AN@stork.gentoo.org
1 Author: fuzzyray
2 Date: 2009-05-01 14:48:36 +0000 (Fri, 01 May 2009)
3 New Revision: 567
4
5 Added:
6 trunk/src/ekeyword2/
7 trunk/src/ekeyword2/ekeyword2
8 Log:
9 Add ekeyword rewritten in python to repo
10
11 Added: trunk/src/ekeyword2/ekeyword2
12 ===================================================================
13 --- trunk/src/ekeyword2/ekeyword2 (rev 0)
14 +++ trunk/src/ekeyword2/ekeyword2 2009-05-01 14:48:36 UTC (rev 567)
15 @@ -0,0 +1,93 @@
16 +#!/usr/bin/python
17 +
18 +# Output like:
19 +# setuptools-0.6_rc9.ebuild
20 +# < KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd -x86 ~x86-fbsd"
21 +# ---
22 +# > KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd x86 ~x86-fbsd"
23 +
24 +from __future__ import with_statement
25 +from sys import argv
26 +from fnmatch import fnmatch
27 +from shutil import copyfile
28 +
29 +import re
30 +
31 +STABLE_KEYWORDS = frozenset((
32 + 'alpha',
33 + 'amd64',
34 + 'amd64-fbsd',
35 + 'arm',
36 + 'hppa',
37 + 'ia64',
38 + 'mips',
39 + 'm68k',
40 + 'ppc',
41 + 'ppc-macos',
42 + 'ppc64',
43 + 's390',
44 + 'sparc',
45 + 'sparc-fbsd',
46 + 'sh',
47 + 'x86',
48 + 'x86-fbsd',
49 +))
50 +TEST_KEYWORDS = frozenset(['~'+k for k in STABLE_KEYWORDS])
51 +KNOWN_KEYWORDS = STABLE_KEYWORDS | TEST_KEYWORDS
52 +
53 +kw_re = re.compile(r'KEYWORDS="([^"]*)"')
54 +ebuilds = set([x for x in argv[1:] if fnmatch(x, '*.ebuild')])
55 +pretend = not bool(set(('-p', '--pretend',)) - set(argv))
56 +keywords = frozenset(argv[1:]) - ebuilds - set(('-p', '--pretend'))
57 +
58 +if not ebuilds:
59 + print 'usage: ekeyword [-p|--pretend] [~] [[~|-]arch [[~|-]arch]...] ebuild [ebuild...]'
60 +
61 +for e in ebuilds:
62 + # TODO: error handling for file I/O
63 + kw = set(keywords)
64 + if not pretend:
65 + try:
66 + copyfile(e, e+'.orig')
67 + except IOError:
68 + print "Can't copy file %s. Check permissions." % e
69 + exit(1)
70 + try:
71 + with open(e) as c:
72 + ebuild = c.read()
73 + except IOError:
74 + print "Can't open file %s. Aborting." % e
75 + exit(1)
76 +
77 + orig = kw_re.search(ebuild)
78 + curkw = set(orig.groups()[0].split())
79 +
80 + if '~' in kw:
81 + kw.remove('~')
82 + curkw = set(['~'+k if k in STABLE_KEYWORDS else k for k in curkw])
83 +
84 + for k in kw:
85 + if k[0] == '-':
86 + curkw -= set(('~'+k[1:], k[1:],))
87 + elif k[0] == '~':
88 + curkw -= set((k[1:],))
89 + curkw |= set((k,))
90 + else:
91 + curkw -= set(('~'+k,))
92 + curkw |= set((k,))
93 +
94 + result = 'KEYWORDS="%s"' % ' '.join(sorted(curkw))
95 + if not pretend:
96 + try:
97 + with open(e, 'w') as rebuild:
98 + rebuild.write(kw_re.sub(result, ebuild))
99 + except IOError:
100 + print "Can't write file %s. Aborting." % e
101 + exit(1)
102 +
103 + unknown_keywords = curkw - KNOWN_KEYWORDS
104 + if unknown_keywords:
105 + print "\nWarning: Unknown keywords '%s'.\n" % ', '.join(sorted(unknown_keywords))
106 +
107 + print '<<< %s' % orig.group()
108 + print '>>> %s' % result
109
110
111 Property changes on: trunk/src/ekeyword2/ekeyword2
112 ___________________________________________________________________
113 Name: svn:executable
114 + *