Skip to content

Commit 27b3284

Browse files
committed
use xvfbwrapper for redirecting X
1 parent 7f160b0 commit 27b3284

File tree

2 files changed

+7
-26
lines changed

2 files changed

+7
-26
lines changed

nipype/interfaces/base.py

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -983,32 +983,12 @@ def run(self, **inputs):
983983
version=self.version)
984984
try:
985985
if self._redirect_x:
986-
exist_val, _ = self._exists_in_path('Xvfb',
987-
runtime.environ)
988-
if not exist_val:
989-
raise IOError("Xvfb could not be found on host %s" %
990-
(runtime.hostname))
991-
else:
992-
vdisplay_num = _search_for_free_display()
993-
xvfb_cmd = ['Xvfb', ':%d' % vdisplay_num]
994-
xvfb_proc = subprocess.Popen(xvfb_cmd,
995-
stdout=open(os.devnull),
996-
stderr=open(os.devnull))
997-
wait_step = 0.2
998-
wait_time = 0
999-
while xvfb_proc.poll() is not None:
1000-
if wait_time > config.get('execution', 'xvfb_max_wait'):
1001-
raise Exception('Error: Xvfb did not start')
1002-
time.sleep(wait_step) # give Xvfb time to start
1003-
wait_time += wait_step
1004-
1005-
runtime.environ['DISPLAY'] = ':%s' % vdisplay_num
1006-
1007-
runtime = self._run_interface(runtime)
1008-
1009-
if self._redirect_x:
1010-
xvfb_proc.kill()
1011-
xvfb_proc.wait()
986+
from xvfbwrapper import Xvfb
987+
with Xvfb() as xvfb:
988+
runtime = self._run_interface(runtime)
989+
else:
990+
iflogger.warn('Error redirecting X, trying without xvfb...')
991+
runtime = self._run_interface(runtime)
1012992

1013993
outputs = self.aggregate_outputs(runtime)
1014994
runtime.endTime = dt.isoformat(dt.utcnow())

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ traits>=4.0
55
python-dateutil>=1.5
66
nibabel>=1.0
77
nose>=1.0
8+
xvfbwrapper>=0.2

0 commit comments

Comments
 (0)