-
Notifications
You must be signed in to change notification settings - Fork 32
/
playerconf
108 lines (95 loc) · 3.57 KB
/
playerconf
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
#!/usr/bin/env python
#
# Player - One Hell of a Robot Server
# Copyright (C) 2003 Brian Gerkey <[email protected]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
# playerconf - a little utility to aid in configuring a player build. It
# uses the dialog utility to ask a question regarding each
# possible --enable/disable and --with/without configure script
# option
#
# $Id$
#
import os
import string
os.system('rm -f config.cache')
def inputbox(comment,extras):
"""Pops up an inputbox and returns (0/1,val)"""
tmpfname='prefix.tmp'
ret=os.system('dialog ' + extras + ' --inputbox "' + comment + ' (leave empty to use default)." 0 0 2> ' + tmpfname)
f=os.open(tmpfname,os.O_RDONLY)
val=os.read(f,256)
os.unlink(tmpfname)
return (ret,val)
os.system('dialog --msgbox "Welcome to playerconf. Please answer the following questions to configure your build of player." 0 0')
configstring = './configure'
(ret,val) = inputbox('Installation prefix', '--nocancel')
if len(val) > 0:
configstring += ' --prefix=' + val
configout = os.popen('./configure --help')
lines = configout.read().split('\n')
print lines
go = 0
for l in lines:
if l == '--enable and --with options recognized:':
go = 1
continue
elif not go or len(l) == 0 or string.find(l,'dependency-tracking') >= 0:
continue
else:
# Munge the comment strings so that the ask an intuitive positive question
# NOTE: this procedure is brittle, making certain assumptions of how
# the comment strings are phrased
tokens = l.split()
default = tokens[0].split('-')[2]
tmp = tokens[0].split('-')[3]
idx = string.find(tmp,'=')
option = tmp
val=''
valname=''
if idx >= 0:
option = tmp[:idx]
valname = tmp[idx+1:]
comment = string.join(tokens[1:])
if comment.split()[0] == "Don't":
comment = string.join(comment.split()[1:])
comment = string.upper(comment[0]) + comment[1:]
idx = string.find(comment,'without')
if idx >= 0:
comment = comment[:idx] + 'with ' + string.join(comment[idx:].split()[1:])
dialogstr = 'dialog '
if default == 'enable' or default == 'with':
dialogstr += '--defaultno '
if len(valname) > 0:
(ret,val) = inputbox(comment,'--ok-label Yes --cancel-label No')
else:
dialogstr += '--yesno "' + comment + '?" 0 0'
ret = os.system(dialogstr)
if ret == 0:
if string.find(default,'with') >= 0:
configstring += ' --with-' + option
else:
configstring += ' --enable-' + option
else:
if string.find(default,'with') >= 0:
configstring += ' --without-' + option
else:
configstring += ' --disable-' + option
if len(val) > 0:
configstring += '=' + val
os.system('''dialog --msgbox "Configuration complete. Press Enter to run the configure script, then type 'make' to build" 0 0''')
os.system(configstring)