From 284d726d5e109e4421f5b514823806a7bad5e517 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 0d93801d0..252f1cba0 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), ])