Skip to content

Commit

Permalink
artiq_flash: explicitly pass path within conda env to openocd dataroo…
Browse files Browse the repository at this point in the history
…tdir.

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.
whitequark authored and sbourdeauducq committed Jun 6, 2016
1 parent 67b3afd commit 284d726
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions artiq/frontend/artiq_flash.py
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@
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),
])

0 comments on commit 284d726

Please sign in to comment.