aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-01-05 17:25:04 +0100
committerLoïc Hoguin <[email protected]>2013-01-05 17:25:04 +0100
commitd8be610d4c68aa126afa952de4f134d68cc80636 (patch)
treedfd2c878c2af2d6ec89364e095bee3c2cf72dd95
parent4395c1b59dde20cd4fa2887a13cfc377960ee338 (diff)
downloadcowboy-d8be610d4c68aa126afa952de4f134d68cc80636.tar.gz
cowboy-d8be610d4c68aa126afa952de4f134d68cc80636.tar.bz2
cowboy-d8be610d4c68aa126afa952de4f134d68cc80636.zip
Stop using rebar in the Makefile
First and foremost: yes, you can still use Cowboy as a rebar dependency. This commit only removes the use of rebar when *developing* Cowboy, not when *using* Cowboy. Over the past two years I went from very happy with rebar to unsatisfied and most recently found it counter productive in many ways, from having insane default configuration to various unefficient operations. The earlier reversal from 'rebar ct' to 'ct_run' made my workflow much more natural, as I always needed to look at 'logs/raw.log' to find out what was wrong, anyway. Why not let 'ct_run' output it directly instead? Removing rebar made my life easier. If you wonder why I don't patch rebar, there's two reasons. First is that the direction taken by rebar isn't compatible with my views, and this would be a huge fight to steer it in another direction. I got other, more important fights to make. Second is that I'd rather patch OTP so that everyone benefits from it, not just users of rebar. Anyway this isn't my personal blog so I will stop babbling here. There's a few important things to note relative to this commit: * You don't need rebar to work on Cowboy anymore * The eunit tests are now ran through common_test Ping me if it doesn't work out for you.
-rw-r--r--Makefile52
-rw-r--r--ebin/.gitignore0
-rw-r--r--rebar.config6
-rw-r--r--rebar.tests.config8
-rw-r--r--test/eunit_SUITE.erl31
5 files changed, 61 insertions, 36 deletions
diff --git a/Makefile b/Makefile
index 410dda6..d1441fc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,24 +1,42 @@
# See LICENSE for licensing information.
PROJECT = cowboy
+RANCH_VSN = 0.6.0
+ERLC_OPTS = -Werror +debug_info +warn_export_all # +bin_opt_info +warn_missing_spec
-REBAR = rebar
+.PHONY: all clean-all app clean docs clean-docs tests autobahn build-plt dialyze
+
+# Application.
all: app
-# Application.
+clean-all: clean clean-docs
+ rm -f .$(PROJECT).plt
+ rm -rf deps logs
deps/ranch:
- @$(REBAR) get-deps
+ @mkdir -p deps/
+ git clone -n -- https://github.com/extend/ranch.git deps/ranch
+ cd deps/ranch ; git checkout -q $(RANCH_VSN)
+
+MODULES = $(shell ls src/*.erl | sed 's/src\///;s/\.erl/,/' | sed '$$s/.$$//')
app: deps/ranch
- @$(REBAR) compile
+ @cd deps/ranch ; make
+ @mkdir -p ebin/
+ @cat src/cowboy.app.src \
+ | sed 's/{modules, \[\]}/{modules, \[$(MODULES)\]}/' \
+ > ebin/cowboy.app
+ erlc -v $(ERLC_OPTS) -o ebin/ -pa ebin/ src/cowboy_middleware.erl src/*.erl
clean:
- @$(REBAR) clean
+ -@cd deps/ranch && make clean
+ rm -rf ebin/
rm -f test/*.beam
rm -f erl_crash.dump
+# Documentation.
+
docs: clean-docs
erl -noshell -eval 'edoc:application(cowboy, ".", []), init:stop().'
@@ -30,24 +48,16 @@ clean-docs:
# Tests.
-deps/proper:
- @$(REBAR) -C rebar.tests.config get-deps
- cd deps/proper && $(REBAR) compile
-
-tests: clean deps/proper app eunit ct
-
-eunit:
- @$(REBAR) -C rebar.tests.config eunit skip_deps=true
-
CT_RUN = ct_run \
-pa ebin deps/*/ebin \
-dir test \
-logdir logs \
-cover test/cover.spec
-ct:
+tests: ERLC_OPTS += -DTEST=1
+tests: clean app
@mkdir -p logs/
- @$(CT_RUN) -suite http_SUITE ws_SUITE
+ @$(CT_RUN) -suite eunit_SUITE http_SUITE ws_SUITE
autobahn:
@mkdir -p logs/
@@ -55,12 +65,10 @@ autobahn:
# Dialyzer.
-DIALYZER = dialyzer
-
-build-plt:
- @$(DIALYZER) --build_plt --output_plt .$(PROJECT).plt \
- --apps kernel stdlib sasl inets crypto public_key ssl deps/*
+build-plt: app
+ @dialyzer --build_plt --output_plt .$(PROJECT).plt \
+ --apps kernel stdlib sasl inets crypto public_key ssl deps/ranch
dialyze:
- @$(DIALYZER) --src src --plt .$(PROJECT).plt --no_native \
+ @dialyzer --src src --plt .$(PROJECT).plt --no_native \
-Werror_handling -Wrace_conditions -Wunmatched_returns # -Wunderspecs
diff --git a/ebin/.gitignore b/ebin/.gitignore
deleted file mode 100644
index e69de29..0000000
--- a/ebin/.gitignore
+++ /dev/null
diff --git a/rebar.config b/rebar.config
index ef634de..c3bfeb6 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,9 +1,3 @@
{deps, [
{ranch, "0\\.6\\.0.*", {git, "git://github.com/extend/ranch.git", "0.6.0"}}
]}.
-{erl_opts, [
-%% bin_opt_info,
-%% warn_missing_spec,
- warnings_as_errors,
- warn_export_all
-]}.
diff --git a/rebar.tests.config b/rebar.tests.config
deleted file mode 100644
index 128f069..0000000
--- a/rebar.tests.config
+++ /dev/null
@@ -1,8 +0,0 @@
-{cover_enabled, true}.
-{deps, [
- {proper, ".*",
- {git, "git://github.com/manopapad/proper.git", "master"}},
- {ranch, "0\\.6\\.0.*", {git, "git://github.com/extend/ranch.git", "0.6.0"}}
-]}.
-{eunit_opts, [verbose, {report, {eunit_surefire, [{dir, "."}]}}]}.
-{erl_opts, []}.
diff --git a/test/eunit_SUITE.erl b/test/eunit_SUITE.erl
new file mode 100644
index 0000000..d9272f9
--- /dev/null
+++ b/test/eunit_SUITE.erl
@@ -0,0 +1,31 @@
+%% Copyright (c) 2013, Loïc Hoguin <[email protected]>
+%%
+%% Permission to use, copy, modify, and/or distribute this software for any
+%% purpose with or without fee is hereby granted, provided that the above
+%% copyright notice and this permission notice appear in all copies.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-module(eunit_SUITE).
+
+-include_lib("common_test/include/ct.hrl").
+
+%% ct.
+-export([all/0]).
+
+%% Tests.
+-export([eunit/1]).
+
+%% ct.
+
+all() ->
+ [eunit].
+
+eunit(Config) ->
+ ok = eunit:test({application, cowboy}).