def create_temp_executable_file(suffix, c_code=None): tmpdir = None if TRAVIS and OSX: tmpdir = "/private/tmp" fd, path = tempfile.mkstemp(prefix='psu', suffix=suffix, dir=tmpdir) os.close(fd) if which("gcc"): if c_code is None: c_code = textwrap.dedent(""" #include <unistd.h> void main() { pause(); } """) fd, c_file = tempfile.mkstemp(prefix='psu', suffix='.c', dir=tmpdir) os.close(fd) with open(c_file, "w") as f: f.write(c_code) subprocess.check_call(["gcc", c_file, "-o", path]) safe_remove(c_file) else: # fallback - use python's executable shutil.copyfile(sys.executable, path) if POSIX: st = os.stat(path) os.chmod(path, st.st_mode | stat.S_IEXEC) return path
def create_exe(outpath, c_code=None): """Creates an executable file in the given location.""" assert not os.path.exists(outpath), outpath if c_code: if not which("gcc"): raise ValueError("gcc is not installed") if c_code is None: c_code = textwrap.dedent(""" #include <unistd.h> int main() { pause(); return 1; } """) with tempfile.NamedTemporaryFile(suffix='.c', delete=False, mode='wt') as f: f.write(c_code) try: subprocess.check_call(["gcc", f.name, "-o", outpath]) finally: safe_rmpath(f.name) else: # copy python executable shutil.copyfile(sys.executable, outpath) if POSIX: st = os.stat(outpath) os.chmod(outpath, st.st_mode | stat.S_IEXEC)
def create_exe(outpath, c_code=None): """Creates an executable file in the given location.""" assert not os.path.exists(outpath), outpath if c_code: if not which("gcc"): raise ValueError("gcc is not installed") if c_code is None: c_code = textwrap.dedent( """ #include <unistd.h> int main() { pause(); return 1; } """) with tempfile.NamedTemporaryFile( suffix='.c', delete=False, mode='wt') as f: f.write(c_code) try: subprocess.check_call(["gcc", f.name, "-o", outpath]) finally: safe_rmpath(f.name) else: # copy python executable shutil.copyfile(sys.executable, outpath) if POSIX: st = os.stat(outpath) os.chmod(outpath, st.st_mode | stat.S_IEXEC)
def create_temp_executable_file(suffix, c_code=None): tmpdir = None if TRAVIS and OSX: tmpdir = "/private/tmp" fd, path = tempfile.mkstemp( prefix='psu', suffix=suffix, dir=tmpdir) os.close(fd) if which("gcc"): if c_code is None: c_code = textwrap.dedent( """ #include <unistd.h> void main() { pause(); } """) fd, c_file = tempfile.mkstemp( prefix='psu', suffix='.c', dir=tmpdir) os.close(fd) with open(c_file, "w") as f: f.write(c_code) subprocess.check_call(["gcc", c_file, "-o", path]) safe_remove(c_file) else: # fallback - use python's executable shutil.copyfile(sys.executable, path) if POSIX: st = os.stat(path) os.chmod(path, st.st_mode | stat.S_IEXEC) return path
def _get_py_exe(): def attempt(exe): try: subprocess.check_call( [exe, "-V"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) except Exception: return None else: return exe if MACOS: exe = \ attempt(sys.executable) or \ attempt(os.path.realpath(sys.executable)) or \ attempt(which("python%s.%s" % sys.version_info[:2])) or \ attempt(psutil.Process().exe()) if not exe: raise ValueError("can't find python exe real abspath") return exe else: exe = os.path.realpath(sys.executable) if WINDOWS: # avoid subprocess warnings exe = exe.replace('\\', '\\\\') assert os.path.exists(exe), exe return exe
def create_exe(outpath, c_code=None): """Creates an executable file in the given location.""" assert not os.path.exists(outpath), outpath if c_code: if not which("gcc"): raise ValueError("gcc is not installed") if isinstance(c_code, bool): # c_code is True c_code = textwrap.dedent( """ #include <unistd.h> int main() { pause(); return 1; } """) assert isinstance(c_code, str), c_code with open(get_testfn(suffix='.c'), 'wt') as f: f.write(c_code) try: subprocess.check_call(["gcc", f.name, "-o", outpath]) finally: safe_rmpath(f.name) else: # copy python executable shutil.copyfile(PYTHON_EXE, outpath) if POSIX: st = os.stat(outpath) os.chmod(outpath, st.st_mode | stat.S_IEXEC)
def create_temp_executable_file(suffix, c_code=None): def create_temp_file(suffix=None): tmpdir = None if TRAVIS and OSX: tmpdir = "/private/tmp" fd, path = tempfile.mkstemp(prefix=TESTFILE_PREFIX, suffix=suffix, dir=tmpdir) os.close(fd) return os.path.realpath(path) exe_file = create_temp_file(suffix=suffix) if which("gcc"): if c_code is None: c_code = textwrap.dedent(""" #include <unistd.h> int main() { pause(); return 1; } """) c_file = create_temp_file(suffix=".c") with open(c_file, "w") as f: f.write(c_code) subprocess.check_call(["gcc", c_file, "-o", exe_file]) safe_rmpath(c_file) else: # fallback - use python's executable shutil.copyfile(sys.executable, exe_file) if POSIX: st = os.stat(exe_file) os.chmod(exe_file, st.st_mode | stat.S_IEXEC) return exe_file
def create_exe(outpath, c_code=None): assert not os.path.exists(outpath), outpath if which("gcc"): if c_code is None: c_code = textwrap.dedent( """ #include <unistd.h> int main() { pause(); return 1; } """) with tempfile.NamedTemporaryFile( suffix='.c', delete=False, mode='wt') as f: f.write(c_code) try: subprocess.check_call(["gcc", f.name, "-o", outpath]) finally: safe_rmpath(f.name) else: # fallback - use python's executable shutil.copyfile(sys.executable, outpath) if POSIX: st = os.stat(outpath) os.chmod(outpath, st.st_mode | stat.S_IEXEC)
def _get_py_exe(): exe = os.path.realpath(sys.executable) if not os.path.exists(exe): # It seems this only occurs on OSX. exe = which("python%s.%s" % sys.version_info[:2]) if not exe or not os.path.exists(exe): ValueError("can't find python exe real abspath") return exe