artiq_flash: explicitly pass path within conda env to openocd datarootdir.

By default, openocd searches for scripts in DATAROOTDIR/openocd/scripts.
This of course makes it not relocatable. Conda has a flag to try to
detect and fix such hardcoded paths, but it does not work on openocd
(likely because the .rodata contains an already concatenated path,
which cannot be padded with zeroes from the right).

So, we pass the path explicitly instead.
This commit is contained in:
whitequark 2016-06-06 19:01:39 +00:00
parent 6db96f81d5
commit 57be065c15

View File

@ -5,6 +5,7 @@ import argparse
import os
import subprocess
import tempfile
import site
from artiq import __artiq_dir__ as artiq_dir
from artiq.frontend.bit2bin import bit2bin
@ -76,6 +77,12 @@ def main():
raise SystemExit("Binaries directory '{}' does not exist"
.format(opts.dir))
conda_prefix_path = site.getsitepackages()[0]
if os.name == "nt":
scripts_path = os.path.join(conda_prefix_path, "Library", "share", "openocd", "scripts")
else:
scripts_path = os.path.join(conda_prefix_path, "share", "openocd", "scripts")
conv = False
prog = []
@ -124,6 +131,7 @@ def main():
bit2bin(bit, bin_handle)
subprocess.check_call([
"openocd",
"-s", scripts_path,
"-f", os.path.join("board", opts.target + ".cfg"),
"-c", "; ".join(prog),
])