Subject: (ledger|trezor|keepkey)-agent execute shell code with python interpreter

From: Vagrant Cascadian <[email-masked]>
Date: Thu, 07 Feb 2019 17:34:33 -0800

When running trezor-agent (or any of the others), I get a bizarre python
traceback with a bunch of code that looks to be shell code.

$ trezor-agent
Traceback (most recent call last):
  File "/gnu/store/77i5pm165ljn8fx030z41yqaja77lb99-trezor-agent-0.10.0/bin/.trezor-agent-real", line 11, in <module>
    load_entry_point('trezor-agent==0.10.0', 'console_scripts', 'trezor-agent')()
  File "/gnu/store/9z98cvjm7p7z21xdid1ryydxy5vyz6wr-python-3.7.0/lib/python3.7/site-packages/pkg_resources/__init__.py", line 480, in load_entry_point
...
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/gnu/store/77i5pm165ljn8fx030z41yqaja77lb99-trezor-agent-0.10.0/bin/trezor_agent.py", line 2
    export PYTHONPATH="/gnu/store/ ... site-packages${PYTHONPATH:+:}$PYTHONPATH"
                    ^
SyntaxError: invalid syntax

It looks to me that .trezor-agent-real is trying to import
trezor_agent.py as a python module, and obviously failing, because it
is also a shell wrapper around .trezor_agent.py-real

My guess is the correct way to fix this is to not install the shell
wrapper around trezor_agent.py and/or put trezor_agent.py into a
proper module in PYTHONPATH, rather than in /bin.

I'm not sure how to do that in the packaging, but I've manually hacked
around this by copying all of the .*-real files from /bin into another
directory, renaming them to their original names, adding the directory
to PATH, and setting PYTHONPATH manually to what the shell wrappers were
doing, and then I'm able to at least use the ssh-agent and gpg-agent
functionality...

Currently, none of these packages build in master because python-trezor
doesn't build anymore, but I've submitted a patch to update and fix
python-trezor(#34326), and have local patches dependent on that to
update python-trezor-agent, trezor-agent, ledger-agent and keepkey-agent
that at least get it to build.

live well,
  vagrant