Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error case when external library depends on listed library #33

Open
bvssvni opened this issue Aug 23, 2015 · 2 comments
Open

Error case when external library depends on listed library #33

bvssvni opened this issue Aug 23, 2015 · 2 comments

Comments

@bvssvni
Copy link
Member

bvssvni commented Aug 23, 2015

An external library that depends on a listed library will be assigned order 0. This leads to wrong update order. It is easy to fix, by adding the library to the extract list. Opened this issue to figure out whether something should be done to prevent this.

@bvssvni
Copy link
Member Author

bvssvni commented Aug 23, 2015

One idea is to extract information from crates.io to detect "holes" in the extract list.

  • If there are any holes, it will only cause problems if it is affected by updates.
  • If a hole can be detected, then it might be desirable to recommend adding the missing piece to the extract list.
  • If it can be verified that there are no holes, then this knowledge can be used for some operations.

@bvssvni
Copy link
Member Author

bvssvni commented Aug 26, 2015

The dependency info could be used for comparing the ecosystem against crates.io. This information is used to detect updates, so errors caused by holes is because the dependency information has holes. The recommended action to add to extract list makes only sense if the extract list is used to generate the dependency info.

When the dependency info does not list a library at top level, it could be a hole, but it usually is not.

!listed_at_top_level, ?!hole.

A library listed at top level can not be a hole.

listed_at_top_level, !hole.

If a library does not have any dependencies, then it is not a hole.

no_dependencies, !hole.

Adding a package to the dependency information might introduce holes, but usually it does not:

add_package, ?!introduce_holes.

Removing a package from the dependency information does not introduce holes.

remove_package, !introduce_holes.

A package can only introduce holes with less depth than itself. If there is no other library with less depth then it can not introduce holes.

no_library_with_less_depth_order, !introduce_holes.

A package where all dependencies are listed does not introduce holes.

all_dependencies_listed, !introduce_holes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant