Age | Commit message (Collapse) | Author |
|
This method dates back from the beginnings of Erlang.mk
and should not have been used for around a decade by now.
Adding "git" to the offending dep lines is enough to upgrade.
|
|
|
|
Erlang.mk will no longer feature packages out of the box,
except for the applications that we implement plugins for
(such as erlydtl, proper or relx) and the projects I work
on that are also used to test Erlang.mk (cowboy and friends).
This is a breaking change. In most cases the fix is to add
a full dep_* line for the dependencies that were used as
packages before.
|
|
The tests were waiting for the test group to finish before
they could continue with the next test group. Now "core"
and "all" targets directly depend on individual test cases,
allowing parallel Make to get to the next tests quicker and
removing 1/3rd of the total run time.
make check -j8 -k 5790,16s user 1207,08s system 627% cpu 18:35,49 total
make check -j8 -k 6250,13s user 1326,77s system 972% cpu 12:59,16 total
|
|
We now provide the version as a tagged tuple indicating
whether this is a branch, tag or ref. This should help
rebar automatically upgrade dependencies, and remove
an annoying warning when rebar is used.
In order to detect the type of version the dependencies
must be available, therefore the rebar.config target now
depends on the deps target.
To test this the Cowboy package version had to be changed
from 1.0.4 to master. This is a breaking change, but I do
not expect too many people to still use 1.0.4.
|
|
It's become hard to find a host that provides Subversion.
|
|
|
|
|
|
|
|
|
|
Loïc: Added more info to guide.
|
|
Test broke when git did a security fix related to file://
that we are using for the submodule in this test.
|
|
|
|
|
|
|
|
This is the case in erlang-systemd [1]. As far as I can tell, the format
is the same for the bits Erlang.mk is interested in.
The testsuite is expanded to use version 0.6.0 of erlang-systemd.
[1] https://github.com/rabbitmq/erlang-systemd
|
|
Apparently it was renamed.
|
|
There are no popular Mercurial providers anymore. We can
enable it again when things change. Gitlab might add it
in the future.
|
|
|
|
|
|
... in addition to the `$(force_rebuild_dep)` function.
It's easier for the common use case than specify a function.
|
|
|
|
|
|
|
|
By default, Erlang.mk only builds dependencies once, the first time the
top-level project is compiled. A forced rebuild of all dependencies can
be forced by setting the `$(FULL)` variable to a non-empty value.
For developers working on the top-level project and one or more
dependencies at the same time, Erlang.mk now accepts a variable/function
called `$(force_rebuilding_dep)` which is called to determine if the
dependency passed as the first argument should be forcibly rebuilt.
It allows a developer to filter the dependencies he works on (so they
are always rebuilt) from other third-party dependencies he never touches
(i.e. they are only built once at the beginning).
The content of `$(force_rebuilding_dep)` is expected to be a shell
one-liner where the `$(1)` Make variable is set to the path to the
dependency.
Here is an example from the testsuite:
force_rebuilding_dep = test '$(1)' = '$(CURDIR)/deps/cowlib'
|
|
By default MSYS2 will copy and not link, altering Erlang.mk's
behavior. To properly link an option must be enabled and
administrative privileges granted.
|
|
Here, we want to make sure that `list-deps` always lists all
dependencies, no matter if they are up-to-date or not. I.e. we want to
always visit them and list them recursively.
|
|
In the case of a multi-applications repository, if one application
depends on another one (using `$(LOCAL_DEPS)`), it will now be listed in
the `list-deps` targets.
Add `ssl` to the `$(LOCAL_DEPS)` in the testcase to ensure that
applications not in `$(APPS_DIR)` are not affected by this change.
Add a changelog entry.
|
|
The issue was that when a new dep is added the last-makefile-change
update was done in the dependency and not in the top-level Makefile,
preventing the rebuild of the top-level project.
A test was also added to do the same when editing dependencies and
things seem to work properly in that case.
Thanks to robinchew on IRC for the great help debugging this.
|
|
And use this in the tests to fetch Rebar only once and then
clone from the local repository. This should speed up tests
a little.
|
|
Unless it's a symbolic link, it's built directly, FULL=1 is set
or the file ebin/dep_built in the dependency is removed.
See the documentation changes for more details.
This provides immense build speed gains, for example on a
RabbitMQ project it went from 10s to 1s for the 2nd+ builds.
|
|
|
|
The $(...) form was improperly converted. In addition it
must be changed into a $(shell ...) form.
|
|
When the $(MAKE) is inside an $(eval $(call ...)) then it needs
to be escaped as $$(MAKE).
When the $(MAKE) is inside a $(call ...) then I did not figure
out a way other than passing it as an argument.
When the $(MAKE) is inside many levels of $(call $(call ...))
it's easier to avoid it if at all possible, so I replaced the
rebar $(MAKE) call with ./bootstrap. I confirmed it works fine
on Windows as well.
|
|
|
|
It clones and checkouts like the git fetch method, but
does so in the Erlang.mk temporary directory. It then
creates a symbolic link to the subfolder for the dependency.
|
|
|
|
|
|
So they can use include files and other from other apps
when they're built directly, and that they use the same
deps directory.
|
|
|
|
|
|
|
|
When the test check the running applications in the started release, the
node may not be up yet. So loop until the command returns a list of
applications (instead of "Node is not running!").
This fixes some transient failures.
|
|
|
|
we also use LOCAL_DEPS at the top-level, if it exists, to determine
which local apps to compile, in the interest of saving compile time
for projects that have many apps and multiple release configurations
|
|
`rm deps.log` was not being executed, because of 1) the ifeq around
it, checking for an empty ALL_DEPS_DIRS, which i believe was a logical
error; and 2) deps depended on apps, which means apps were compiled
before its recipe was executed, and the `rm deps.log` would be
executed after it had been written to by recursive make of the
apps.
the important reason to remove deps.log is so that dependencies get
remade when they change. otherwise you'll get mysterious errors about
missing dependencies if they need to be rebuilt, or worse, have wrong
stale beam files bundled in your release.
tests core-deps-apps and core-deps-apps-only now manually clean the
cowlib dep and rebuild at the top-level to make sure cowlib gets
rebuilt. both tests indeed fail without this fix.
this attempts to fix #1 by removing the ifeq, and #2 by having deps
and apps depend on deps.log, with deps.log 'built' (but actually
removed) by a double-colon rule with no prerequisites (which means its
recipe always be run).
|
|
|
|
.. to fetch and list deps recurvively.
Therefore, they work on direct dependencies, dependencies' dependencies,
and so on. Nothing is built with those targets.
The following targets are also available to work on other kinds of
dependencies:
make fetch-doc-deps
make fetch-rel-deps
make fetch-test-deps
make fetch-shell-deps
make list-doc-deps
make list-rel-deps
make list-test-deps
make list-shell-deps
In all cases, they include "normal" and eg. "test" dependencies of the
top-level project, then only "normal" dependencies' dependencies.
It's possible to include several kinds in one go:
make fetch-deps DEP_TYPES='doc test'
make list-deps DEP_TYPES='doc test'
As it may be difficult to use the output of `make list-*` because
the list could appear after other targets output (like dependencies
fetching), the list is available in files pointed by the following
variables:
$(ERLANG_MK_RECURSIVE_DEPS_LIST)
$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST)
$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST)
$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST)
$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST)
Internally, `list-deps` is simply implemented on top of `fetch-deps`:
the latter fills a sorted log with all the directories it traversed.
`list-deps` finally just prints the log file to stdout.
Fixes #560.
|
|
Replicating the behavior for deps/*.
With refactoring from Loïc.
|
|
Erlc will not include_lib() apps that do not have an ebin/ directory. This test case demonstrates that.
|