Gentoo Archives: gentoo-commits

From: "Paul Varner (fuzzyray)" <fuzzyray@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoolkit r549 - in trunk: . src/ekeyword
Date: Fri, 24 Apr 2009 16:37:13
Message-Id: E1LxOOk-0008Tf-5l@stork.gentoo.org
1 Author: fuzzyray
2 Date: 2009-04-24 16:37:09 +0000 (Fri, 24 Apr 2009)
3 New Revision: 549
4
5 Modified:
6 trunk/ChangeLog
7 trunk/src/ekeyword/ChangeLog
8 trunk/src/ekeyword/ekeyword
9 Log:
10 Fix ekeyword to handle multiline KEYWORDS
11
12 Modified: trunk/ChangeLog
13 ===================================================================
14 --- trunk/ChangeLog 2009-02-21 01:59:02 UTC (rev 548)
15 +++ trunk/ChangeLog 2009-04-24 16:37:09 UTC (rev 549)
16 @@ -1,3 +1,6 @@
17 +2009-04-24: Paul Varner <fuzzyray@g.o>
18 + * ekeyword: Fix to handle multiline KEYWORDS (Bug #267250)
19 +
20 2009-01-08: Paul Varner <fuzzyray@g.o>
21 * equery: Fix package.py to account for PORTDIR being a symbolic link
22 when checking if a package is in an overlay. (Bug #253968)
23
24 Modified: trunk/src/ekeyword/ChangeLog
25 ===================================================================
26 --- trunk/src/ekeyword/ChangeLog 2009-02-21 01:59:02 UTC (rev 548)
27 +++ trunk/src/ekeyword/ChangeLog 2009-04-24 16:37:09 UTC (rev 549)
28 @@ -1,3 +1,6 @@
29 +24 Apr 2009 Paul Varner <fuzzyray@g.o>
30 + * Handle multiline KEYWORDS
31 +
32 07 Jan 2009 Mike Frysinger <vapier@g.o>
33 * Support intended KEYWORDS
34 * Convert every instance of KEYWORDS in the file
35
36 Modified: trunk/src/ekeyword/ekeyword
37 ===================================================================
38 --- trunk/src/ekeyword/ekeyword 2009-02-21 01:59:02 UTC (rev 548)
39 +++ trunk/src/ekeyword/ekeyword 2009-04-24 16:37:09 UTC (rev 549)
40 @@ -41,66 +41,74 @@
41 select O;
42
43 while (<I>) {
44 - /^\s*KEYWORDS=/ or print, next;
45 + if (/^\s*KEYWORDS=/) {
46
47 - # extract the quoted section from KEYWORDS
48 - (my $quoted = $_) =~ s/^.*?["'](.*?)["'].*/$1/s;
49 + # extract the quoted section from KEYWORDS
50 + while (not /^KEYWORDS=["'].*?["']/) {
51 + chomp;
52 + my $next = <I>;
53 + $_ = join "", $_, $next;
54 + }
55 + (my $quoted = $_) =~ s/^.*?["'](.*?)["'].*/$1/s;
56
57 - # replace -* with -STAR for our convenience below
58 - $quoted =~ s/-\*/-STAR/;
59 + # replace -* with -STAR for our convenience below
60 + $quoted =~ s/-\*/-STAR/;
61
62 - for my $k (@kw) {
63 - my ($leader, $arch, $star) = ($k =~ /$kw_re/o);
64 + for my $k (@kw) {
65 + my ($leader, $arch, $star) = ($k =~ /$kw_re/o);
66
67 - # handle -* and ^*
68 - if (defined $star) {
69 - $leader = substr $star,0,1;
70 - $arch = 'STAR';
71 - }
72 -
73 - # remove keywords
74 - if ($leader eq '^') {
75 - if ($arch eq 'all') {
76 - $quoted = '';
77 - } else {
78 - $quoted =~ s/[-~]?\Q$arch\E\b//;
79 + # handle -* and ^*
80 + if (defined $star) {
81 + $leader = substr $star,0,1;
82 + $arch = 'STAR';
83 }
84
85 - # add or modify keywords
86 - } else {
87 - if ($arch eq 'all') {
88 - # modify all non-masked keywords in the list
89 - $quoted =~ s/(^|\s)~?(?=\w)/$1$leader/g;
90 + # remove keywords
91 + if ($leader eq '^') {
92 + if ($arch eq 'all') {
93 + $quoted = '';
94 + } else {
95 + $quoted =~ s/[-~]?\Q$arch\E\b//;
96 + }
97 +
98 + # add or modify keywords
99 } else {
100 - # modify or add keyword
101 - unless ($quoted =~ s/[-~]?\Q$arch\E(\s|$)/$leader$arch$1/) {
102 - # modification failed, need to add
103 - if ($arch eq 'STAR') {
104 - $quoted = "$leader$arch $quoted";
105 - } else {
106 - $quoted .= " $leader$arch";
107 + if ($arch eq 'all') {
108 + # modify all non-masked keywords in the list
109 + $quoted =~ s/(^|\s)~?(?=\w)/$1$leader/g;
110 + } else {
111 + # modify or add keyword
112 + unless ($quoted =~ s/[-~]?\Q$arch\E(\s|$)/$leader$arch$1/) {
113 + # modification failed, need to add
114 + if ($arch eq 'STAR') {
115 + $quoted = "$leader$arch $quoted";
116 + } else {
117 + $quoted .= " $leader$arch";
118 + }
119 }
120 }
121 }
122 }
123 - }
124
125 - # replace -STAR with -*
126 - $quoted =~ s/-STAR\b/-*/;
127 + # replace -STAR with -*
128 + $quoted =~ s/-STAR\b/-*/;
129
130 - # sort keywords and fix spacing
131 - $quoted = join " ", sort {
132 - (my $sa = $a) =~ s/^\W//;
133 - (my $sb = $b) =~ s/^\W//;
134 - return -1 if $sa eq '*';
135 - return +1 if $sb eq '*';
136 - $sa cmp $sb;
137 - } split " ", $quoted;
138 + # sort keywords and fix spacing
139 + $quoted = join " ", sort {
140 + (my $sa = $a) =~ s/^\W//;
141 + (my $sb = $b) =~ s/^\W//;
142 + return -1 if $sa eq '*';
143 + return +1 if $sb eq '*';
144 + $sa cmp $sb;
145 + } split " ", $quoted;
146
147 - # re-insert quoted to KEYWORDS
148 - s/(["']).*?["']/$1$quoted$1/;
149 + # re-insert quoted to KEYWORDS
150 + s/(["']).*?["']/$1$quoted$1/;
151
152 - print $_ or die "Can't write $f.new: $!\n";
153 + print $_ or die "Can't write $f.new: $!\n";
154 + } else {
155 + print, next;
156 + }
157 }
158
159 close I;
160 @@ -109,7 +117,7 @@
161
162 system "diff -U 0 $f $f.new | sed -n '/KEYWORDS=/s:^: :p'";
163 rename "$f.new", "$f" or die "Can't rename: $!\n";
164 - $files++;
165 + $files++;
166 }
167
168 if ($files == 0) {