#!/usr/bin/env python3 #import birchenv import copy import os import os.path import subprocess import sys # Wrapper for tbl2asn March 3, 2020 """ We need to run tbl2asn through a wrapper because the NCBI tbl2asn binary needs one or more libraries, including libidn.so.11. The solution is to run tbl2asn from a script that puts the libraries into LD_LIBRARY_PATH or DYLD_LIBRARY_PATH. Using a bash script,I have been unable to get tbl2asn from a to run using the -j option, escaping in all possible ways single and double quotes. For some reason, running tbl2asn works from a Python script. """ if 'BIRCH' in os.environ: BIRCH = os.environ.get('BIRCH') print('BIRCH=' + BIRCH) else : print('tbl2asn.py: BIRCH environment variable not set') exit(1) if 'BIRCH_PLATFORM' in os.environ: BIRCH_PLATFORM = os.environ.get('BIRCH_PLATFORM') print('BIRCH_PLATFORM=' + BIRCH_PLATFORM) #if 'LD_LIBRARY_PATH' in os.environ: # LD_LIBRARY_PATH = os.environ.get('LD_LIBRARY_PATH') #else: # LD_LIBRARY_PATH = "" #print('LD_LIBRARY_PATH=' + LD_LIBRARY_PATH) if BIRCH_PLATFORM == 'osx-x86_64': DYLD_LIBRARY_PATH = os.path.join(BIRCH, 'lib-' + BIRCH_PLATFORM, 'tbl2asn') print('DYLD_LIBRARY_PATH=' + DYLD_LIBRARY_PATH) os.environ["DYLD_LIBRARY_PATH"] = DYLD_LIBRARY_PATH elif BIRCH_PLATFORM == 'macos-arm64': DYLD_LIBRARY_PATH = os.path.join(BIRCH, 'lib-' + BIRCH_PLATFORM, 'tbl2asn') print('DYLD_LIBRARY_PATH=' + DYLD_LIBRARY_PATH) os.environ["DYLD_LIBRARY_PATH"] = DYLD_LIBRARY_PATH elif BIRCH_PLATFORM == "linux-x86_64": LD_LIBRARY_PATH = os.path.join(BIRCH, 'lib-' + BIRCH_PLATFORM, 'tbl2asn') print('LD_LIBRARY_PATH=' + LD_LIBRARY_PATH) os.environ["LD_LIBRARY_PATH"] = LD_LIBRARY_PATH else : print("Platform " + BIRCH_PLATFORM + "not supported.") exit cmd_run = copy.copy(sys.argv) cmd_run[0] = 'tbl2asn.bin' print(cmd_run) subprocess.call(cmd_run, env=os.environ)