Apps that are no longer used are not automatically deleted, but we tell
users it can be done. This is safer while we're not sure of the
correctness of these messages.
Error messages are added for transient dependencies and dependencies not
found.
- Many apps is supported through and through
- Not mentioning any app upgrades all apps
- Locks are refreshed on disk and tested as such after an upgrade
Only the most complex case is failing, where cross-dependencies would
need to be refetched as an update clears an app of its dependencies and
a different subtree should override it.
Change mock_pkg_resource to use rebar_test_utils:create_empty_app so
that an ebin directory is created which is a good expectation for a
package. Also revert the check in rebar_fetch:download_source to check
for an ebin directory before adding it to the code path for package
installs. If a package does not have an ebin directory it is probably
a good for an exception to be thrown.
Fix a bug where packages are not added to the code path after
installation. Dependent applications that build from source are not
affected by this issue since the build_apps function in
rebar_prv_compiler takes care of the code path changes for them. It is
only the precompiled packages that suffer from this issue.
Add xref support for multi-app projects. Instead of only adding the
top-level ebin directory to the xref server use
rebar_state:project_apps/1 to enumerate the applications for the
project and add the ebin directory for each one.
* Add a provider for the xref tool for running cross reference
analysis on a project. Most of the code has been ported directly
from the rebar2 rebar_xref module with some modification and cleanup
to support testing.
* Port over the eunit test suite from rebar2, but convert it to
common_test. The testing is the same, but now the
erlang term output is examined to determine if the test run is successful
instead of scanning the console output for the expected strings.