1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
|
package do_common;
use warnings;
use strict;
BEGIN {
use Exporter;
our @ISA = qw/Exporter/;
our @EXPORT = qw/&read_config $basedir $prefix
%mod_specific_configuration @all_modules/;
}
#
##
###
#### CONFIGURATION
###
##
#
# The location of the 'git' directory
our $basedir = $ENV{'HOME'} . '/git';
# The location you want to install to
our $prefix = '/usr/local';
# Package-specific arguments to the 'configure' script
our %mod_specific_configuration = (
'app/xdm' => '--with-xft=no',
'app/compiz' => '--enable-gtk',
'lib/libdrm' => '--enable-radeon-experimental-api --enable-nouveau-experimental-api',
'lib/libX11' => '--with-xcb=yes',
'./xserver' => "--enable-xquartz=no --enable-dmx=no --enable-xace=yes --enable-xselinux=yes --enable-xcsecurity=yes --enable-kdrive=no --enable-xvfb=no --enable-xephyr=yes --enable-xfbdev=yes --enable-dri2=yes --enable-xnest=no",
'doc/xorg-docs' => "--enable-ps=no --enable-txt=no --enable-html=yes",
'driver/xf86-video-vesa' => "--enable-pciaccess=yes",
'xcb/libxcb' => "--enable-selinux=yes --enable-xinput=yes",
'xcb/xpyb' => "--enable-xselinux=yes --enable-xinput=yes"
);
our @all_modules = qw|
driver/xf86-input-acecad xorg/driver/xf86-input-acecad
driver/xf86-input-aiptek xorg/driver/xf86-input-aiptek
driver/xf86-input-calcomp xorg/driver/xf86-input-calcomp
driver/xf86-input-citron xorg/driver/xf86-input-citron
driver/xf86-input-digitaledge xorg/driver/xf86-input-digitaledge
driver/xf86-input-dmc xorg/driver/xf86-input-dmc
driver/xf86-input-dynapro xorg/driver/xf86-input-dynapro
driver/xf86-input-elo2300 xorg/driver/xf86-input-elo2300
driver/xf86-input-elographics xorg/driver/xf86-input-elographics
driver/xf86-input-evdev xorg/driver/xf86-input-evdev
driver/xf86-input-fpit xorg/driver/xf86-input-fpit
driver/xf86-input-hyperpen xorg/driver/xf86-input-hyperpen
driver/xf86-input-jamstudio xorg/driver/xf86-input-jamstudio
driver/xf86-input-joystick xorg/driver/xf86-input-joystick
driver/xf86-input-keyboard xorg/driver/xf86-input-keyboard
driver/xf86-input-magellan xorg/driver/xf86-input-magellan
driver/xf86-input-magictouch xorg/driver/xf86-input-magictouch
driver/xf86-input-microtouch xorg/driver/xf86-input-microtouch
driver/xf86-input-mouse xorg/driver/xf86-input-mouse
driver/xf86-input-mutouch xorg/driver/xf86-input-mutouch
driver/xf86-input-palmax xorg/driver/xf86-input-palmax
driver/xf86-input-penmount xorg/driver/xf86-input-penmount
driver/xf86-input-sample xorg/driver/xf86-input-sample
driver/xf86-input-spaceorb xorg/driver/xf86-input-spaceorb
driver/xf86-input-summa xorg/driver/xf86-input-summa
driver/xf86-input-synaptics xorg/driver/xf86-input-synaptics
driver/xf86-input-tek4957 xorg/driver/xf86-input-tek4957
driver/xf86-input-ur98 xorg/driver/xf86-input-ur98
driver/xf86-input-vmmouse xorg/driver/xf86-input-vmmouse
driver/xf86-input-void xorg/driver/xf86-input-void
driver/xf86-video-apm xorg/driver/xf86-video-apm
driver/xf86-video-ark xorg/driver/xf86-video-ark
driver/xf86-video-ast xorg/driver/xf86-video-ast
driver/xf86-video-ati xorg/driver/xf86-video-ati
driver/xf86-video-chips xorg/driver/xf86-video-chips
driver/xf86-video-cirrus xorg/driver/xf86-video-cirrus
driver/xf86-video-cyrix xorg/driver/xf86-video-cyrix
driver/xf86-video-dummy xorg/driver/xf86-video-dummy
driver/xf86-video-fbdev xorg/driver/xf86-video-fbdev
driver/xf86-video-geode xorg/driver/xf86-video-geode
driver/xf86-video-glide xorg/driver/xf86-video-glide
driver/xf86-video-glint xorg/driver/xf86-video-glint
driver/xf86-video-i128 xorg/driver/xf86-video-i128
driver/xf86-video-i740 xorg/driver/xf86-video-i740
driver/xf86-video-impact xorg/driver/xf86-video-impact
driver/xf86-video-imstt xorg/driver/xf86-video-imstt
driver/xf86-video-intel xorg/driver/xf86-video-intel
driver/xf86-video-mga xorg/driver/xf86-video-mga
driver/xf86-video-neomagic xorg/driver/xf86-video-neomagic
driver/xf86-video-newport xorg/driver/xf86-video-newport
driver/xf86-video-nouveau nouveau/xf86-video-nouveau
driver/xf86-video-nsc xorg/driver/xf86-video-nsc
driver/xf86-video-nv xorg/driver/xf86-video-nv
driver/xf86-video-radeonhd xorg/driver/xf86-video-radeonhd
driver/xf86-video-rendition xorg/driver/xf86-video-rendition
driver/xf86-video-s3 xorg/driver/xf86-video-s3
driver/xf86-video-s3virge xorg/driver/xf86-video-s3virge
driver/xf86-video-savage xorg/driver/xf86-video-savage
driver/xf86-video-siliconmotion xorg/driver/xf86-video-siliconmotion
driver/xf86-video-sis xorg/driver/xf86-video-sis
driver/xf86-video-sisusb xorg/driver/xf86-video-sisusb
driver/xf86-video-sunbw2 xorg/driver/xf86-video-sunbw2
driver/xf86-video-suncg14 xorg/driver/xf86-video-suncg14
driver/xf86-video-suncg3 xorg/driver/xf86-video-suncg3
driver/xf86-video-suncg6 xorg/driver/xf86-video-suncg6
driver/xf86-video-sunffb xorg/driver/xf86-video-sunffb
driver/xf86-video-sunleo xorg/driver/xf86-video-sunleo
driver/xf86-video-suntcx xorg/driver/xf86-video-suntcx
driver/xf86-video-tdfx xorg/driver/xf86-video-tdfx
driver/xf86-video-tga xorg/driver/xf86-video-tga
driver/xf86-video-trident xorg/driver/xf86-video-trident
driver/xf86-video-tseng xorg/driver/xf86-video-tseng
driver/xf86-video-v4l xorg/driver/xf86-video-v4l
driver/xf86-video-vermilion xorg/driver/xf86-video-vermilion
driver/xf86-video-vesa xorg/driver/xf86-video-vesa
driver/xf86-video-vga xorg/driver/xf86-video-vga
driver/xf86-video-via xorg/driver/xf86-video-via
driver/xf86-video-vmware xorg/driver/xf86-video-vmware
driver/xf86-video-voodoo xorg/driver/xf86-video-voodoo
driver/xf86-video-wsfb xorg/driver/xf86-video-wsfb
driver/xf86-video-xgi xorg/driver/xf86-video-xgi
driver/xf86-video-xgixp xorg/driver/xf86-video-xgixp
font/adobe-100dpi xorg/font/adobe-100dpi
font/adobe-75dpi xorg/font/adobe-75dpi
font/adobe-utopia-100dpi xorg/font/adobe-utopia-100dpi
font/adobe-utopia-75dpi xorg/font/adobe-utopia-75dpi
font/adobe-utopia-type1 xorg/font/adobe-utopia-type1
font/alias xorg/font/alias
font/arabic-misc xorg/font/arabic-misc
font/bh-100dpi xorg/font/bh-100dpi
font/bh-75dpi xorg/font/bh-75dpi
font/bh-lucidatypewriter-100dpi xorg/font/bh-lucidatypewriter-100dpi
font/bh-lucidatypewriter-75dpi xorg/font/bh-lucidatypewriter-75dpi
font/bh-ttf xorg/font/bh-ttf
font/bh-type1 xorg/font/bh-type1
font/bitstream-100dpi xorg/font/bitstream-100dpi
font/bitstream-75dpi xorg/font/bitstream-75dpi
font/bitstream-speedo xorg/font/bitstream-speedo
font/bitstream-type1 xorg/font/bitstream-type1
font/cronyx-cyrillic xorg/font/cronyx-cyrillic
font/cursor-misc xorg/font/cursor-misc
font/daewoo-misc xorg/font/daewoo-misc
font/dec-misc xorg/font/dec-misc
font/encodings xorg/font/encodings
font/ibm-type1 xorg/font/ibm-type1
font/isas-misc xorg/font/isas-misc
font/jis-misc xorg/font/jis-misc
font/micro-misc xorg/font/micro-misc
font/misc-cyrillic xorg/font/misc-cyrillic
font/misc-ethiopic xorg/font/misc-ethiopic
font/misc-meltho xorg/font/misc-meltho
font/misc-misc xorg/font/misc-misc
font/mutt-misc xorg/font/mutt-misc
font/schumacher-misc xorg/font/schumacher-misc
font/screen-cyrillic xorg/font/screen-cyrillic
font/sony-misc xorg/font/sony-misc
font/sun-misc xorg/font/sun-misc
font/util xorg/font/util
font/winitzki-cyrillic xorg/font/winitzki-cyrillic
font/xfree86-type1 xorg/font/xfree86-type1
lib/libpciaccess xorg/lib/libpciaccess
lib/libAppleWM xorg/lib/libAppleWM
lib/libdmx xorg/lib/libdmx
lib/libfontenc xorg/lib/libfontenc
lib/libFS xorg/lib/libFS
lib/libICE xorg/lib/libICE
lib/liboldX xorg/lib/liboldX
lib/libSM xorg/lib/libSM
lib/libWindowsWM xorg/lib/libWindowsWM
lib/libX11 xorg/lib/libX11
lib/libXau xorg/lib/libXau
lib/libXaw xorg/lib/libXaw
lib/libXcomposite xorg/lib/libXcomposite
lib/libXcursor xorg/lib/libXcursor
lib/libXdamage xorg/lib/libXdamage
lib/libXdmcp xorg/lib/libXdmcp
lib/libXevie xorg/lib/libXevie
lib/libXext xorg/lib/libXext
lib/libXfixes xorg/lib/libXfixes
lib/libXfont xorg/lib/libXfont
lib/libXfontcache xorg/lib/libXfontcache
lib/libXft xorg/lib/libXft
lib/libXi xorg/lib/libXi
lib/libXinerama xorg/lib/libXinerama
lib/libxkbfile xorg/lib/libxkbfile
lib/libxkbui xorg/lib/libxkbui
lib/libXmu xorg/lib/libXmu
lib/libXp xorg/lib/libXp
lib/libXpm xorg/lib/libXpm
lib/libXprintAppUtil xorg/lib/libXprintAppUtil
lib/libXprintUtil xorg/lib/libXprintUtil
lib/libXrandr xorg/lib/libXrandr
lib/libXrender xorg/lib/libXrender
lib/libXRes xorg/lib/libXRes
lib/libXScrnSaver xorg/lib/libXScrnSaver
lib/libXt xorg/lib/libXt
lib/libxtrans xorg/lib/libxtrans
lib/libXTrap xorg/lib/libXTrap
lib/libXtst xorg/lib/libXtst
lib/libXv xorg/lib/libXv
lib/libXvMC xorg/lib/libXvMC
lib/libXxf86dga xorg/lib/libXxf86dga
lib/libXxf86misc xorg/lib/libXxf86misc
lib/libXxf86rush xorg/lib/libXxf86rush
lib/libXxf86vm xorg/lib/libXxf86vm
proto/applewmproto xorg/proto/applewmproto
proto/bigreqsproto xorg/proto/bigreqsproto
proto/compositeproto xorg/proto/compositeproto
proto/damageproto xorg/proto/damageproto
proto/dmxproto xorg/proto/dmxproto
proto/dri2proto xorg/proto/dri2proto
proto/evieproto xorg/proto/evieproto
proto/fixesproto xorg/proto/fixesproto
proto/fontcacheproto xorg/proto/fontcacheproto
proto/fontsproto xorg/proto/fontsproto
proto/glproto xorg/proto/glproto
proto/inputproto xorg/proto/inputproto
proto/kbproto xorg/proto/kbproto
proto/panoramixproto xorg/proto/panoramixproto
proto/pmproto xorg/proto/pmproto
proto/printproto xorg/proto/printproto
proto/randrproto xorg/proto/randrproto
proto/recordproto xorg/proto/recordproto
proto/renderproto xorg/proto/renderproto
proto/resourceproto xorg/proto/resourceproto
proto/scrnsaverproto xorg/proto/scrnsaverproto
proto/trapproto xorg/proto/trapproto
proto/videoproto xorg/proto/videoproto
proto/windowswmproto xorg/proto/windowswmproto
proto/x11proto xorg/proto/x11proto
proto/xcmiscproto xorg/proto/xcmiscproto
proto/xextproto xorg/proto/xextproto
proto/xf86bigfontproto xorg/proto/xf86bigfontproto
proto/xf86dgaproto xorg/proto/xf86dgaproto
proto/xf86driproto xorg/proto/xf86driproto
proto/xf86miscproto xorg/proto/xf86miscproto
proto/xf86rushproto xorg/proto/xf86rushproto
proto/xf86vidmodeproto xorg/proto/xf86vidmodeproto
proto/xineramaproto xorg/proto/xineramaproto
util/cf xorg/util/cf
util/gccmakedep xorg/util/gccmakedep
util/imake xorg/util/imake
util/install-check xorg/util/install-check
util/lndir xorg/util/lndir
util/macros xorg/util/macros
util/makedepend xorg/util/makedepend
util/modular xorg/util/modular
util/xmkmf xorg/util/xmkmf
data/bitmaps xorg/data/bitmaps
data/cursors xorg/data/cursors
doc/xorg-docs xorg/doc/xorg-docs
doc/xorg-sgml-doctools xorg/doc/xorg-sgml-doctools
app/compiz xorg/app/compiz
xcb/pthread-stubs xcb/pthread-stubs
xcb/proto xcb/proto
xcb/libxcb xcb/libxcb
xcb/xpyb xcb/xpyb
app/xkeyboard-config xkeyboard-config
lib/libpixman pixman
lib/libdrm mesa/drm
mesa mesa/mesa
xserver xorg/xserver
|;
# END CONFIGURATION
# Returns array of [directory, options]
sub read_config {
my ($basedir, $path, $section) = @_;
open(FH, '<', $path) or die "do_common: Failed to open $path for reading: $!\n";
while (<FH>) {
chomp;
last if $_ eq "[$section]";
}
die "do_common: Section $section not found in file\n" if eof(FH);
my @result;
my @current;
my $curdir;
while(<FH>) {
chomp;
next if /^\s*$/;
next if /^\s*\#/;
last if /^\[/;
# Reached new directory group
if (/^(\S+?):/) {
for (@current) {
$$_[0] =~ s/<NOSKIP>//;
push @result, [ "$curdir/$$_[0]", $$_[1] ];
}
@current = ();
$curdir = $1;
chdir("$basedir/$curdir") or die "do_common: Failed to change directory to $basedir/$curdir: $!\n";
}
# Minus operator removes from list
elsif (/^\t-(.+)/) {
my $glob = $1;
foreach my $dir (glob($glob)) {
# Already in list?
for (@current) {
if ($$_[0] eq $dir) {
$$_[0] = "<SKIP>";
}
}
}
}
# Plus operator (with arguments) forces early position
elsif (/^ \t \+ (.+?) \( (.*?) \) $/x) {
my ($glob, $args) = ($1, $2);
foreach my $dir (glob($glob)) {
push @current, [ "<NOSKIP>$dir", $args ];
}
}
# Plus operator (without arguments) forces early position
elsif (/^\t\+(.+)/) {
my $glob = $1;
foreach my $dir (glob($glob)) {
push @current, [ "<NOSKIP>$dir", "" ];
}
}
# Regular (with arguments)
elsif (/^ \t (.+?) \( (.*?) \) $/x) {
my ($glob, $args) = ($1, $2);
OUTER: foreach my $dir (glob($glob)) {
# Already in list?
for (@current) {
if ($$_[0] eq $dir) {
$$_[0] = "<SKIP>";
}
if ($$_[0] eq "<NOSKIP>$dir") {
next OUTER;
}
}
push @current, [ $dir, $args ];
}
}
# Regular (without arguments)
elsif (/^\t(.+)/) {
my $glob = $1;
OUTER: foreach my $dir (glob($glob)) {
# Already in list?
for (@current) {
if ($$_[0] eq $dir) {
$$_[0] = "<SKIP>";
}
if ($$_[0] eq "<NOSKIP>$dir") {
next OUTER;
}
}
push @current, [ $dir, "" ];
}
}
else {
die "do_common: Format error on line $.\n";
}
}
for (@current) {
$$_[0] =~ s/<NOSKIP>//;
push @result, [ "$curdir/$$_[0]", $$_[1] ];
}
close(FH);
@result = grep($$_[0] !~ /<SKIP>/, @result);
return \@result;
}
1;
|