1234567891011121314151617181920212223242526272829303132333435363738 |
- """Most bash-scripting is generated here.
- """
- BASH = '/bin/bash'
- BUG_avoid_Text_file_busy = True
- # http://stackoverflow.com/questions/1384398/usr-bin-perl-bad-interpreter-text-file-busy/
- def write_sub_script(ofs, script):
- # We use shebang + chmod so we can see the sub-script in 'top'.
- # In order to avoid '/bin/bash: bad interpreter: Text file busy',
- # we 'touch' the sub-script after chmod.
- # http://superuser.com/questions/934300/bin-bash-bad-interpreter-text-file-busy-even-though-the-file-editor-closed
- ofs.write('#!{}\n'.format(BASH))
- ofs.write('set -vex\n')
- ofs.write(script)
- if BUG_avoid_Text_file_busy:
- exe = BASH
- else:
- # We prefer to run via shebang b/c we want the script-name to appear to 'top',
- # but some users have a problem with that, e.g.
- # https://github.com/PacificBiosciences/FALCON/issues/269
- # Another idea never worked reliably:
- # chmod +x {sub_script_bfn}
- # touch {sub_script_bfn}
- # We are trying to avoid this problem:
- # /bin/bash: bad interpreter: Text file busy
- exe = ''
- return exe
- def write_script(script, script_fn, job_done_fn=None):
- if job_done_fn:
- script += '\ntouch {}\n'.format(job_done_fn)
- with open(script_fn, 'w') as ofs:
- exe = write_sub_script(ofs, script)
|