Index: Makefile =================================================================== RCS file: /home/pcvs/ports/emulators/gns3/Makefile,v retrieving revision 1.14 diff -u -r1.14 Makefile --- Makefile 1 Jun 2012 05:18:13 -0000 1.14 +++ Makefile 9 Jun 2012 22:12:27 -0000 @@ -6,8 +6,7 @@ # PORTNAME= gns3 -PORTVERSION= 0.7.4 -PORTREVISION= 2 +PORTVERSION= 0.8.2 CATEGORIES= emulators MASTER_SITES= SF/gns-3/GNS3/${PORTVERSION} DISTNAME= GNS3-${PORTVERSION}-src @@ -16,40 +15,30 @@ COMMENT= Graphical Cisco network simulator LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/LICENSE -BUILD_DEPENDS= qemu:${PORTSDIR}/emulators/qemu RUN_DEPENDS= ${PYTHON_SITELIBDIR}/PyQt4/QtGui.so:${PORTSDIR}/x11-toolkits/py-qt4-gui \ ${PYTHON_SITELIBDIR}/PyQt4/QtSvg.so:${PORTSDIR}/graphics/py-qt4-svg \ ${PYTHON_SITELIBDIR}/PyQt4/QtNetwork.so:${PORTSDIR}/net/py-qt4-network \ dynamips:${PORTSDIR}/emulators/dynamips-community \ dynagen:${PORTSDIR}/emulators/dynagen \ - qemu:${PORTSDIR}/emulators/qemu + xdotool:${PORTSDIR}/x11/xdotool USE_PYTHON= 2.6+ USE_PYDISTUTILS= yes PYDISTUTILS_PKGNAME= GNS3 -MAN1= gns3.1 +MAN1= ${PORTNAME}.1 -.include +EXAMPLESDIR= ${PREFIX}/share/${PORTNAME} -post-patch: - ${REINPLACE_CMD} \ - "s|%%PREFIX%%|${PREFIX}|;s|%%LOCALBASE%%|${LOCALBASE}|" \ - ${WRKSRC}/src/GNS3/Ui/ConfigurationPages/*.py - -.if !defined(NO_IGNORE) -pre-configure: - @if qemu -help | ${GREP} -q -- "-net udp" >/dev/null 2>&1; then \ - : ; \ - else \ - ${ECHO_MSG} "===> ${PKGNAME} must be used with a gns3 patched qemu"; exit 1; \ - fi -.endif +.include post-install: .if !defined(NO_INSTALL_MANPAGES) - ${INSTALL_MAN} ${WRKSRC}/docs/man/gns3.1 ${MANPREFIX}/man/man1 + ${INSTALL_MAN} ${WRKSRC}/docs/man/${MAN1} ${MANPREFIX}/man/man1 .endif + @${MKDIR} ${EXAMPLESDIR} + ${INSTALL_DATA} ${WRKSRC}/baseconfig.txt ${EXAMPLESDIR} ${INSTALL_SCRIPT} ${WRKSRC}/qemuwrapper/qemuwrapper.py \ ${PREFIX}/bin/qemuwrapper.py @${CAT} ${PKGMESSAGE} Index: distinfo =================================================================== RCS file: /home/pcvs/ports/emulators/gns3/distinfo,v retrieving revision 1.6 diff -u -r1.6 distinfo --- distinfo 13 Jul 2011 20:06:48 -0000 1.6 +++ distinfo 9 Jun 2012 22:12:27 -0000 @@ -1,2 +1,2 @@ -SHA256 (GNS3-0.7.4-src.tar.gz) = 77a2c9b251d199a435ba85936349a1f8b1760df14a2594b68f8c1fee36f9588d -SIZE (GNS3-0.7.4-src.tar.gz) = 4512420 +SHA256 (GNS3-0.8.2-src.tar.gz) = e72553afe0c919aff54bedb4b639ebfcee83725eef28128bbb5076e226628a86 +SIZE (GNS3-0.8.2-src.tar.gz) = 3992183 Index: pkg-plist =================================================================== RCS file: /home/pcvs/ports/emulators/gns3/pkg-plist,v retrieving revision 1.4 diff -u -r1.4 pkg-plist --- pkg-plist 13 Jul 2011 20:06:48 -0000 1.4 +++ pkg-plist 9 Jun 2012 22:12:27 -0000 @@ -1,5 +1,9 @@ bin/gns3 bin/qemuwrapper.py +libexec/gns3/qemuwrapper.py +libexec/gns3/vboxcontroller_4_1.py +libexec/gns3/vboxwrapper.py +%%EXAMPLESDIR%%/baseconfig.txt %%PYTHON_SITELIBDIR%%/GNS3/Annotation.py %%PYTHON_SITELIBDIR%%/GNS3/Annotation.pyc %%PYTHON_SITELIBDIR%%/GNS3/Annotation.pyo @@ -30,6 +34,9 @@ %%PYTHON_SITELIBDIR%%/GNS3/Defaults/AnyEmuDefaults.py %%PYTHON_SITELIBDIR%%/GNS3/Defaults/AnyEmuDefaults.pyc %%PYTHON_SITELIBDIR%%/GNS3/Defaults/AnyEmuDefaults.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Defaults/AnyVBoxEmuDefaults.py +%%PYTHON_SITELIBDIR%%/GNS3/Defaults/AnyVBoxEmuDefaults.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Defaults/AnyVBoxEmuDefaults.pyo %%PYTHON_SITELIBDIR%%/GNS3/Defaults/IOSRouter1700Defaults.py %%PYTHON_SITELIBDIR%%/GNS3/Defaults/IOSRouter1700Defaults.pyc %%PYTHON_SITELIBDIR%%/GNS3/Defaults/IOSRouter1700Defaults.pyo @@ -67,6 +74,9 @@ %%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynagen.py %%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynagen.pyc %%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynagen.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynagen_vbox_lib.py +%%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynagen_vbox_lib.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynagen_vbox_lib.pyo %%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynamips_lib.py %%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynamips_lib.pyc %%PYTHON_SITELIBDIR%%/GNS3/Dynagen/dynamips_lib.pyo @@ -144,7 +154,6 @@ %%PYTHON_SITELIBDIR%%/GNS3/Langs/qt_pt_br.qm %%PYTHON_SITELIBDIR%%/GNS3/Langs/qt_ru.qm %%PYTHON_SITELIBDIR%%/GNS3/Langs/qt_sk.qm -%%PYTHON_SITELIBDIR%%/GNS3/Langs/qt_sl.qm %%PYTHON_SITELIBDIR%%/GNS3/Langs/qt_sr.qm %%PYTHON_SITELIBDIR%%/GNS3/Langs/qt_sv.qm %%PYTHON_SITELIBDIR%%/GNS3/Langs/qt_uk.qm @@ -181,6 +190,9 @@ %%PYTHON_SITELIBDIR%%/GNS3/Node/AnyEmuDevice.py %%PYTHON_SITELIBDIR%%/GNS3/Node/AnyEmuDevice.pyc %%PYTHON_SITELIBDIR%%/GNS3/Node/AnyEmuDevice.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Node/AnyVBoxEmuDevice.py +%%PYTHON_SITELIBDIR%%/GNS3/Node/AnyVBoxEmuDevice.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Node/AnyVBoxEmuDevice.pyo %%PYTHON_SITELIBDIR%%/GNS3/Node/Cloud.py %%PYTHON_SITELIBDIR%%/GNS3/Node/Cloud.pyc %%PYTHON_SITELIBDIR%%/GNS3/Node/Cloud.pyo @@ -280,18 +292,21 @@ %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_FRSWPage.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_FRSWPage.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_FRSWPage.pyo -%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_FWPage.py -%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_FWPage.pyc -%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_FWPage.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IDSPage.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IDSPage.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IDSPage.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IOSDialog.py +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IOSDialog.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IOSDialog.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IOSRouterPage.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IOSRouterPage.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_IOSRouterPage.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_JunOSPage.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_JunOSPage.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_JunOSPage.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PIXPage.py +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PIXPage.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PIXPage.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesCapture.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesCapture.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesCapture.pyo @@ -304,9 +319,15 @@ %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesQemu.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesQemu.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesQemu.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesVirtualBox.py +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesVirtualBox.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_PreferencesVirtualBox.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_QemuPage.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_QemuPage.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_QemuPage.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_VirtualBoxPage.py +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_VirtualBoxPage.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Form_VirtualBoxPage.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_ASA.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_ASA.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_ASA.pyo @@ -328,9 +349,6 @@ %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_FRSW.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_FRSW.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_FRSW.pyo -%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_FW.py -%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_FW.pyc -%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_FW.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_IDS.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_IDS.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_IDS.pyo @@ -340,6 +358,9 @@ %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_JunOS.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_JunOS.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_JunOS.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PIX.py +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PIX.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PIX.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesCapture.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesCapture.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesCapture.pyo @@ -352,9 +373,15 @@ %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesQemu.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesQemu.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesQemu.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesVirtualBox.py +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesVirtualBox.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_PreferencesVirtualBox.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_Qemu.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_Qemu.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_Qemu.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_VirtualBox.py +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_VirtualBox.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/Page_VirtualBox.pyo %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/__init__.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/__init__.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages/__init__.pyo @@ -415,12 +442,21 @@ %%PYTHON_SITELIBDIR%%/GNS3/Ui/svg_resources_rc.py %%PYTHON_SITELIBDIR%%/GNS3/Ui/svg_resources_rc.pyc %%PYTHON_SITELIBDIR%%/GNS3/Ui/svg_resources_rc.pyo +%%PYTHON_SITELIBDIR%%/GNS3/Uncompress.py +%%PYTHON_SITELIBDIR%%/GNS3/Uncompress.pyc +%%PYTHON_SITELIBDIR%%/GNS3/Uncompress.pyo %%PYTHON_SITELIBDIR%%/GNS3/UndoFramework.py %%PYTHON_SITELIBDIR%%/GNS3/UndoFramework.pyc %%PYTHON_SITELIBDIR%%/GNS3/UndoFramework.pyo %%PYTHON_SITELIBDIR%%/GNS3/Utils.py %%PYTHON_SITELIBDIR%%/GNS3/Utils.pyc %%PYTHON_SITELIBDIR%%/GNS3/Utils.pyo +%%PYTHON_SITELIBDIR%%/GNS3/VBoxManager.py +%%PYTHON_SITELIBDIR%%/GNS3/VBoxManager.pyc +%%PYTHON_SITELIBDIR%%/GNS3/VBoxManager.pyo +%%PYTHON_SITELIBDIR%%/GNS3/WindowManipulator.py +%%PYTHON_SITELIBDIR%%/GNS3/WindowManipulator.pyc +%%PYTHON_SITELIBDIR%%/GNS3/WindowManipulator.pyo %%PYTHON_SITELIBDIR%%/GNS3/Wizard.py %%PYTHON_SITELIBDIR%%/GNS3/Wizard.pyc %%PYTHON_SITELIBDIR%%/GNS3/Wizard.pyo @@ -430,6 +466,7 @@ %%PYTHON_SITELIBDIR%%/GNS3/__init__.py %%PYTHON_SITELIBDIR%%/GNS3/__init__.pyc %%PYTHON_SITELIBDIR%%/GNS3/__init__.pyo +@dirrm libexec/gns3 @dirrm %%PYTHON_SITELIBDIR%%/GNS3/Ui/ConfigurationPages @dirrm %%PYTHON_SITELIBDIR%%/GNS3/Ui @dirrm %%PYTHON_SITELIBDIR%%/GNS3/Node @@ -441,3 +478,4 @@ @dirrm %%PYTHON_SITELIBDIR%%/GNS3/Defaults @dirrm %%PYTHON_SITELIBDIR%%/GNS3/Config @dirrm %%PYTHON_SITELIBDIR%%/GNS3 +@dirrm %%EXAMPLESDIR%% Index: files/patch-Page_PreferencesCapture.py =================================================================== RCS file: files/patch-Page_PreferencesCapture.py diff -N files/patch-Page_PreferencesCapture.py --- files/patch-Page_PreferencesCapture.py 13 Jul 2011 20:06:49 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,11 +0,0 @@ ---- src/GNS3/Ui/ConfigurationPages/Page_PreferencesCapture.py.orig 2011-07-03 00:10:04.000000000 +0200 -+++ src/GNS3/Ui/ConfigurationPages/Page_PreferencesCapture.py 2011-07-03 00:10:29.000000000 +0200 -@@ -52,7 +52,7 @@ - elif sys.platform.startswith('win'): - self.conf.cap_cmd = unicode("C:\Program Files\Wireshark\wireshark.exe %c") - else: -- self.conf.cap_cmd = unicode("/usr/bin/wireshark %c") -+ self.conf.cap_cmd = unicode("%%LOCALBASE%%/bin/wireshark %c") - - if self.conf.workdir == '': - if os.environ.has_key("TEMP"): Index: files/patch-Page_PreferencesDynamips.py =================================================================== RCS file: files/patch-Page_PreferencesDynamips.py diff -N files/patch-Page_PreferencesDynamips.py --- files/patch-Page_PreferencesDynamips.py 13 Jul 2011 20:06:49 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ ---- src/GNS3/Ui/ConfigurationPages/Page_PreferencesDynamips.py.orig 2011-07-03 00:11:46.000000000 +0200 -+++ src/GNS3/Ui/ConfigurationPages/Page_PreferencesDynamips.py 2011-07-03 00:32:42.000000000 +0200 -@@ -55,7 +55,9 @@ - # Default path to dynamips executable - if self.conf.path == '' and sys.platform.startswith('win'): - self.conf.path = unicode('dynamips-wxp.exe') -- -+ else: -+ self.conf.path = unicode('%%LOCALBASE%%/bin/dynamips') -+ - # Default path to working directory - if self.conf.workdir == '': - if os.environ.has_key("TEMP"): Index: files/patch-Page_PreferencesQemu.py =================================================================== RCS file: files/patch-Page_PreferencesQemu.py diff -N files/patch-Page_PreferencesQemu.py --- files/patch-Page_PreferencesQemu.py 13 Jul 2011 20:06:49 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,11 +0,0 @@ ---- src/GNS3/Ui/ConfigurationPages/Page_PreferencesQemu.py.orig 2011-07-03 00:06:36.000000000 +0200 -+++ src/GNS3/Ui/ConfigurationPages/Page_PreferencesQemu.py 2011-07-03 00:07:26.000000000 +0200 -@@ -97,7 +97,7 @@ - if sys.platform.startswith('win'): - self.conf.qemuwrapper_path = unicode('qemuwrapper.exe') - else: -- path = os.getcwd() + '/qemuwrapper/qemuwrapper.py' -+ path = '%%PREFIX%%/bin/qemuwrapper.py' - self.conf.qemuwrapper_path = unicode(path, errors='replace') - - # Default path to working directory Index: files/patch-qemuwrapper.py =================================================================== RCS file: files/patch-qemuwrapper.py diff -N files/patch-qemuwrapper.py --- files/patch-qemuwrapper.py 13 Jul 2011 20:06:49 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,52 +0,0 @@ ---- qemuwrapper/qemuwrapper.py.orig -+++ qemuwrapper/qemuwrapper.py -@@ -45,6 +45,7 @@ import SocketServer - import time - import random - import pemubin -+import ctypes - - - __author__ = 'Thomas Pani and Jeremy Grossmann' -@@ -118,6 +119,33 @@ class xEMUInstance(object): - def unbase_disk(self): - pass - -+ def preexec(self): -+ # FreeBSD preexec_fn hack to unblock signals in child processes -+ # to work around the bug in this PR: -+ # http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/153167 -+ # inspired by: -+ # http://stackoverflow.com/questions/3791398/how-to-stop-python-from-propagating-signals-to-subprocesses -+ -+ # Get the size of the array used to -+ # represent the signal mask -+ SIGSET_NWORDS = 1024 / (8 * ctypes.sizeof(ctypes.c_uint)) -+ -+ # Define the sigset_t structure -+ class SIGSET(ctypes.Structure): -+ _fields_ = [ -+ ('val', ctypes.c_uint * SIGSET_NWORDS) -+ ] -+ -+ # Create a new sigset_t to mask out SIGINT -+ sigs = (ctypes.c_uint * SIGSET_NWORDS)() -+ mask = SIGSET(sigs) -+ -+ SIG_SETMASK = 3 -+ libc = ctypes.CDLL('libc.so') -+ -+ # Unblock all signals -+ libc.sigprocmask(SIG_SETMASK, ctypes.pointer(mask), 0) -+ - def start(self): - command = self._build_command() - -@@ -125,6 +152,7 @@ class xEMUInstance(object): - try: - self.process = subprocess.Popen(command, - stdin=subprocess.PIPE, -+ preexec_fn=self.preexec, - cwd=self.workdir) - except OSError, e: - print >> sys.stderr, "Unable to start instance", self.name, "of", self.__class__