Age | Commit message (Collapse) | Author |
|
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.
|
|
|
|
Not only simpler but also faster, especially on Windows.
|
|
This way if for some unknown reason $(APP_TO_CLEAN) isn't
defined, we don't delete the entire world.
|
|
... not the first.
dep_autopatch can be an expensive macro, in particular because it
executes Erlang. So if NO_AUTOPATCH is set, it's best to avoid calling
dep_autopatch as the result will be unused anyway.
While here, add a test for autopatched rebar-based dependencies.
|
|
Initially submitted by Daniel White.
|
|
https://github.com/rabbitmq/erlang.mk
|
|
|
|
|
|
|
|
|
|
Also don't delete DEPS_DIR if SKIP_DEPS is set.
|
|
|
|
|
|
|
|
This changes adds Rebar-like "apps/" functionality.
From this commit onward, Erlang.mk supports 4 types of repositories:
- Repo with an Erlang app at root level + deps/
- Repo with an Erlang app at root level + apps/ deps/
- Repo with no app at root level + deps/
- Repo with no app at root level + apps/ deps/
Example usage:
- make new-app in=webchat
- make new t=gen_server n=my_chat in=webchat
- make
Replace new-app with new-lib to create an OTP library instead of
an OTP application.
|
|
Fixes a small warning printed on OSX, and don't run a specific
test on FreeBSD (compiles a C library not compatible with FreeBSD).
|
|
This fixes an issue on OSX where the OSX make 3.81 has a bug with
multilines single quoted arguments to commands: it strips the
backslash and newlines entirely. This makes it impossible to use
sed -i properly. Since this is the test suite, we can instead use
perl -ni, which can do the same and is available and work fine on
all tested platforms.
|
|
Some systems do not have subsecond file modification detection
capabilities. This is the case in OSX because the HFS+ file
system has 1 second resolution. This is also the case in other
OSes with particular file systems or even shells. For example,
the "test" command in Bash does not support subsecond file times,
while the ZSH one and the /usr/bin/test on my machine does. On
those systems, with Bash, find -newer will work, but not test -nt.
Tests were updated to reflect this. The test Makefile runs a
series of commands to determine if subsecond resolution is available.
When it is not, a sleep command will be executed before relevant
operations in the tests.
Because the Bash shell is often the default shell for Make, and
because users of ZSH may want to avoid sleeping for no reasons,
a new variable was introduced: ZSH=1. When provided when running
tests, the shell will be switched to ZSH, and subsecond resolution
will work as expected. Tests have been fixed to work with ZSH as
well.
All this only applies to tests, Erlang.mk itself is so far not
affected by this issue.
|
|
|
|
Fix IGNORE_DEPS not being propagated downward.
Fix IGNORE_DEPS handling with autopatched Rebar projects,
where the user defined value was overriden with the one
from autopatching.
|
|
|
|
Also improves the handling of the legacy fetch method. It is now
enabled only for dependencies, and not for the top-level application.
This should force Erlang.mk users to update their definitions.
|
|
|
|
|
|
Renamed dep-full to fetch-git to avoid having duplicate tests.
|
|
|
|
|
|
|
|
|
|
Releases are barely usable on Windows at this point, so this will
get revisited later on when I have time to improve the extended
start script. Currently it requires root rights, and it doesn't
have useful commands like rpcterms.
|
|
|
|
|
|
|