summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Track package hash in memory index, add hash testFred Hebert2016-10-041-1/+17
| | | | | | | | | | 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.
* Properly support package aliasing and alt namesFred Hebert2016-09-271-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* allow using an alternate regex to locate test modules during eunit runsalisdair sullivan2016-09-201-7/+12
| | | | | | | | {`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
* Merge pull request #1332 from erlang/rebar-1327Fred Hebert2016-09-201-1/+15
|\ | | | | compile + cover compile prior to analyzing coverdata
| * only compile/cover compile when generating analysisalisdair sullivan2016-09-201-4/+13
| | | | | | | | don't compile when resetting coverdata
| * cover compile prior to calculating coveragealisdair sullivan2016-09-201-1/+6
| | | | | | | | fixes #1327
* | recompile all files when a parse transform given as an opt needs updatingalisdair sullivan2016-09-201-1/+15
|/ | | | | | | | | 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
* Merge pull request #1321 from vans163/error_on_load_file_failureFred Hebert2016-09-151-2/+13
|\ | | | | log error if a module failed to load_file, the user should be aware
| * replace error with debugvans1632016-09-031-2/+2
| |
| * log error if a module failed to load_file, the user should be awarevans1632016-09-031-2/+13
| |
* | Ignore mv warningsDavid de Boer2016-09-151-3/+8
| | | | | | | | | | | | | | 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".
* | Back to semver version post releaseFred Hebert2016-09-021-1/+1
| |
* | Bump to 3.3.1Fred Hebert2016-09-021-1/+1
|/
* delete purge load_file specific ordervans1632016-09-021-1/+1
|
* Make less than R17 compatiblevans1632016-09-011-7/+11
|
* comment and spacing fixupvans1632016-09-011-5/+4
|
* Update rebar_agent.erlvans1632016-09-011-3/+3
| | | opps. Infinite loop fixed.
* Update rebar_agent.erlvans1632016-09-011-2/+29
| | | | https://github.com/erlang/rebar3/pull/1317 In reference to with support to load erlang code atomically but load nifs non-atomically.
* Merge pull request #1318 from tuncer/conventional-stacktraceFred Hebert2016-08-311-1/+1
|\ | | | | Print stacktrace in a more conventional way
| * Print stacktrace in a more conventional wayTuncer Ayaz2016-08-301-1/+1
| | | | | | | | | | | | 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.
* | reset accumulated coverdata on writing out to disk. this preventsalisdair sullivan2016-08-271-0/+2
| | | | | | | | | | provider chains like `eunit, ct, proper` from misreporting cover stats from providers later in the sequence
* | Merge pull request #1315 from ferd/fix-hashcheck-noindexFred Hebert2016-08-271-1/+10
|\ \ | | | | | | Fix crash when doing hash check with missing index
| * | Fix crash when doing hash check with missing indexFred Hebert2016-08-271-1/+10
| |/ | | | | | | | | | | | | | | | | | | 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.
* | Re-format cover exclusion codeFred Hebert2016-08-271-17/+26
| | | | | | | | | | | | - 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
* | Merge branch 'cover_excl_mods' of https://github.com/lpgauth/rebar3 into ↵Fred Hebert2016-08-271-15/+23
|\ \ | |/ |/| | | lpgauth-cover_excl_mods
| * Add support for cover_excl_modsLouis-Philippe Gauthier2016-06-151-15/+23
| |
| * Cutting 3.1.1Fred Hebert2016-05-171-1/+1
| |
* | Returning to git-based taggingFred Hebert2016-08-261-1/+1
| |
* | Bumping to 3.3.0Fred Hebert2016-08-261-1/+1
| |
* | Equivalent trim_all in bin split for <17.xFred Hebert2016-08-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Make Edoc carry paths of pre-built librariesFred Hebert2016-08-251-9/+26
| | | | | | | | | | | | | | | | | | | | | | 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.
* | Print error on too many help argumentsRasmus Svensson2016-08-151-1/+4
| | | | | | | | | | | | | | 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>
* | Make the escriptize provider hookableFred Hebert2016-08-131-2/+7
| | | | | | | | This will allow to move and modify the generated files
* | Merge pull request #1298 from ferd/escript-filter-paths-fixFred Hebert2016-08-101-1/+3
|\ \ | | | | | | Fix filtering of system libraries in escriptize
| * | Fix filtering of system libraries in escriptizeFred Hebert2016-08-101-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Merge pull request #1288 from ElectronicRU/masterFred Hebert2016-08-101-1/+1
|\ \ \ | | | | | | | | Typo fix.
| * | | Typo fix.Alexander Sedov2016-08-041-1/+1
| |/ /
* | | Merge pull request #1282 from ssbx/custom_template_dirFred Hebert2016-08-101-1/+1
|\ \ \ | | | | | | | | template_dir option was forgotten in documentation plus recurse in di…
| * | | template_dir option was forgotten in documentation plus recurse in directory ↵Sébastien Serre2016-07-231-1/+1
| | | | | | | | | | | | | | | | added
* | | | Handle `escriptize` when the specified app is missingNathaniel Waisbrot2016-08-041-2/+6
| |/ / |/| | | | | | | | | | | When rebar.config contains a `escript_main_app` option, but the specified app doesn't exist in the build directory, print an error.
* | | Merge pull request #1274 from deadtrickster/ssl_verify_fun_bumpFred Hebert2016-08-011-1/+1
|\ \ \ | | | | | | | | ssl_verify_hostname was renamed to ssl_verify_fun
| * | | ssl_verify_hostname was renamed to ssl_verify_funIlya Khaprov2016-07-151-1/+1
| | | |
* | | | Merge pull request #1279 from gbour/fix-dialyzeralisdair sullivan2016-07-311-0/+2
|\ \ \ \ | |_|/ / |/| | | fix catching `not_valid` error on dialyzer
| * | | Fix return error on `not_valid` to force .plt file regenerationGuillaume Bour2016-07-301-2/+1
| | | |
| * | | Fix support for `not_valid` dialyzer errorGuillaume Bour2016-07-221-0/+3
| |/ /
* | | Fix opts check when compiler called with dict optsFred Hebert2016-07-221-1/+7
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rebar_base_compiler allows to be called with two types of options: a dictionary, or a rebar_state record. In the later case, the options are taken out with a call from rebar_opts, which fetches options that have been inserted in the application via rebar_app_info as part of the app_discovery phase, and are a list. This yields a possibility that options used when formatting warnings can either be a list of a dict, and we only used lists when making checks. This ended up breaking 3rd party compiler users (i.e. LFE compile plugin) since they were calling us with a dict rather than our own internal records. This patch supports both types of lookups to avoid issues.
* | Avoid PLT rebuild when files deleted on new dialyzerJames Fish2016-07-111-3/+16
| |
* | Don't error when analyzing empty appJames Fish2016-07-111-4/+7
| |
* | Handle empty PLTsJames Fish2016-07-111-1/+12
| |
* | Merge pull request #1249 from ferd/required-escript-depsFred Hebert2016-07-081-5/+19
|\ \ | | | | | | Escriptize based on configured apps only