Просмотр исходного кода

Autopatch by default

Also fix a number of issues with packages from the index.

Some packages were temporarily removed and will be added back
once they build correctly.
Loïc Hoguin 10 лет назад
Родитель
Сommit
1643470a87
5 измененных файлов с 172 добавлено и 130 удалено
  1. 69 15
      core/deps.mk
  2. 23 37
      packages.v1.tsv
  3. 23 37
      packages.v1.txt
  4. 24 38
      packages.v2.tsv
  5. 33 3
      test/Makefile

+ 69 - 15
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
 

+ 23 - 37
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

+ 23 - 37
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

+ 24 - 38
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

+ 33 - 3
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