| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\
| |
| | |
Properly support package aliasing and alt names
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds tracking of package hash in the in-memory index rather than
the current `undefined' values.
According to the test added, this is not necessary for transitive
package dep hash chcking, but does result in a more complete index search
result when doing app lookups, and could yield some optimizations on
hash checks by checking from the index structure before fetching a package.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Aliasing only had a bit of ad-hoc support in rebar3, and various issues
have encountered problems related to the package names not mapping
properly with the application name. One such issue is
https://github.com/erlang/rebar3/issues/1290
The problem has been hard to find because it only impacts transitive
dependencies (not top-level ones) of other packages. The root cause for
this is that the application name was not being tracked by rebar3's internal
index, only the package name and its version were.
When a given application was a package app, the data for the application
name would be reconstructed from the lock file, but only if it were a
top-level app or a dependency of a source application where parsing the
lock file is necessary to know what comes next.
When a transitive dependency of a package dependency was fetched, we
instead read its dependencies directly from the in-memory package index
within rebar3. This caused us to only read the package name and version,
and lost all information regarding application name. This worked fine
for most cases since for the vast majority of packages, the package name
matches the app name, but failed for all aliases, which would then be
moved to directories that wouldn't match the app name.
This in turn broke some aspects of code analysis (in Dialyzer), or other
functionality relying on static paths, such as including .hrl files from
dependencies.
This patch reformats the internal storage format of dependencies to
align with the internal one used by rebar3, so that the app name can be
carried along with the package name and its version.
The fix can only work once `rebar3 update` is called so the index is
rebuilt internally, and will the file cached on disk will be
incompatible with older rebar3 versions.
Currently, the following is not covered:
- Tests
- Including the package hashes of dependencies so they may match what
is in a lock file -- they're being `undefined` instead, which may
break some lookups. The previous format did not lend itself to hashing
in the same way, and it is possible transitive deps were not being
tracked properly, or worked by respecting the current package hierarchy.
This will require further analysis
For now this commit can allow reviewing and discussion.
|
|\ \
| | |
| | |
| | |
| | | |
Fix sys.config's handling in common_test and otherwise.
closes #1289
|
| | |
| | |
| | |
| | |
| | | |
- restore path after loading applications,
- helpful comments.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| | |
It turns out that pretty-printing uses throw-catch and thus garbages out
the stack trace sometimes, so we should get it only once.
|
| |
| |
| |
| | |
Helps cover extra cases.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When an include file is set in a private path (i.e. src/), the rebar3
compiler would not add them to the {i, Path} params -- only include/ and
the project root were being added.
This meant that when some extra source directories were added to the
compile job, such as test/ when running under the test profile, the
private include paths could not be shared with the test module.
This patch fixes the issues (and adds tests) for such a specific case by
adding all the configured include paths to the {i, Path} erl_opts
arguments, yielding successful compile runs.
|
|/ |
|
|
|
|
|
|
|
|
| |
{`eunit_test_regex`, Regex}` will use the supplied `Regex` instead of
the default to locate tests in test dirs. note this matches only the
filename, not the path. the regex is applied to all test dirs, recursively
fixes #1331
|
|\
| |
| | |
compile + cover compile prior to analyzing coverdata
|
| |
| |
| |
| | |
don't compile when resetting coverdata
|
| |
| |
| |
| | |
fixes #1327
|
|/
|
|
|
|
|
|
|
| |
there's no way to detect which files actually rely on a parse transform
passed to the compiler via the options (as opposed to `-compile(..)`
so if any parse transforms are in modules that need recompiling just
recompile the world
fixes #1328
|
|\
| |
| | |
log error if a module failed to load_file, the user should be aware
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
In some cases, mv will throw a warning, while still moving the files
correctly and returning a 0 return code:
"mv: can't preserve ownership of ... Permission denied".
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
|
|
| |
opps. Infinite loop fixed.
|
|
|
|
| |
https://github.com/erlang/rebar3/pull/1317
In reference to with support to load erlang code atomically but load nifs non-atomically.
|
|\
| |
| | |
Print stacktrace in a more conventional way
|
| |
| |
| |
| |
| |
| | |
Insert a newline before printing the stacktrace so that the term is
easier to read and copy. This is a more conventional way to print
traces, and is, for instance, the way it's done by make and python.
|
| |
| |
| |
| |
| | |
provider chains like `eunit, ct, proper` from misreporting cover
stats from providers later in the sequence
|
|\ \
| | |
| | | |
Fix crash when doing hash check with missing index
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Specifically, when fetching an application where the expected hash is
unknown, the hash is validated from the hex index; when the index is
available, the hash is fetched fine and later inserted in the lock file.
However, if the index is not available, the call would simply crash.
This patch fixes thing so that instead, the index is refreshed before
giving up and failing.
|
| |
| |
| |
| |
| |
| | |
- brings back former error handling and debug messages
- keeps the filtering of excluded mods and debug messages
- breaks up code into multiple functions and removes nesting
|
|\ \
| |/
|/|
| | |
lpgauth-cover_excl_mods
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The trim_all option used in binary:split/3 is not supported in 17.x.
This patch makes an equivalent operation by eliminating empty split
fragments. From the docs:
trim
Removes trailing empty parts of the result (as does trim in
re:split/3.
trim_all
Removes all empty parts of the result.
The new expression is therefore equivalent to the old one, but with the
added benefit of compatibility.
Fixes #1275
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Given the topological sort applied to top-level apps, we should be able
to carry the edoc values for paths configured when more than one app
exists.
This allows multiple disjoint app to have defined cross-linking in the
documentation.
Tests pending.
|
| |
| |
| |
| |
| |
| |
| | |
Previously the help task would crash when given more than two
arguments. After this change it instead print a message:
Too many arguments given. Usage: rebar3 help [<namespace>] <task>
|
| |
| |
| |
| | |
This will allow to move and modify the generated files
|
|\ \
| | |
| | | |
Fix filtering of system libraries in escriptize
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
https://github.com/erlang/rebar3/pull/1249 introduced a mechanism by
which escript dependencies of applications only would be included; this
required adding a filter to skip system libraries in the OTP root
because that tends to break escripts in very nasty ways.
However, the problem came that some libraries are just not in the
escript path but may still be included; for these libraries the path
prefix check failed as they return `{error, bad_name}` from
`code:lib_dir(Dep)` rather than just the path they're in --
specifically, this happens with top level apps.
The issue was reported in https://github.com/erlang/rebar3/issues/1294
and the current patch fixes it by accepting a `bad_name` dep as valid,
since it is obviously not in the root path.
|
|\ \ \
| | | |
| | | | |
Typo fix.
|
| |/ / |
|
|\ \ \
| | | |
| | | | |
template_dir option was forgotten in documentation plus recurse in di…
|
| | | |
| | | |
| | | |
| | | | |
added
|