This makes it so that if the inputs are not available -- namely
input/.config and possibly input/files/, the build won't run. This
helps inform the user what must be done in order to get things to
build.
The output-${remote}_${revision} (or output-${revision} from the main
remote) target builds OpenWrt with the given input diffconfig,
after checking out ${revision} from ${remote}. Note that neither the
remote nor the ref or revision can have an underscore in them and
still be properly interpreted.
Still, this is all very useful -- I can kick off a from-scratch build
with `make output-pr_p2041-mpc85xx` and in a few minutes it's ready to
review.
Quoting:
As for what ${args} would need to be for this to work:
- You need to mount a +x build system prep script to /input.sh
- You need to mount a +x build system output extractor to /output.sh
- You need to mount a folder with input resources to /input
- You need to mount an output folder to /output
So, /input.sh could `cp /input/diffconfig /builder/openwrt/.config`,
then cd to /builder/openwrt and run `make defconfig`. The ${CMD}
could then actually build, and /output.sh could collect logs and
build artefacts to /output.
This lot provides exactly that. The makefile in this new dir just
requires diffconfig to be populated; then run `make output` and wait.
Q: What about adding LibreMesh
A: Just add to input.sh (or add a script to it) which does the steps
described here: https://libremesh.org/development.html. You can avoid
the 'make menuconfig' bits by pre-building a diffconfig as needed. And
if you need to debug, add a /bin/sh.