def biosFromDOSExe(statusObj, outputTopdir, logger, *args, **kargs): common.assertFileExt( statusObj.file, '.exe') common.copyToTmp(statusObj) cmd = common.doOnce(statusObj, setupFreedosForThisDir, statusObj.tmpdir, statusObj.tmpfile) try: common.loggedCmd( cmd + [ "%s -writehdrfile" % os.path.basename(statusObj.tmpfile) ], timeout=75, cwd=statusObj.tmpdir, logger=logger, env={"DISPLAY":"", "TERM":"", "PATH":os.environ["PATH"], "HOME": os.environ["HOME"]}) except common.CommandException, e: raise common.skip, "couldnt extract with extract_hdr_helper.sh"
def setupWine(): getLog(prefix="verbose.").info("Running pre-setup for wine.") global wineprefix wineprefix = tempfile.mkdtemp(prefix="wineprefix-") env={ "DISPLAY":"", "TERM":"", "PATH":os.environ["PATH"], "HOME":os.environ["HOME"], "WINEPREFIX": wineprefix, } common.loggedCmd(["wineprefixcreate", "-w", "--prefix", wineprefix], cwd=wineprefix, env=env, logger=getLog(), raiseExc=False) atexit.register(shutil.rmtree, wineprefix) getLog(prefix="verbose.").info("Wine pre-setup finished.")
def biosFromLinuxDup2(statusObj, outputTopdir, logger, *args, **kargs): common.assertFileExt( statusObj.file, '.bin') common.copyToTmp(statusObj) flashbin = os.path.join(statusObj.tmpdir, "flashbin") common.gzipAfterHeader(statusObj.tmpfile, flashbin, "__ARC__") oldmode = stat.S_IMODE(os.stat(flashbin)[stat.ST_MODE]) os.chmod(flashbin, oldmode | stat.S_IRWXU) try: common.loggedCmd( [flashbin, "--WriteHDRFile"], cwd=statusObj.tmpdir, logger=logger, env={"DISPLAY":"", "TERM":"", "PATH":os.environ["PATH"], "LD_PRELOAD": "/usr/lib/libfakeroot/libfakeroot.so"} ) except (OSError, common.CommandException), e: raise common.skip, str(e)
def setupFreedos(): getLog(prefix="verbose.").info("Running pre-setup for freedos.") global dosprefix dosprefix = tempfile.mkdtemp(prefix="dosprefix-") common.loggedCmd(["tar", "xvjf", conf.helper_dat], cwd=dosprefix, logger=getLog()) import commands status, output = commands.getstatusoutput("uname -m") if output.startswith("x86_64"): os.rename(os.path.join(dosprefix, "both", "64"), os.path.join(dosprefix, "freedos")) else: os.rename(os.path.join(dosprefix, "both", "32"), os.path.join(dosprefix, "freedos")) if not os.path.isdir(os.path.join(os.environ["HOME"], ".dosemu")): os.mkdir(os.path.join(os.environ["HOME"], ".dosemu")) open(os.path.join(os.environ["HOME"], ".dosemu", "disclaimer"), "w+").close() atexit.register(shutil.rmtree, dosprefix) getLog(prefix="verbose.").info("Freedos pre-setup finished.")
def biosFromWindowsExe(statusObj, outputTopdir, logger, *args, **kargs): common.assertFileExt( statusObj.file, '.exe') common.copyToTmp(statusObj) thiswineprefix = os.path.join(statusObj.tmpdir, "wine") env={ "DISPLAY":"", "TERM":"", "PATH":os.environ["PATH"], "HOME":os.environ["HOME"], "WINEPREFIX": thiswineprefix } shutil.copytree(wineprefix, thiswineprefix, symlinks=True) try: common.loggedCmd( ["wine", os.path.basename(statusObj.tmpfile), "-writehdrfile", "-nopause",], timeout=75, raiseExc=0, cwd=statusObj.tmpdir, logger=logger, env=env) common.loggedCmd(["wineserver", "-k"], cwd=statusObj.tmpdir, logger=logger, env=env) except (common.CommandException), e: raise common.skip, "couldnt extract with wine"
def biosFromLinuxDup3(statusObj, outputTopdir, logger, *args, **kargs): common.assertFileExt( statusObj.file, '.bin') common.copyToTmp(statusObj) fd = open(statusObj.tmpfile, "r") buf = fd.read(4) fd.close() if buf != '\177ELF': raise common.skip, "not an ELF file." oldmode = stat.S_IMODE(os.stat(statusObj.tmpfile)[stat.ST_MODE]) os.chmod(statusObj.tmpfile, oldmode | stat.S_IRWXU) try: common.loggedCmd( [statusObj.tmpfile, "--WriteHDRFile"], cwd=statusObj.tmpdir, logger=logger, env={"DISPLAY":"", "TERM":"", "PATH":os.environ["PATH"], "LD_PRELOAD": "/usr/lib/libfakeroot/libfakeroot.so"} ) except (OSError, common.CommandException), e: raise common.skip, str(e)
def biosFromDcopyExe(statusObj, outputTopdir, logger, *args, **kargs): common.assertFileExt( statusObj.file, '.exe') common.copyToTmp(statusObj) dcopydir = os.path.join(statusObj.tmpdir, "dos", "freedos", "dcopy") os.mkdir(dcopydir) os.mkdir(dcopydir + "2") common.doOnce(statusObj, common.zipExtract, statusObj.tmpfile, dcopydir, logger) if not os.path.exists(os.path.join(dcopydir, "MAKEDISK.BAT")): raise common.skip, "not a dcopy image." cmd = common.doOnce(statusObj, setupFreedosForThisDir, statusObj.tmpdir, statusObj.tmpfile) try: for exe in glob.glob(os.path.join(dcopydir, "*.[Ee][Xx][Ee]")): common.loggedCmd( cmd + [ "dcopy\\%s /s a:" % os.path.basename(exe) ], timeout=75, cwd=statusObj.tmpdir, logger=logger, env={"DISPLAY":"", "TERM":"", "PATH":os.environ["PATH"], "HOME": os.environ["HOME"]}) common.loggedCmd( cmd + [ "copy a:\\*.* c:\\dcopy2" ], timeout=75, cwd=statusObj.tmpdir, logger=logger, env={"DISPLAY":"", "TERM":"", "PATH":os.environ["PATH"], "HOME": os.environ["HOME"]}) for exe in glob.glob(os.path.join(dcopydir + "2", "*.[Ee][Xx][Ee]")): if "ync.exe" in exe.lower(): continue common.loggedCmd( cmd + [ "dcopy2\\%s -writehdrfile" % os.path.basename(exe) ], timeout=10, cwd=statusObj.tmpdir, logger=logger, env={"DISPLAY":"", "TERM":"", "PATH":os.environ["PATH"], "HOME": os.environ["HOME"]}) except common.CommandException, e: raise common.skip, "couldnt extract with extract_hdr_helper.sh"