When using yaws as an app dependency for another application built with rebar, I noticed that testing that application with "rebar eunit" would fail while testing yaws. It was easy to work around with "rebar eunit skip_deps=true" but yaws really should pass its tests when tested via rebar. Change rebar.config to add ibrowse as a dependency. It's used only for testing, but rebar doesn't support test-only dependencies, plus it's filtered out during release generation anyway. Modify some of the test files to be able to find ibrowse include files regardless of whether they're built via make or via rebar. Also rename all non-eunit test functions ending in "_test" so they don't confuse eunit. Also had to move the embedded_yaws_id_dir test from eunit to t2 because it fails under "rebar eunit" when yaws is a dependency for another app. It fails because it calls into the yaws_api:embedded_start_conf function which tries to call application:load(yaws), but paths aren't properly set up to allow that to work under these testing circumstances. Note that not all tests currently run under rebar; building with make and then running "make test" results in many more tests being executed. Fixing this will come later.
Running "rebar generate" now creates a self-contained yaws system under the build directory's "rel" subdirectory. The yaws script it provides at ./rel/yaws/bin/yaws isn't the same as the normal yaws script (the one normally found at ./bin/yaws); rather, it's a special script that starts yaws and the Erlang applications on which it depends as a local self-contained Erlang node. You can run ./rel/yaws/bin/yaws console to start an interactive yaws node, or ./rel/yaws/bin/yaws start to run it as a daemon, which you can later stop with ./rel/yaws/bin/yaws stop This script does not accept the command-line options that ./bin/yaws does, at least for now. If this is a problem, please raise an issue at the Yaws github repo or on the Yaws mailing list.
Modify scripts/rebar-pre-scripts and scripts/local-install to avoid rebuilding generated files that haven't changed since the last build. Modify scripts/Makefile to account for local-install changes. Also apply minor fix to rebar.config indentation.
Add support for building yaws with rebar. The original configure and make support is kept intact. If you build with rebar you get a local install. The rebar approach does not support a regular install, which defaults into /usr/local. If you want a regular install, use configure and make. Create a new top-level contrib directory and move unused src files there. Also move src/benchmarks and src/contrib contents there as well. Remove the obsolete src/patches directory. This is all to keep rebar from compiling this unused code (since by default it compiles everything under the src dir). Move a number of build rules out of Makefiles into separate scripts so they can be used by both rebar and make. Modify yaws version specifier and handling to be amenable to rebar. Clean up trailing whitespace in a number of scripts and Makefiles. Use the following environment variables to customize the rebar build defaults: DEFAULT_CHARSET: used in mime type table (default: "") ERLBINDIR: e.g. /usr/local/bin ETCDIR: etc directory (default: ./etc) VARDIR: var directory (default: ./var)