Changes in tools/ew.py [f5ceb18:8a26f82] in mainline
- File:
-
- 1 edited
-
tools/ew.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tools/ew.py
rf5ceb18 r8a26f82 34 34 35 35 import os 36 import sys37 36 import subprocess 38 37 import autotool 39 38 import platform 40 39 41 overrides = {}42 43 def is_override(str):44 if str in overrides.keys():45 return overrides[str]46 return False47 48 def cfg_get(platform, machine):49 if machine == "":50 return emulators[platform]51 else:52 return emulators[platform][machine]53 54 40 def run_in_console(cmd, title): 55 41 cmdline = 'xterm -T ' + '"' + title + '"' + ' -e ' + cmd 56 42 print(cmdline) 57 if not is_override('dryrun'): 58 subprocess.call(cmdline, shell = True); 43 subprocess.call(cmdline, shell = True); 59 44 60 45 def get_host_native_width(): … … 67 52 # on 32 bits host 68 53 host_width = get_host_native_width() 69 if guest_width <= host_width and not is_override('nokvm'):54 if guest_width <= host_width: 70 55 opts = opts + ' -enable-kvm' 71 56 … … 94 79 95 80 def qemu_bd_options(): 96 if is_override('nohdd'):97 return ''98 99 81 if not os.path.exists('hdisk.img'): 100 82 subprocess.call('tools/mkfat.py 1048576 uspace/dist/data hdisk.img', shell = True) 101 102 83 return ' -hda hdisk.img' 103 84 … … 112 93 113 94 def qemu_net_options(): 114 if is_override('nonet'): 115 return '' 116 117 nic_options = '' 118 if 'net' in overrides.keys(): 119 if 'e1k' in overrides['net'].keys(): 120 nic_options += qemu_nic_e1k_options() 121 if 'rtl8139' in overrides['net'].keys(): 122 nic_options += qemu_nic_rtl8139_options() 123 if 'ne2k' in overrides['net'].keys(): 124 nic_options += qemu_nic_ne2k_options() 125 else: 126 # Use the default NIC 127 nic_options += qemu_nic_e1k_options() 128 95 nic_options = qemu_nic_e1k_options() 129 96 return nic_options + ' -net user -redir udp:8080::8080 -redir udp:8081::8081 -redir tcp:8080::8080 -redir tcp:8081::8081 -redir tcp:2223::2223' 130 97 131 98 def qemu_usb_options(): 132 if is_override('nousb'): 133 return '' 134 return ' -usb' 99 return '' 135 100 136 def qemu_audio_options(): 137 if is_override('nosnd'): 138 return '' 139 return ' -soundhw sb16' 140 141 def qemu_run(platform, machine): 142 cfg = cfg_get(platform, machine) 101 def qemu_run(platform, machine, console, image, networking, storage, usb): 143 102 suffix, options = platform_to_qemu_options(platform, machine) 144 103 cmd = 'qemu-' + suffix … … 148 107 cmdline += ' ' + options 149 108 150 cmdline += qemu_bd_options()151 152 if (not 'net' in cfg.keys()) or cfg['net']:109 if storage: 110 cmdline += qemu_bd_options() 111 if networking: 153 112 cmdline += qemu_net_options() 154 if (not 'usb' in cfg.keys()) or cfg['usb']:113 if usb: 155 114 cmdline += qemu_usb_options() 156 if (not 'audio' in cfg.keys()) or cfg['audio']:157 cmdline += qemu_audio_options()158 115 159 if cfg['image']== 'image.iso':116 if image == 'image.iso': 160 117 cmdline += ' -boot d -cdrom image.iso' 161 elif cfg['image']== 'image.boot':118 elif image == 'image.boot': 162 119 cmdline += ' -kernel image.boot' 163 120 164 if ('console' in cfg.keys()) and not cfg['console']:121 if not console: 165 122 cmdline += ' -nographic' 166 123 … … 171 128 else: 172 129 print(cmdline) 173 if not is_override('dryrun'): 174 subprocess.call(cmdline, shell = True) 130 subprocess.call(cmdline, shell = True) 175 131 176 def ski_run(platform, machine ):132 def ski_run(platform, machine, console, image, networking, storage, usb): 177 133 run_in_console('ski -i contrib/conf/ski.conf', 'HelenOS/ia64 on ski') 178 134 179 def msim_run(platform, machine ):135 def msim_run(platform, machine, console, image, networking, storage, usb): 180 136 run_in_console('msim -c contrib/conf/msim.conf', 'HelenOS/mips32 on msim') 181 137 138 emulators = {} 139 emulators['amd64'] = {} 140 emulators['arm32'] = {} 141 emulators['ia32'] = {} 142 emulators['ia64'] = {} 143 emulators['mips32'] = {} 144 emulators['ppc32'] = {} 145 emulators['sparc64'] = {} 182 146 183 emulators = { 184 'amd64' : { 185 'run' : qemu_run, 186 'image' : 'image.iso' 187 }, 188 'arm32' : { 189 'integratorcp' : { 190 'run' : qemu_run, 191 'image' : 'image.boot', 192 'net' : False, 193 'audio' : False 194 } 195 }, 196 'ia32' : { 197 'run' : qemu_run, 198 'image' : 'image.iso' 199 }, 200 'ia64' : { 201 'ski' : { 202 'run' : ski_run 203 } 204 }, 205 'mips32' : { 206 'msim' : { 207 'run' : msim_run 208 }, 209 'lmalta' : { 210 'run' : qemu_run, 211 'image' : 'image.boot', 212 'console' : False 213 }, 214 'bmalta' : { 215 'run' : qemu_run, 216 'image' : 'image.boot', 217 'console' : False 218 }, 219 }, 220 'ppc32' : { 221 'run' : qemu_run, 222 'image' : 'image.iso', 223 'audio' : False 224 }, 225 'sparc64' : { 226 'generic' : { 227 'run' : qemu_run, 228 'image' : 'image.iso', 229 'audio' : False 230 } 231 }, 232 } 233 234 def usage(): 235 print("%s - emulator wrapper for running HelenOS\n" % os.path.basename(sys.argv[0])) 236 print("%s [-d] [-h] [-net e1k|rtl8139|ne2k] [-nohdd] [-nokvm] [-nonet] [-nosnd] [-nousb]\n" % 237 os.path.basename(sys.argv[0])) 238 print("-d\tDry run: do not run the emulation, just print the command line.") 239 print("-h\tPrint the usage information and exit.") 240 print("-nohdd\tDisable hard disk, if applicable.") 241 print("-nokvm\tDisable KVM, if applicable.") 242 print("-nonet\tDisable networking support, if applicable.") 243 print("-nosnd\tDisable sound, if applicable.") 244 print("-nousb\tDisable USB support, if applicable.") 147 emulators['amd64'][''] = qemu_run, True, 'image.iso', True, True, True 148 emulators['arm32']['integratorcp'] = qemu_run, True, 'image.boot', False, False, False 149 emulators['ia32'][''] = qemu_run, True, 'image.iso', True, True, True 150 emulators['ia64']['ski'] = ski_run, False, 'image.boot', False, False, False 151 emulators['mips32']['msim'] = msim_run, False, 'image.boot', False, False, False 152 emulators['mips32']['lmalta'] = qemu_run, False, 'image.boot', False, False, False 153 emulators['mips32']['bmalta'] = qemu_run, False, 'image.boot', False, False, False 154 emulators['ppc32'][''] = qemu_run, True, 'image.iso', True, True, True 155 emulators['sparc64']['generic'] = qemu_run, True, 'image.iso', True, True, True 245 156 246 157 def run(): 247 expect_nic = False248 249 for i in range(1, len(sys.argv)):250 251 if expect_nic:252 expect_nic = False253 if not 'net' in overrides.keys():254 overrides['net'] = {}255 if sys.argv[i] == 'e1k':256 overrides['net']['e1k'] = True257 elif sys.argv[i] == 'rtl8139':258 overrides['net']['rtl8139'] = True259 elif sys.argv[i] == 'ne2k':260 overrides['net']['ne2k'] = True261 else:262 usage()263 exit()264 265 elif sys.argv[i] == '-h':266 usage()267 exit()268 elif sys.argv[i] == '-d':269 overrides['dryrun'] = True270 elif sys.argv[i] == '-net' and i < len(sys.argv) - 1:271 expect_nic = True272 elif sys.argv[i] == '-nohdd':273 overrides['nohdd'] = True274 elif sys.argv[i] == '-nokvm':275 overrides['nokvm'] = True276 elif sys.argv[i] == '-nonet':277 overrides['nonet'] = True278 elif sys.argv[i] == '-nosnd':279 overrides['nosnd'] = True280 elif sys.argv[i] == '-nousb':281 overrides['nousb'] = True282 else:283 usage()284 exit()285 286 158 config = {} 287 159 autotool.read_config(autotool.CONFIG, config) 288 160 289 if 'PLATFORM' in config.keys():161 try: 290 162 platform = config['PLATFORM'] 291 e lse:163 except: 292 164 platform = '' 293 165 294 if 'MACHINE' in config.keys():166 try: 295 167 mach = config['MACHINE'] 296 e lse:168 except: 297 169 mach = '' 298 170 299 171 try: 300 emu_run = cfg_get(platform, mach)['run']172 emu_run, console, image, networking, storage, usb = emulators[platform][mach] 301 173 except: 302 print("Cannot start emulation for the chosen configuration. (%s/%s)" % (platform, mach))174 print("Cannot start emulation for the chosen configuration.") 303 175 return 304 176 305 emu_run(platform, mach )177 emu_run(platform, mach, console, image, networking, storage, usb) 306 178 307 179 run()
Note:
See TracChangeset
for help on using the changeset viewer.
