From 57be065c1585917b254e4efe0f1f696fd63597c3 Mon Sep 17 00:00:00 2001 From: whitequark Date: Mon, 6 Jun 2016 19:01:39 +0000 Subject: [PATCH] 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. --- artiq/frontend/artiq_flash.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/artiq/frontend/artiq_flash.py b/artiq/frontend/artiq_flash.py index c6aea8fb7..076b5eaaa 100755 --- a/artiq/frontend/artiq_flash.py +++ b/artiq/frontend/artiq_flash.py @@ -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), ])