question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Get rid of soft-dependencies (excluding plugins)

See original GitHub issue

Description

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:

  1. Get rid of these soft dependencies by moving the features into non-default plugins.
  2. Make these soft dependencies required.
  3. Move any code requiring a soft dependency into a (default) plugin, adding the python packages as extras_require in our pyproject.toml. Users who installed angr management via either git or pip could then install these extra dependencies as needed via something like pip install angrmanagement[docker], which could install archr and keystone-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:open
  • Created 9 months ago
  • Reactions:1
  • Comments:5 (5 by maintainers)

github_iconTop GitHub Comments

1reaction
rhelmotcommented, Dec 13, 2022

interaction view can probably be axed entirely. it was a cute idea from a hackathon long past, probably should have been a plugin.

0reactions
zwimercommented, Dec 20, 2022
Read more comments on GitHub >

github_iconTop Results From Across the Web

java - maven exclude plugin from project dependencies by ...
The problem is now that all resolved artifacts (for the plugins and for the project) are cached in only one local repository/folder. If...
Read more >
Developing Custom Gradle Plugins
A Gradle plugin packages up reusable pieces of build logic, which can be used across many different projects and builds. Gradle allows you...
Read more >
Apache Maven Dependency Plugin
The plugin can then be configured to ignore these dependencies in either "declared but unused" or "undeclared but used" case or in both ......
Read more >
Support for excluding dependencies (eg, compiler plugins) #13
Would it be useful to provide a way to exclude dependencies from consideration? ... Compiler plugins should be correctly filtered out now.
Read more >
Maven Exclude Dependency | Transitive and Exclusion of ...
These dependencies can be ignored or excluded by using the ignoredDependencies, ignoredUsedUndeclaredDependencies, and ignoredUnusedDeclaredDependency tags ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found