aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/deps.mk84
-rw-r--r--packages.v1.tsv60
-rw-r--r--packages.v1.txt60
-rw-r--r--packages.v2.tsv62
-rw-r--r--test/Makefile36
5 files changed, 172 insertions, 130 deletions
diff --git a/core/deps.mk b/core/deps.mk
index 504eea5..3cc2558 100644
--- a/core/deps.mk
+++ b/core/deps.mk
@@ -55,11 +55,55 @@ distclean:: distclean-deps distclean-pkg
# Deps related targets.
-define dep_autopatch.erl
+# @todo rename GNUmakefile and makefile into Makefile first, if they exist
+# While Makefile file could be GNUmakefile or makefile,
+# in practice only Makefile is needed so far.
+define dep_autopatch
+ if [ -f $(DEPS_DIR)/$(1)/Makefile ]; then \
+ if [ 0 != `grep -c rebar $(DEPS_DIR)/$(1)/Makefile` ]; then \
+ $(call dep_autopatch2,$(1)); \
+ else \
+ $(call dep_autopatch_erlang_mk,$(1)); \
+ fi \
+ else \
+ $(call dep_autopatch2,$(1)); \
+ fi
+endef
+
+define dep_autopatch2
+ if [ ! -f $(DEPS_DIR)/$(1)/rebar.config ]; then \
+ $(call dep_autopatch_gen,$(1)); \
+ else \
+ $(call dep_autopatch_rebar,$(1)); \
+ fi
+endef
+
+# Overwrite erlang.mk with the current file by default.
+ifeq ($(NO_AUTOPATCH_ERLANG_MK),)
+define dep_autopatch_erlang_mk
+ rm -f $(DEPS_DIR)/$(1)/erlang.mk; \
+ cd $(DEPS_DIR)/$(1)/ && ln -s ../../erlang.mk
+endef
+else
+define dep_autopatch_erlang_mk
+ echo -n
+endef
+endif
+
+define dep_autopatch_gen
+ printf "%s\n" \
+ "ERLC_OPTS = +debug_info" \
+ "include ../../erlang.mk" > $(DEPS_DIR)/$(1)/Makefile
+endef
+
+define dep_autopatch_rebar
+ $(call erlang,$(call dep_autopatch_rebar.erl,$(1)))
+endef
+
+define dep_autopatch_rebar.erl
DepDir = "$(DEPS_DIR)/$(1)/",
fun() ->
- {ok, Conf} = case file:consult(DepDir ++ "rebar.config") of
- {error, enoent} -> {ok, []}; Res -> Res end,
+ {ok, Conf} = file:consult(DepDir ++ "rebar.config"),
File = case lists:keyfind(deps, 1, Conf) of false -> []; {_, Deps} ->
[begin {Method, Repo, Commit} = case Repos of
{git, R} -> {git, R, master};
@@ -68,14 +112,14 @@ define dep_autopatch.erl
{M, R, C} -> {M, R, C}
end,
io_lib:format("DEPS += ~s\ndep_~s = ~s ~s ~s~n", [Name, Name, Method, Repo, Commit])
- end || {Name, _, Repos} <- Deps]
+ end || {Name, _, Repos} <- Deps, {Name, _, Repos, [raw]} <- Deps]
end,
First = case lists:keyfind(erl_first_files, 1, Conf) of false -> []; {_, Files} ->
Names = [[" ", begin "lre." ++ R = lists:reverse(F), lists:reverse(R) end]
|| "src/" ++ F <- Files],
io_lib:format("COMPILE_FIRST +=~s\n", [Names])
end,
- ok = file:write_file("$(DEPS_DIR)/$(1)/Makefile", ["ERLC_OPTS = +debug_info\n\n", File, First, "\ninclude erlang.mk"])
+ ok = file:write_file("$(DEPS_DIR)/$(1)/Makefile", ["ERLC_OPTS = +debug_info\n\n", File, First, "\ninclude ../../erlang.mk"])
end(),
AppSrcOut = "$(DEPS_DIR)/$(1)/src/$(1).app.src",
AppSrcIn = case filelib:is_regular(AppSrcOut) of false -> "$(DEPS_DIR)/$(1)/ebin/$(1).app"; true -> AppSrcOut end,
@@ -89,12 +133,6 @@ define dep_autopatch.erl
halt().
endef
-ifeq ($(V),0)
-define dep_autopatch_verbose
- @echo " PATCH " $(1);
-endef
-endif
-
define dep_fetch
if [ "$$$$VS" = "git" ]; then \
git clone -q -n -- $$$$REPO $(DEPS_DIR)/$(1); \
@@ -123,15 +161,31 @@ ifeq (,$(dep_$(1)))
COMMIT=$$$$(echo $$$$DEPPKG | cut -d " " -f3); \
$(call dep_fetch,$(1))
else
+ifeq (1,$(words $(dep_$(1))))
+ $(dep_verbose) VS=git; \
+ REPO=$(dep_$(1)); \
+ COMMIT=master; \
+ $(call dep_fetch,$(1))
+else
+ifeq (2,$(words $(dep_$(1))))
+ $(dep_verbose) VS=git; \
+ REPO=$(word 1,$(dep_$(1))); \
+ COMMIT=$(word 2,$(dep_$(1))); \
+ $(call dep_fetch,$(1))
+else
$(dep_verbose) VS=$(word 1,$(dep_$(1))); \
REPO=$(word 2,$(dep_$(1))); \
COMMIT=$(word 3,$(dep_$(1))); \
$(call dep_fetch,$(1))
endif
-ifneq ($(filter $(1),$(AUTOPATCH)),)
- $(call dep_autopatch_verbose,$(1)) \
- $(call erlang,$(call dep_autopatch.erl,$(1))); \
- cd $(DEPS_DIR)/$(1)/ && ln -s ../../erlang.mk
+endif
+endif
+ -@if [ -f $(DEPS_DIR)/$(1)/configure ]; then \
+ echo " CONF " $(1); \
+ cd $(DEPS_DIR)/$(1) && ./configure; \
+ fi
+ifeq ($(filter $(1),$(NO_AUTOPATCH)),)
+ @$(call dep_autopatch,$(1))
endif
endef
diff --git a/packages.v1.tsv b/packages.v1.tsv
index b61a607..a57ef07 100644
--- a/packages.v1.tsv
+++ b/packages.v1.tsv
@@ -1,67 +1,53 @@
-apns4erl https://github.com/inaka/apns4erl.git http://inaka.github.com/apns4erl Apple Push Notification Server for Erlang
-bullet https://github.com/extend/bullet http://ninenines.eu Simple, reliable, efficient streaming for Cowboy.
+apns4erl https://github.com/inaka/apns4erl http://inaka.github.com/apns4erl Apple Push Notification Server for Erlang
cake https://github.com/darach/cake-erl https://github.com/darach/cake-erl Really simple terminal colorization
-classifier https://github.com/inaka/classifier.git https://github.com/inaka/classifier An Erlang Bayesian Filter and Text Classifier
+classifier https://github.com/inaka/classifier https://github.com/inaka/classifier An Erlang Bayesian Filter and Text Classifier
cowboy https://github.com/ninenines/cowboy http://ninenines.eu Small, fast and modular HTTP server.
cowlib https://github.com/ninenines/cowlib http://ninenines.eu Support library for manipulating Web protocols.
-czmq https://github.com/gar1t/erlang-czmq.git https://github.com/gar1t/erlang-czmq External port bindings for CZMQ.
-debbie https://github.com/crownedgrouse/debbie.git https://github.com/crownedgrouse/debbie .DEB Built In Erlang
-e2 https://github.com/gar1t/e2.git http://e2project.org Library to simply writing correct OTP applications.
-ebitly https://github.com/inaka/ebitly.git http://inaka.github.com/ebitly Bit.ly API wrapper for Erlang
-edgar https://github.com/crownedgrouse/edgar.git https://github.com/crownedgrouse/edgar Erlang Does GNU AR
-edis https://github.com/inaka/edis.git http://inaka.github.com/edis/ An Erlang implementation of Redis KV Store
-eganglia https://github.com/inaka/eganglia.git https://github.com/inaka/eganglia.git Erlang library to interact with Ganglia
+debbie https://github.com/crownedgrouse/debbie https://github.com/crownedgrouse/debbie .DEB Built In Erlang
+e2 https://github.com/gar1t/e2 http://e2project.org Library to simply writing correct OTP applications.
+edgar https://github.com/crownedgrouse/edgar https://github.com/crownedgrouse/edgar Erlang Does GNU AR
+eganglia https://github.com/inaka/eganglia https://github.com/inaka/eganglia Erlang library to interact with Ganglia
ehsa https://bitbucket.org/a12n/ehsa https://bitbucket.org/a12n/ehsa Erlang HTTP server basic and digest authentication modules
-elvis https://github.com/inaka/elvis.git https://github.com/inaka/elvis.git Erlang Style Reviewer
-emysql https://github.com/Eonblast/Emysql.git https://github.com/Eonblast/Emysql Stable, pure Erlang MySQL driver.
+elvis https://github.com/inaka/elvis https://github.com/inaka/elvis Erlang Style Reviewer
+emysql https://github.com/Eonblast/Emysql https://github.com/Eonblast/Emysql Stable, pure Erlang MySQL driver.
eper https://github.com/massemanet/eper https://github.com/massemanet/eper Erlang performance and debugging tools.
epgsql https://github.com/epgsql/epgsql https://github.com/epgsql/epgsql Erlang PostgreSQL client library.
eredis https://github.com/wooga/eredis https://github.com/wooga/eredis Non-blocking Redis client with focus on performance and robustness
-erldb https://github.com/erldb/erldb.git http://erldb.org ORM (Object-relational mapping) application implemented in Erlang
-erlexec https://github.com/saleyn/erlexec http://saleyn.github.com/erlexec Execute and control OS processes from Erlang/OTP.
erlydtl https://github.com/erlydtl/erlydtl https://github.com/erlydtl/erlydtl Django Template Language for Erlang.
erwa https://github.com/bwegh/erwa https://github.com/bwegh/erwa A WAMP router and client written in Erlang.
exs1024 https://github.com/jj1bdx/exs1024 https://github.com/jj1bdx/exs1024 Xorshift1024star pseudo random number generator for Erlang.
exs64 https://github.com/jj1bdx/exs64 https://github.com/jj1bdx/exs64 Xorshift64star pseudo random number generator for Erlang.
exsplus128 https://github.com/jj1bdx/exsplus128 https://github.com/jj1bdx/exsplus128 Xorshift128plus pseudo random number generator for Erlang.
feeder https://github.com/michaelnisi/feeder https://github.com/michaelnisi/feeder Stream parse RSS and Atom formatted XML feeds.
-geas https://github.com/crownedgrouse/geas.git https://github.com/crownedgrouse/geas Guess Erlang Application Scattering
-getopt https://github.com/jcomellas/getopt.git https://github.com/jcomellas/getopt Module to parse command line arguments using the GNU getopt syntax
-gproc https://github.com/uwiger/gproc.git https://github.com/uwiger/gproc Extended process registry for Erlang
-gun https://github.com/extend/gun http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
+geas https://github.com/crownedgrouse/geas https://github.com/crownedgrouse/geas Guess Erlang Application Scattering
+getopt https://github.com/jcomellas/getopt https://github.com/jcomellas/getopt Module to parse command line arguments using the GNU getopt syntax
+gproc https://github.com/uwiger/gproc https://github.com/uwiger/gproc Extended process registry for Erlang
+gun https://github.com/ninenines/gun http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
hanoidb https://github.com/krestenkrab/hanoidb https://github.com/krestenkrab/hanoidb Erlang LSM BTree Storage
ibrowse https://github.com/cmullaparthi/ibrowse https://github.com/cmullaparthi/ibrowse Erlang HTTP client
-itweet https://github.com/inaka/itweet.git http://inaka.github.com/itweet/ Twitter Stream API on ibrowse
+itweet https://github.com/inaka/itweet http://inaka.github.com/itweet/ Twitter Stream API on ibrowse
jiffy https://github.com/davisp/jiffy https://github.com/davisp/jiffy JSON NIFs for Erlang.
jiffy_v https://github.com/shizzard/jiffy-v https://github.com/shizzard/jiffy-v JSON validation utility
-jobs https://github.com/esl/jobs https://github.com/esl/jobs a Job scheduler for load regulation
jsx https://github.com/talentdeficit/jsx https://github.com/talentdeficit/jsx An Erlang application for consuming, producing and manipulating JSON.
katja https://github.com/nifoc/katja https://github.com/nifoc/katja A simple Riemann client written in Erlang.
lager https://github.com/basho/lager https://github.com/basho/lager A logging framework for Erlang/OTP.
-lasse https://github.com/inaka/lasse.git https://github.com/inaka/lasse.git SSE handler for Cowboy
-leptus https://github.com/s1n4/leptus https://github.com/s1n4/leptus Erlang REST framework
+lasse https://github.com/inaka/lasse https://github.com/inaka/lasse SSE handler for Cowboy
live https://github.com/ninenines/live http://ninenines.eu Automated module and configuration reloader.
-mekao https://github.com/ddosia/mekao.git https://github.com/ddosia/mekao SQL constructor
-modlib https://github.com/gar1t/modlib.git https://github.com/gar1t/modlib Web framework based on Erlang's inets httpd
-neo4j https://github.com/dmitriid/neo4j-erlang https://github.com/dmitriid/neo4j-erlang Erlang client library for Neo4J.
-nodefinder https://github.com/erlanger/nodefinder.git https://github.com/erlanger/nodefinder automatic node discovery via UDP multicast
+mekao https://github.com/ddosia/mekao https://github.com/ddosia/mekao SQL constructor
+modlib https://github.com/gar1t/modlib https://github.com/gar1t/modlib Web framework based on Erlang's inets httpd
+nodefinder https://github.com/erlanger/nodefinder https://github.com/erlanger/nodefinder automatic node discovery via UDP multicast
pegjs https://github.com/dmitriid/pegjs https://github.com/dmitriid/pegjs An implementation of PEG.js grammar for Erlang.
-proper https://github.com/manopapad/proper http://proper.softlab.ntua.gr PropEr: a QuickCheck-inspired property-based testing tool for Erlang.
-psycho https://github.com/gar1t/psycho.git https://github.com/gar1t/psycho HTTP server that provides a WSGI-like interface for applications and middleware.
-ptrackerl https://github.com/inaka/ptrackerl.git https://github.com/inaka/ptrackerl.git Pivotal Tracker API Client written in Erlang
-pusherman https://github.com/inaka/pusherman.git https://github.com/inaka/pusherman.git queuing system for push notifications
+ptrackerl https://github.com/inaka/ptrackerl https://github.com/inaka/ptrackerl Pivotal Tracker API Client written in Erlang
ranch https://github.com/ninenines/ranch http://ninenines.eu Socket acceptor pool for TCP protocols.
resource_discovery https://github.com/erlware/resource_discovery http://erlware.org/ An application used to dynamically discover resources present in an Erlang node cluster.
sfmt-erlang https://github.com/jj1bdx/sfmt-erlang https://github.com/jj1bdx/sfmt-erlang SFMT pseudo random number generator for Erlang.
-sheriff https://github.com/extend/sheriff http://ninenines.eu Parse transform for type based validation.
-shotgun https://github.com/inaka/shotgun.git https://github.com/inaka/shotgun.git better than just a gun
-sumo_db https://github.com/inaka/sumo_db.git https://github.com/inaka/sumo_db.git Erlang Persistency Framework
-swab https://github.com/crownedgrouse/swab.git https://github.com/crownedgrouse/swab General purpose buffer handling module
-sync https://github.com/rustyio/sync.git https://github.com/rustyio/sync On-the-fly recompiling and reloading in Erlang.
+shotgun https://github.com/inaka/shotgun https://github.com/inaka/shotgun better than just a gun
+swab https://github.com/crownedgrouse/swab https://github.com/crownedgrouse/swab General purpose buffer handling module
+sync https://github.com/rustyio/sync https://github.com/rustyio/sync On-the-fly recompiling and reloading in Erlang.
tddreloader https://github.com/version2beta/tddreloader https://github.com/version2beta/tddreloader Shell utility for recompiling, reloading, and testing code as it changes
tinymt-erlang https://github.com/jj1bdx/tinymt-erlang https://github.com/jj1bdx/tinymt-erlang TinyMT pseudo random number generator for Erlang.
unicorn https://github.com/shizzard/unicorn https://github.com/shizzard/unicorn Generic configuration server
uuid https://github.com/okeuday/uuid https://github.com/okeuday/uuid Erlang UUID Implementation
-worker_pool https://github.com/inaka/worker_pool.git https://github.com/inaka/worker_pool a simple erlang worker pool
-xref_runner https://github.com/inaka/xref_runner.git https://github.com/inaka/xref_runner.git Erlang Xref Runner (inspired in rebar xref)
+worker_pool https://github.com/inaka/worker_pool https://github.com/inaka/worker_pool a simple erlang worker pool
+xref_runner https://github.com/inaka/xref_runner https://github.com/inaka/xref_runner Erlang Xref Runner (inspired in rebar xref)
zeta https://github.com/s1n4/zeta https://github.com/s1n4/zeta HTTP access log parser in Erlang
diff --git a/packages.v1.txt b/packages.v1.txt
index b61a607..a57ef07 100644
--- a/packages.v1.txt
+++ b/packages.v1.txt
@@ -1,67 +1,53 @@
-apns4erl https://github.com/inaka/apns4erl.git http://inaka.github.com/apns4erl Apple Push Notification Server for Erlang
-bullet https://github.com/extend/bullet http://ninenines.eu Simple, reliable, efficient streaming for Cowboy.
+apns4erl https://github.com/inaka/apns4erl http://inaka.github.com/apns4erl Apple Push Notification Server for Erlang
cake https://github.com/darach/cake-erl https://github.com/darach/cake-erl Really simple terminal colorization
-classifier https://github.com/inaka/classifier.git https://github.com/inaka/classifier An Erlang Bayesian Filter and Text Classifier
+classifier https://github.com/inaka/classifier https://github.com/inaka/classifier An Erlang Bayesian Filter and Text Classifier
cowboy https://github.com/ninenines/cowboy http://ninenines.eu Small, fast and modular HTTP server.
cowlib https://github.com/ninenines/cowlib http://ninenines.eu Support library for manipulating Web protocols.
-czmq https://github.com/gar1t/erlang-czmq.git https://github.com/gar1t/erlang-czmq External port bindings for CZMQ.
-debbie https://github.com/crownedgrouse/debbie.git https://github.com/crownedgrouse/debbie .DEB Built In Erlang
-e2 https://github.com/gar1t/e2.git http://e2project.org Library to simply writing correct OTP applications.
-ebitly https://github.com/inaka/ebitly.git http://inaka.github.com/ebitly Bit.ly API wrapper for Erlang
-edgar https://github.com/crownedgrouse/edgar.git https://github.com/crownedgrouse/edgar Erlang Does GNU AR
-edis https://github.com/inaka/edis.git http://inaka.github.com/edis/ An Erlang implementation of Redis KV Store
-eganglia https://github.com/inaka/eganglia.git https://github.com/inaka/eganglia.git Erlang library to interact with Ganglia
+debbie https://github.com/crownedgrouse/debbie https://github.com/crownedgrouse/debbie .DEB Built In Erlang
+e2 https://github.com/gar1t/e2 http://e2project.org Library to simply writing correct OTP applications.
+edgar https://github.com/crownedgrouse/edgar https://github.com/crownedgrouse/edgar Erlang Does GNU AR
+eganglia https://github.com/inaka/eganglia https://github.com/inaka/eganglia Erlang library to interact with Ganglia
ehsa https://bitbucket.org/a12n/ehsa https://bitbucket.org/a12n/ehsa Erlang HTTP server basic and digest authentication modules
-elvis https://github.com/inaka/elvis.git https://github.com/inaka/elvis.git Erlang Style Reviewer
-emysql https://github.com/Eonblast/Emysql.git https://github.com/Eonblast/Emysql Stable, pure Erlang MySQL driver.
+elvis https://github.com/inaka/elvis https://github.com/inaka/elvis Erlang Style Reviewer
+emysql https://github.com/Eonblast/Emysql https://github.com/Eonblast/Emysql Stable, pure Erlang MySQL driver.
eper https://github.com/massemanet/eper https://github.com/massemanet/eper Erlang performance and debugging tools.
epgsql https://github.com/epgsql/epgsql https://github.com/epgsql/epgsql Erlang PostgreSQL client library.
eredis https://github.com/wooga/eredis https://github.com/wooga/eredis Non-blocking Redis client with focus on performance and robustness
-erldb https://github.com/erldb/erldb.git http://erldb.org ORM (Object-relational mapping) application implemented in Erlang
-erlexec https://github.com/saleyn/erlexec http://saleyn.github.com/erlexec Execute and control OS processes from Erlang/OTP.
erlydtl https://github.com/erlydtl/erlydtl https://github.com/erlydtl/erlydtl Django Template Language for Erlang.
erwa https://github.com/bwegh/erwa https://github.com/bwegh/erwa A WAMP router and client written in Erlang.
exs1024 https://github.com/jj1bdx/exs1024 https://github.com/jj1bdx/exs1024 Xorshift1024star pseudo random number generator for Erlang.
exs64 https://github.com/jj1bdx/exs64 https://github.com/jj1bdx/exs64 Xorshift64star pseudo random number generator for Erlang.
exsplus128 https://github.com/jj1bdx/exsplus128 https://github.com/jj1bdx/exsplus128 Xorshift128plus pseudo random number generator for Erlang.
feeder https://github.com/michaelnisi/feeder https://github.com/michaelnisi/feeder Stream parse RSS and Atom formatted XML feeds.
-geas https://github.com/crownedgrouse/geas.git https://github.com/crownedgrouse/geas Guess Erlang Application Scattering
-getopt https://github.com/jcomellas/getopt.git https://github.com/jcomellas/getopt Module to parse command line arguments using the GNU getopt syntax
-gproc https://github.com/uwiger/gproc.git https://github.com/uwiger/gproc Extended process registry for Erlang
-gun https://github.com/extend/gun http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
+geas https://github.com/crownedgrouse/geas https://github.com/crownedgrouse/geas Guess Erlang Application Scattering
+getopt https://github.com/jcomellas/getopt https://github.com/jcomellas/getopt Module to parse command line arguments using the GNU getopt syntax
+gproc https://github.com/uwiger/gproc https://github.com/uwiger/gproc Extended process registry for Erlang
+gun https://github.com/ninenines/gun http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
hanoidb https://github.com/krestenkrab/hanoidb https://github.com/krestenkrab/hanoidb Erlang LSM BTree Storage
ibrowse https://github.com/cmullaparthi/ibrowse https://github.com/cmullaparthi/ibrowse Erlang HTTP client
-itweet https://github.com/inaka/itweet.git http://inaka.github.com/itweet/ Twitter Stream API on ibrowse
+itweet https://github.com/inaka/itweet http://inaka.github.com/itweet/ Twitter Stream API on ibrowse
jiffy https://github.com/davisp/jiffy https://github.com/davisp/jiffy JSON NIFs for Erlang.
jiffy_v https://github.com/shizzard/jiffy-v https://github.com/shizzard/jiffy-v JSON validation utility
-jobs https://github.com/esl/jobs https://github.com/esl/jobs a Job scheduler for load regulation
jsx https://github.com/talentdeficit/jsx https://github.com/talentdeficit/jsx An Erlang application for consuming, producing and manipulating JSON.
katja https://github.com/nifoc/katja https://github.com/nifoc/katja A simple Riemann client written in Erlang.
lager https://github.com/basho/lager https://github.com/basho/lager A logging framework for Erlang/OTP.
-lasse https://github.com/inaka/lasse.git https://github.com/inaka/lasse.git SSE handler for Cowboy
-leptus https://github.com/s1n4/leptus https://github.com/s1n4/leptus Erlang REST framework
+lasse https://github.com/inaka/lasse https://github.com/inaka/lasse SSE handler for Cowboy
live https://github.com/ninenines/live http://ninenines.eu Automated module and configuration reloader.
-mekao https://github.com/ddosia/mekao.git https://github.com/ddosia/mekao SQL constructor
-modlib https://github.com/gar1t/modlib.git https://github.com/gar1t/modlib Web framework based on Erlang's inets httpd
-neo4j https://github.com/dmitriid/neo4j-erlang https://github.com/dmitriid/neo4j-erlang Erlang client library for Neo4J.
-nodefinder https://github.com/erlanger/nodefinder.git https://github.com/erlanger/nodefinder automatic node discovery via UDP multicast
+mekao https://github.com/ddosia/mekao https://github.com/ddosia/mekao SQL constructor
+modlib https://github.com/gar1t/modlib https://github.com/gar1t/modlib Web framework based on Erlang's inets httpd
+nodefinder https://github.com/erlanger/nodefinder https://github.com/erlanger/nodefinder automatic node discovery via UDP multicast
pegjs https://github.com/dmitriid/pegjs https://github.com/dmitriid/pegjs An implementation of PEG.js grammar for Erlang.
-proper https://github.com/manopapad/proper http://proper.softlab.ntua.gr PropEr: a QuickCheck-inspired property-based testing tool for Erlang.
-psycho https://github.com/gar1t/psycho.git https://github.com/gar1t/psycho HTTP server that provides a WSGI-like interface for applications and middleware.
-ptrackerl https://github.com/inaka/ptrackerl.git https://github.com/inaka/ptrackerl.git Pivotal Tracker API Client written in Erlang
-pusherman https://github.com/inaka/pusherman.git https://github.com/inaka/pusherman.git queuing system for push notifications
+ptrackerl https://github.com/inaka/ptrackerl https://github.com/inaka/ptrackerl Pivotal Tracker API Client written in Erlang
ranch https://github.com/ninenines/ranch http://ninenines.eu Socket acceptor pool for TCP protocols.
resource_discovery https://github.com/erlware/resource_discovery http://erlware.org/ An application used to dynamically discover resources present in an Erlang node cluster.
sfmt-erlang https://github.com/jj1bdx/sfmt-erlang https://github.com/jj1bdx/sfmt-erlang SFMT pseudo random number generator for Erlang.
-sheriff https://github.com/extend/sheriff http://ninenines.eu Parse transform for type based validation.
-shotgun https://github.com/inaka/shotgun.git https://github.com/inaka/shotgun.git better than just a gun
-sumo_db https://github.com/inaka/sumo_db.git https://github.com/inaka/sumo_db.git Erlang Persistency Framework
-swab https://github.com/crownedgrouse/swab.git https://github.com/crownedgrouse/swab General purpose buffer handling module
-sync https://github.com/rustyio/sync.git https://github.com/rustyio/sync On-the-fly recompiling and reloading in Erlang.
+shotgun https://github.com/inaka/shotgun https://github.com/inaka/shotgun better than just a gun
+swab https://github.com/crownedgrouse/swab https://github.com/crownedgrouse/swab General purpose buffer handling module
+sync https://github.com/rustyio/sync https://github.com/rustyio/sync On-the-fly recompiling and reloading in Erlang.
tddreloader https://github.com/version2beta/tddreloader https://github.com/version2beta/tddreloader Shell utility for recompiling, reloading, and testing code as it changes
tinymt-erlang https://github.com/jj1bdx/tinymt-erlang https://github.com/jj1bdx/tinymt-erlang TinyMT pseudo random number generator for Erlang.
unicorn https://github.com/shizzard/unicorn https://github.com/shizzard/unicorn Generic configuration server
uuid https://github.com/okeuday/uuid https://github.com/okeuday/uuid Erlang UUID Implementation
-worker_pool https://github.com/inaka/worker_pool.git https://github.com/inaka/worker_pool a simple erlang worker pool
-xref_runner https://github.com/inaka/xref_runner.git https://github.com/inaka/xref_runner.git Erlang Xref Runner (inspired in rebar xref)
+worker_pool https://github.com/inaka/worker_pool https://github.com/inaka/worker_pool a simple erlang worker pool
+xref_runner https://github.com/inaka/xref_runner https://github.com/inaka/xref_runner Erlang Xref Runner (inspired in rebar xref)
zeta https://github.com/s1n4/zeta https://github.com/s1n4/zeta HTTP access log parser in Erlang
diff --git a/packages.v2.tsv b/packages.v2.tsv
index 6dca150..488b7f7 100644
--- a/packages.v2.tsv
+++ b/packages.v2.tsv
@@ -1,67 +1,53 @@
-apns4erl git https://github.com/inaka/apns4erl.git 1.0 http://inaka.github.com/apns4erl Apple Push Notification Server for Erlang
-bullet git https://github.com/extend/bullet master http://ninenines.eu Simple, reliable, efficient streaming for Cowboy.
+apns4erl git https://github.com/inaka/apns4erl 1.0.4 http://inaka.github.com/apns4erl Apple Push Notification Server for Erlang
cake git https://github.com/darach/cake-erl v0.1.2 https://github.com/darach/cake-erl Really simple terminal colorization
-classifier git https://github.com/inaka/classifier.git 1 https://github.com/inaka/classifier An Erlang Bayesian Filter and Text Classifier
+classifier git https://github.com/inaka/classifier master https://github.com/inaka/classifier An Erlang Bayesian Filter and Text Classifier
cowboy git https://github.com/ninenines/cowboy 1.0.1 http://ninenines.eu Small, fast and modular HTTP server.
cowlib git https://github.com/ninenines/cowlib 1.0.1 http://ninenines.eu Support library for manipulating Web protocols.
-czmq git https://github.com/gar1t/erlang-czmq.git master https://github.com/gar1t/erlang-czmq External port bindings for CZMQ.
-debbie git https://github.com/crownedgrouse/debbie.git master https://github.com/crownedgrouse/debbie .DEB Built In Erlang
-e2 git https://github.com/gar1t/e2.git master http://e2project.org Library to simply writing correct OTP applications.
-ebitly git https://github.com/inaka/ebitly.git 0.0.1 http://inaka.github.com/ebitly Bit.ly API wrapper for Erlang
-edgar git https://github.com/crownedgrouse/edgar.git master https://github.com/crownedgrouse/edgar Erlang Does GNU AR
-edis git https://github.com/inaka/edis.git 0.2.0 http://inaka.github.com/edis/ An Erlang implementation of Redis KV Store
-eganglia git https://github.com/inaka/eganglia.git 0.9.1 https://github.com/inaka/eganglia.git Erlang library to interact with Ganglia
+debbie git https://github.com/crownedgrouse/debbie master https://github.com/crownedgrouse/debbie .DEB Built In Erlang
+e2 git https://github.com/gar1t/e2 master http://e2project.org Library to simply writing correct OTP applications.
+edgar git https://github.com/crownedgrouse/edgar master https://github.com/crownedgrouse/edgar Erlang Does GNU AR
+eganglia git https://github.com/inaka/eganglia v0.9.1 https://github.com/inaka/eganglia Erlang library to interact with Ganglia
ehsa hg https://bitbucket.org/a12n/ehsa 2.0.4 https://bitbucket.org/a12n/ehsa Erlang HTTP server basic and digest authentication modules
-elvis git https://github.com/inaka/elvis.git 0.1.0-alpha https://github.com/inaka/elvis.git Erlang Style Reviewer
-emysql git https://github.com/Eonblast/Emysql.git master https://github.com/Eonblast/Emysql Stable, pure Erlang MySQL driver.
+elvis git https://github.com/inaka/elvis 0.2.4 https://github.com/inaka/elvis Erlang Style Reviewer
+emysql git https://github.com/Eonblast/Emysql master https://github.com/Eonblast/Emysql Stable, pure Erlang MySQL driver.
eper git https://github.com/massemanet/eper master https://github.com/massemanet/eper Erlang performance and debugging tools.
epgsql git https://github.com/epgsql/epgsql master https://github.com/epgsql/epgsql Erlang PostgreSQL client library.
eredis git https://github.com/wooga/eredis master https://github.com/wooga/eredis Non-blocking Redis client with focus on performance and robustness
-erldb git https://github.com/erldb/erldb.git master http://erldb.org ORM (Object-relational mapping) application implemented in Erlang
-erlexec git https://github.com/saleyn/erlexec master http://saleyn.github.com/erlexec Execute and control OS processes from Erlang/OTP.
erlydtl git https://github.com/erlydtl/erlydtl master https://github.com/erlydtl/erlydtl Django Template Language for Erlang.
erwa git https://github.com/bwegh/erwa 0.1.1 https://github.com/bwegh/erwa A WAMP router and client written in Erlang.
exs1024 git https://github.com/jj1bdx/exs1024 master https://github.com/jj1bdx/exs1024 Xorshift1024star pseudo random number generator for Erlang.
exs64 git https://github.com/jj1bdx/exs64 master https://github.com/jj1bdx/exs64 Xorshift64star pseudo random number generator for Erlang.
exsplus128 git https://github.com/jj1bdx/exsplus128 master https://github.com/jj1bdx/exsplus128 Xorshift128plus pseudo random number generator for Erlang.
-feeder git https://github.com/michaelnisi/feeder 1.4.2 https://github.com/michaelnisi/feeder Stream parse RSS and Atom formatted XML feeds.
-geas git https://github.com/crownedgrouse/geas.git master https://github.com/crownedgrouse/geas Guess Erlang Application Scattering
-getopt git https://github.com/jcomellas/getopt.git master https://github.com/jcomellas/getopt Module to parse command line arguments using the GNU getopt syntax
-gproc git https://github.com/uwiger/gproc.git master https://github.com/uwiger/gproc Extended process registry for Erlang
-gun git https://github.com/extend/gun master http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
+feeder git https://github.com/michaelnisi/feeder v1.4.6 https://github.com/michaelnisi/feeder Stream parse RSS and Atom formatted XML feeds.
+geas git https://github.com/crownedgrouse/geas master https://github.com/crownedgrouse/geas Guess Erlang Application Scattering
+getopt git https://github.com/jcomellas/getopt master https://github.com/jcomellas/getopt Module to parse command line arguments using the GNU getopt syntax
+gproc git https://github.com/uwiger/gproc master https://github.com/uwiger/gproc Extended process registry for Erlang
+gun git https://github.com/ninenines/gun master http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
hanoidb git https://github.com/krestenkrab/hanoidb master https://github.com/krestenkrab/hanoidb Erlang LSM BTree Storage
ibrowse git https://github.com/cmullaparthi/ibrowse v4.1.1 https://github.com/cmullaparthi/ibrowse Erlang HTTP client
-itweet git https://github.com/inaka/itweet.git 3.0 http://inaka.github.com/itweet/ Twitter Stream API on ibrowse
+itweet git https://github.com/inaka/itweet v2.0 http://inaka.github.com/itweet/ Twitter Stream API on ibrowse
jiffy git https://github.com/davisp/jiffy master https://github.com/davisp/jiffy JSON NIFs for Erlang.
jiffy_v git https://github.com/shizzard/jiffy-v 0.3.3 https://github.com/shizzard/jiffy-v JSON validation utility
-jobs git https://github.com/esl/jobs 0.3 https://github.com/esl/jobs a Job scheduler for load regulation
jsx git https://github.com/talentdeficit/jsx master https://github.com/talentdeficit/jsx An Erlang application for consuming, producing and manipulating JSON.
katja git https://github.com/nifoc/katja master https://github.com/nifoc/katja A simple Riemann client written in Erlang.
lager git https://github.com/basho/lager master https://github.com/basho/lager A logging framework for Erlang/OTP.
-lasse git https://github.com/inaka/lasse.git 0.1.0 https://github.com/inaka/lasse.git SSE handler for Cowboy
-leptus git https://github.com/s1n4/leptus https://github.com/s1n4/leptus Erlang REST framework
+lasse git https://github.com/inaka/lasse 0.1.0 https://github.com/inaka/lasse SSE handler for Cowboy
live git https://github.com/ninenines/live master http://ninenines.eu Automated module and configuration reloader.
-mekao git https://github.com/ddosia/mekao.git master https://github.com/ddosia/mekao SQL constructor
-modlib git https://github.com/gar1t/modlib.git master https://github.com/gar1t/modlib Web framework based on Erlang's inets httpd
-neo4j git https://github.com/dmitriid/neo4j-erlang master https://github.com/dmitriid/neo4j-erlang Erlang client library for Neo4J.
-nodefinder git https://github.com/erlanger/nodefinder.git 0.2.3 https://github.com/erlanger/nodefinder automatic node discovery via UDP multicast
+mekao git https://github.com/ddosia/mekao master https://github.com/ddosia/mekao SQL constructor
+modlib git https://github.com/gar1t/modlib master https://github.com/gar1t/modlib Web framework based on Erlang's inets httpd
+nodefinder git https://github.com/erlanger/nodefinder 0.2.3 https://github.com/erlanger/nodefinder automatic node discovery via UDP multicast
pegjs git https://github.com/dmitriid/pegjs 0.3 https://github.com/dmitriid/pegjs An implementation of PEG.js grammar for Erlang.
-proper git https://github.com/manopapad/proper master http://proper.softlab.ntua.gr PropEr: a QuickCheck-inspired property-based testing tool for Erlang.
-psycho git https://github.com/gar1t/psycho.git master https://github.com/gar1t/psycho HTTP server that provides a WSGI-like interface for applications and middleware.
-ptrackerl git https://github.com/inaka/ptrackerl.git 0.2 https://github.com/inaka/ptrackerl.git Pivotal Tracker API Client written in Erlang
-pusherman git https://github.com/inaka/pusherman.git 1 https://github.com/inaka/pusherman.git queuing system for push notifications
+ptrackerl git https://github.com/inaka/ptrackerl master https://github.com/inaka/ptrackerl Pivotal Tracker API Client written in Erlang
ranch git https://github.com/ninenines/ranch 1.1.0 http://ninenines.eu Socket acceptor pool for TCP protocols.
resource_discovery git https://github.com/erlware/resource_discovery master http://erlware.org/ An application used to dynamically discover resources present in an Erlang node cluster.
sfmt-erlang git https://github.com/jj1bdx/sfmt-erlang master https://github.com/jj1bdx/sfmt-erlang SFMT pseudo random number generator for Erlang.
-sheriff git https://github.com/extend/sheriff master http://ninenines.eu Parse transform for type based validation.
-shotgun git https://github.com/inaka/shotgun.git 0.1.0 https://github.com/inaka/shotgun.git better than just a gun
-sumo_db git https://github.com/inaka/sumo_db.git 1 https://github.com/inaka/sumo_db.git Erlang Persistency Framework
-swab git https://github.com/crownedgrouse/swab.git master https://github.com/crownedgrouse/swab General purpose buffer handling module
-sync git https://github.com/rustyio/sync.git master https://github.com/rustyio/sync On-the-fly recompiling and reloading in Erlang.
+shotgun git https://github.com/inaka/shotgun 0.1.0 https://github.com/inaka/shotgun better than just a gun
+swab git https://github.com/crownedgrouse/swab master https://github.com/crownedgrouse/swab General purpose buffer handling module
+sync git https://github.com/rustyio/sync master https://github.com/rustyio/sync On-the-fly recompiling and reloading in Erlang.
tddreloader git https://github.com/version2beta/tddreloader master https://github.com/version2beta/tddreloader Shell utility for recompiling, reloading, and testing code as it changes
tinymt-erlang git https://github.com/jj1bdx/tinymt-erlang master https://github.com/jj1bdx/tinymt-erlang TinyMT pseudo random number generator for Erlang.
unicorn git https://github.com/shizzard/unicorn 0.3.0 https://github.com/shizzard/unicorn Generic configuration server
uuid git https://github.com/okeuday/uuid v1.4.0 https://github.com/okeuday/uuid Erlang UUID Implementation
-worker_pool git https://github.com/inaka/worker_pool.git 1.0.2 https://github.com/inaka/worker_pool a simple erlang worker pool
-xref_runner git https://github.com/inaka/xref_runner.git 0.2.0 https://github.com/inaka/xref_runner.git Erlang Xref Runner (inspired in rebar xref)
+worker_pool git https://github.com/inaka/worker_pool 1.0.2 https://github.com/inaka/worker_pool a simple erlang worker pool
+xref_runner git https://github.com/inaka/xref_runner 0.2.0 https://github.com/inaka/xref_runner Erlang Xref Runner (inspired in rebar xref)
zeta git https://github.com/s1n4/zeta https://github.com/s1n4/zeta HTTP access log parser in Erlang
diff --git a/test/Makefile b/test/Makefile
index 5449ee5..9b7d4a1 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -35,7 +35,9 @@ endif
.PHONY: all clean app ct eunit tests-cover docs
-all: clean app ct eunit tests-cover docs
+.NOTPARALLEL:
+
+all: clean app ct eunit tests-cover docs pkgs
$i '+---------------------+'
$i '| All tests passed. |'
$i '+---------------------+'
@@ -195,8 +197,7 @@ docs: app1
$t rm app1/Makefile-doc
$i "Test 'docs' passed."
-# Test application used for testing.
-app1:
+define app1_setup
$i "Setting up app."
$t mkdir -p app1
$t cd .. && make
@@ -207,6 +208,35 @@ app1:
"-export([succ/1])." \
"succ(N) -> N + 1." \
> app1/src/m.erl
+endef
+
+define pkg_test_target
+pkg-$(1)-clean:
+ $t rm -rf app1
+
+pkg-$(1)-app1:
+ $(call app1_setup)
+
+pkg-$(1): pkg-$(1)-clean pkg-$(1)-app1
+ $i
+ $i " pkgs: Checking that '$(1)' builds correctly"
+ $i
+ $t printf "%s\n" \
+ "PROJECT = app1" \
+ "DEPS = $(1)" \
+ "include erlang.mk" \
+ > app1/Makefile
+ cp ../packages.v2.tsv app1/.erlang.mk.packages.v2
+ $t make -C app1
+endef
+
+$(foreach pkg,$(shell awk '{print $$1}' ../packages.v2.tsv),$(eval $(call pkg_test_target,$(pkg))))
+
+pkgs: $(foreach pkg,$(shell awk '{print $$1}' ../packages.v2.tsv),pkg-$(pkg))
+
+# Test application used for testing.
+app1:
+ $(call app1_setup)
# Extra module in app1 used for testing eunit
define create-module-t