Get rid of soft-dependencies (excluding plugins)
See original GitHub issueDescription
Right now angr management
has multiple soft dependencies:
In interaction_view.py
, for example, we soft require: archr
, keystone-engine
, nclib
, and slacrs
(though, this view seems useless without any of these installed).
pyinstaller
gives us a frozen python environment, which means these features are simply not-usable for many of our users. I would (and still do) suggest moving something like the interactions_view
into a plugin, but if it is a default plugin we ship, it will simply be unusable for users of the pyinstaller build.
With that in mind, I think we should do one of the following:
- Get rid of these soft dependencies by moving the features into non-default plugins.
- Make these soft dependencies required.
- Move any code requiring a soft dependency into a (default) plugin, adding the python packages as
extras_require
in ourpyproject.toml
. Users who installedangr management
via either git or pip could then install these extra dependencies as needed via something likepip install angrmanagement[docker]
, which could installarchr
andkeystone-engine
for docker image target support. The pyinstaller build would then need to be built either without these options, preventing users from using these default plugins at all, or with all of these options, allowing users to use all of the default plugins.
Alternatives
Do 1
as much as possible, then do 3
as much as possible for the rest, then apply strategy 2
for any remaining soft dependencies. This is probably the best choice.
Additional context
No response
Issue Analytics
- State:
- Created 9 months ago
- Reactions:1
- Comments:5 (5 by maintainers)
Top GitHub Comments
interaction view can probably be axed entirely. it was a cute idea from a hackathon long past, probably should have been a plugin.
Related: https://github.com/angr/angr-management/issues/861