Helper script to pre-test murdock build conditions.
This is intended to compile like murdock giving control for only a subset of
boards or applications. One can use this if only a limited change should be
build tested. Defaults boards and apps are selected to be an early warning
if something is wrong.
This should be used before triggering much larger murdock builds.
The following use cases are:
I made a change to something in the stm32 clocks...
./compile_like_murdock.py -c stm32
I changed a driver the DHT driver
./compile_like_murdock.py -a tests/driver_dht tests/saul
I changed a nucleo-f103rb board...
./compile_like_murdock.py -a tests/driver_dht tests/saul
Not all operating systems name the GNU Make `make`. FreeBSD e.g. uses a
different dialect of Make, that seems to be incompatible with GNU make.
(I wasn't able to get `make` run, but `gmake` works).
This allows our test scripts to be configured via the environment
variable `MAKE` to point to a different make command.
We are at a point were building all of RIOT takes massive amounts of
storage. Since my machine runs full after only compiling ~20
applications (I have ~170 GB free storage if the RIOT repo is clean).
Thus the easiest solution for the compile tests is to just clean-up the
mess they made ;-).
`compile_test.py` fails if there are empty folders in `/examples` or
`tests`. This is not a problem for Travis, because it always has a clean
repo.
For the average users there is a problem if they work on multiple
branches and one branch has new examples or tests. If they don't delete
the residual `bin` folders, then `compile_test.py` will print out these
applications as having failed.
This change checks for the existence of a `Makefile` in the application
folder. Also I added a progress indicator, because I like it. :)
Having many tests is quite futile if they aren't executed once in a
while<sup>[citation needed]</sup>.
Alas, this is not the purpose of this PR. This PR adds the tool
"compile_test.py", which executes `make buildtest` for all applications
in `examples` and `tests`, and prints a comprehensive list of the
results.