Rev 708 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 708 | Rev 1651 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | #!/usr/bin/env python |
1 | #!/usr/bin/env python |
2 | """ |
2 | """ |
3 | boot configuration script |
3 | Kernel configuration script |
4 | """ |
4 | """ |
5 | import sys |
5 | import sys |
6 | import os |
6 | import os |
7 | import re |
7 | import re |
8 | import commands |
8 | import commands |
9 | 9 | ||
10 | INPUT = 'boot.config' |
10 | INPUT = 'kernel.config' |
11 | OUTPUT = 'Makefile.config' |
11 | OUTPUT = 'Makefile.config' |
12 | TMPOUTPUT = 'Makefile.config.tmp' |
12 | TMPOUTPUT = 'Makefile.config.tmp' |
13 | 13 | ||
14 | class DefaultDialog: |
14 | class DefaultDialog: |
15 | "Wrapper dialog that tries to return default values" |
15 | "Wrapper dialog that tries to return default values" |
Line 106... | Line 106... | ||
106 | if number < 0 or number >= len(choices): |
106 | if number < 0 or number >= len(choices): |
107 | continue |
107 | continue |
108 | return choices[number][0] |
108 | return choices[number][0] |
109 | 109 | ||
110 | 110 | ||
- | 111 | def eof_checker(fnc): |
|
- | 112 | def wrapper(self, *args, **kw): |
|
- | 113 | try: |
|
- | 114 | return fnc(self, *args, **kw) |
|
- | 115 | except EOFError: |
|
- | 116 | return getattr(self.bckdialog,fnc.func_name)(*args, **kw) |
|
- | 117 | return wrapper |
|
- | 118 | ||
111 | class Dialog(NoDialog): |
119 | class Dialog(NoDialog): |
112 | def __init__(self): |
120 | def __init__(self): |
113 | NoDialog.__init__(self) |
121 | NoDialog.__init__(self) |
114 | self.dlgcmd = os.environ.get('DIALOG','dialog') |
122 | self.dlgcmd = os.environ.get('DIALOG','dialog') |
115 | self.title = '' |
123 | self.title = '' |
116 | self.backtitle = 'HelenOS Boot Configuration' |
124 | self.backtitle = 'HelenOS Kernel Configuration' |
117 | 125 | ||
118 | if os.system('%s --print-maxsize >/dev/null 2>&1' % self.dlgcmd) != 0: |
126 | if os.system('%s --print-maxsize >/dev/null 2>&1' % self.dlgcmd) != 0: |
119 | raise NotImplementedError |
127 | raise NotImplementedError |
- | 128 | ||
- | 129 | self.bckdialog = NoDialog() |
|
120 | 130 | ||
121 | def set_title(self,text): |
131 | def set_title(self,text): |
122 | self.title = text |
132 | self.title = text |
- | 133 | self.bckdialog.set_title(text) |
|
123 | 134 | ||
124 | def calldlg(self,*args,**kw): |
135 | def calldlg(self,*args,**kw): |
125 | "Wrapper for calling 'dialog' program" |
136 | "Wrapper for calling 'dialog' program" |
126 | indesc, outdesc = os.pipe() |
137 | indesc, outdesc = os.pipe() |
127 | pid = os.fork() |
138 | pid = os.fork() |
Line 174... | Line 185... | ||
174 | res,data = self.calldlg('--yesno',text,height,width) |
185 | res,data = self.calldlg('--yesno',text,height,width) |
175 | 186 | ||
176 | if res == 0: |
187 | if res == 0: |
177 | return 'y' |
188 | return 'y' |
178 | return 'n' |
189 | return 'n' |
- | 190 | yesno = eof_checker(yesno) |
|
179 | 191 | ||
180 | def menu(self, text, choices, button, defopt=None): |
192 | def menu(self, text, choices, button, defopt=None): |
181 | self.title = 'Main menu' |
193 | self.title = 'Main menu' |
182 | text = text + ':' |
194 | text = text + ':' |
183 | width = '70' |
195 | width = '70' |
Line 201... | Line 213... | ||
201 | sys.exit(1) |
213 | sys.exit(1) |
202 | elif res: |
214 | elif res: |
203 | print data |
215 | print data |
204 | raise EOFError |
216 | raise EOFError |
205 | return data |
217 | return data |
- | 218 | menu = eof_checker(menu) |
|
206 | 219 | ||
207 | def choice(self, text, choices, defopt=None): |
220 | def choice(self, text, choices, defopt=None): |
208 | text = text + ':' |
221 | text = text + ':' |
209 | width = '50' |
222 | width = '50' |
210 | height = str(8 + len(choices)) |
223 | height = str(8 + len(choices)) |
Line 220... | Line 233... | ||
220 | str(len(choices)),*args, **kw) |
233 | str(len(choices)),*args, **kw) |
221 | if res: |
234 | if res: |
222 | print data |
235 | print data |
223 | raise EOFError |
236 | raise EOFError |
224 | return data |
237 | return data |
- | 238 | choice = eof_checker(choice) |
|
225 | 239 | ||
226 | def read_defaults(fname,defaults): |
240 | def read_defaults(fname,defaults): |
227 | "Read saved values from last configuration run" |
241 | "Read saved values from last configuration run" |
228 | f = file(fname,'r') |
242 | f = file(fname,'r') |
229 | for line in f: |
243 | for line in f: |
Line 471... | Line 485... | ||
471 | 485 | ||
472 | if os.path.exists(OUTPUT): |
486 | if os.path.exists(OUTPUT): |
473 | os.unlink(OUTPUT) |
487 | os.unlink(OUTPUT) |
474 | os.rename(TMPOUTPUT, OUTPUT) |
488 | os.rename(TMPOUTPUT, OUTPUT) |
475 | 489 | ||
476 | if not defmode and dlg.yesno('Rebuild everything?') == 'y': |
490 | if not defmode and dlg.yesno('Rebuild kernel?') == 'y': |
477 | os.execlp('make','make','clean','build') |
491 | os.execlp('make','make','clean','build') |
478 | 492 | ||
479 | if __name__ == '__main__': |
493 | if __name__ == '__main__': |
480 | main() |
494 | main() |