aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--README.md16
-rw-r--r--core/deps.mk1
-rw-r--r--core/erlc.mk11
-rw-r--r--erlang.mk41
-rw-r--r--packages.v1.tsv19
-rw-r--r--packages.v1.txt19
-rw-r--r--packages.v2.tsv7
-rw-r--r--plugins/dialyzer.mk8
-rw-r--r--plugins/relx.mk21
10 files changed, 110 insertions, 39 deletions
diff --git a/Makefile b/Makefile
index 7d6d977..d7bb08d 100644
--- a/Makefile
+++ b/Makefile
@@ -19,5 +19,9 @@ ERLANG_MK = erlang.mk
.PHONY: all
-all:
+all: pkg
awk 'FNR==1 && NR!=1{print ""}1' $(patsubst %,%.mk,$(BUILD_CONFIG)) > $(ERLANG_MK)
+
+pkg:
+ cat packages.v2.tsv | awk 'BEGIN { FS = "\t" }; { print $$1 "\t" $$3 "\t" $$5 "\t" $$6 }' > packages.v1.tsv
+ cp packages.v1.tsv packages.v1.txt
diff --git a/README.md b/README.md
index 2a496d5..c3e4e93 100644
--- a/README.md
+++ b/README.md
@@ -322,6 +322,22 @@ You can change the generated releases location by setting
the `RELX_OUTPUT_DIR` variable. Any other option should go
in the `RELX_OPTS` variable.
+Contributing
+------------
+
+You can contribute by providing feedback, creating patches,
+adding packages to the index or new features as plugins.
+
+For packages, you only need to edit the `packages.v2.tsv`
+file, adding your package (they are sorted alphabetically),
+and then running `make` to update the older files kept for
+compatibility reasons.
+
+For patches or plugins, you have to edit the `core/*.mk`
+or `plugins/*.mk` files and then run `make` to create an
+updated `erlang.mk`. If you submit a new plugin, you also
+need to add it to the `build.config` file.
+
Support
-------
diff --git a/core/deps.mk b/core/deps.mk
index f15ae74..1c1892f 100644
--- a/core/deps.mk
+++ b/core/deps.mk
@@ -47,6 +47,7 @@ define dep_fetch
git clone -n -- $$$$REPO $(DEPS_DIR)/$(1); \
cd $(DEPS_DIR)/$(1) && git checkout -q $$$$COMMIT; \
else \
+ echo "Unknown or invalid dependency: $(1). Please consult the erlang.mk README for instructions." >&2; \
exit 78; \
fi
endef
diff --git a/core/erlc.mk b/core/erlc.mk
index 2ca7040..c75c656 100644
--- a/core/erlc.mk
+++ b/core/erlc.mk
@@ -22,12 +22,14 @@ xyrl_verbose_0 = @echo " XYRL " $(filter %.xrl %.yrl,$(?F));
xyrl_verbose = $(xyrl_verbose_$(V))
# Core targets.
-erlc-include:
- -@find include/ src/ -type f -name \*.hrl -newer ebin -exec touch $(shell find src/ -type f -name "*.erl") \;
app:: erlc-include ebin/$(PROJECT).app
$(eval MODULES := $(shell find ebin -type f -name \*.beam \
| sed "s/ebin\//'/;s/\.beam/',/" | sed '$$s/.$$//'))
+ @if [ -z "$$(grep -E '^[^%]*{modules,' src/$(PROJECT).app.src)" ]; then \
+ echo "Empty modules entry not found in $(PROJECT).app.src. Please consult the erlang.mk README for instructions." >&2; \
+ exit 1; \
+ fi
$(appsrc_verbose) cat src/$(PROJECT).app.src \
| sed "s/{modules,[[:space:]]*\[\]}/{modules, \[$(MODULES)\]}/" \
> ebin/$(PROJECT).app
@@ -60,5 +62,10 @@ clean:: clean-app
# Extra targets.
+erlc-include:
+ -@if [ -d ebin/ ]; then \
+ find include/ src/ -type f -name \*.hrl -newer ebin -exec touch $(shell find src/ -type f -name "*.erl") \; ; \
+ fi
+
clean-app:
$(gen_verbose) rm -rf ebin/
diff --git a/erlang.mk b/erlang.mk
index c75c919..310d663 100644
--- a/erlang.mk
+++ b/erlang.mk
@@ -115,6 +115,7 @@ define dep_fetch
git clone -n -- $$$$REPO $(DEPS_DIR)/$(1); \
cd $(DEPS_DIR)/$(1) && git checkout -q $$$$COMMIT; \
else \
+ echo "Unknown or invalid dependency: $(1). Please consult the erlang.mk README for instructions." >&2; \
exit 78; \
fi
endef
@@ -199,12 +200,14 @@ xyrl_verbose_0 = @echo " XYRL " $(filter %.xrl %.yrl,$(?F));
xyrl_verbose = $(xyrl_verbose_$(V))
# Core targets.
-erlc-include:
- -@find include/ src/ -type f -name \*.hrl -newer ebin -exec touch $(shell find src/ -type f -name "*.erl") \;
app:: erlc-include ebin/$(PROJECT).app
$(eval MODULES := $(shell find ebin -type f -name \*.beam \
| sed "s/ebin\//'/;s/\.beam/',/" | sed '$$s/.$$//'))
+ @if [ -z "$$(grep -E '^[^%]*{modules,' src/$(PROJECT).app.src)" ]; then \
+ echo "Empty modules entry not found in $(PROJECT).app.src. Please consult the erlang.mk README for instructions." >&2; \
+ exit 1; \
+ fi
$(appsrc_verbose) cat src/$(PROJECT).app.src \
| sed "s/{modules,[[:space:]]*\[\]}/{modules, \[$(MODULES)\]}/" \
> ebin/$(PROJECT).app
@@ -237,6 +240,11 @@ clean:: clean-app
# Extra targets.
+erlc-include:
+ -@if [ -d ebin/ ]; then \
+ find include/ src/ -type f -name \*.hrl -newer ebin -exec touch $(shell find src/ -type f -name "*.erl") \; ; \
+ fi
+
clean-app:
$(gen_verbose) rm -rf ebin/
@@ -620,13 +628,19 @@ help::
# Plugin-specific targets.
-plt: deps app
+$(DIALYZER_PLT): deps app
@dialyzer --build_plt --apps erts kernel stdlib $(PLT_APPS) $(ALL_DEPS_DIRS)
+plt: $(DIALYZER_PLT)
+
distclean-plt:
$(gen_verbose) rm -f $(DIALYZER_PLT)
+ifneq ($(wildcard $(DIALYZER_PLT)),)
dialyze:
+else
+dialyze: $(DIALYZER_PLT)
+endif
@dialyzer --no_native --src -r src $(DIALYZER_OPTS)
# Copyright (c) 2013-2014, Loïc Hoguin <[email protected]>
@@ -680,14 +694,12 @@ distclean-edoc:
# Copyright (c) 2013-2014, Loïc Hoguin <[email protected]>
# This file is part of erlang.mk and subject to the terms of the ISC License.
-.PHONY: distclean-rel
+.PHONY: relx-rel distclean-relx-rel distclean-relx
# Configuration.
RELX_CONFIG ?= $(CURDIR)/relx.config
-ifneq ($(wildcard $(RELX_CONFIG)),)
-
RELX ?= $(CURDIR)/relx
export RELX
@@ -701,10 +713,11 @@ endif
# Core targets.
-rel:: distclean-rel $(RELX)
- @$(RELX) -c $(RELX_CONFIG) $(RELX_OPTS)
+ifneq ($(wildcard $(RELX_CONFIG)),)
+rel:: distclean-relx-rel relx-rel
+endif
-distclean:: distclean-rel
+distclean:: distclean-relx-rel distclean-relx
# Plugin-specific targets.
@@ -716,7 +729,11 @@ endef
$(RELX):
@$(call relx_fetch)
-distclean-rel:
- $(gen_verbose) rm -rf $(RELX) $(RELX_OUTPUT_DIR)
+relx-rel: $(RELX)
+ @$(RELX) -c $(RELX_CONFIG) $(RELX_OPTS)
+
+distclean-relx-rel:
+ $(gen_verbose) rm -rf $(RELX_OUTPUT_DIR)
-endif
+distclean-relx:
+ $(gen_verbose) rm -rf $(RELX)
diff --git a/packages.v1.tsv b/packages.v1.tsv
index 02a1a39..3265305 100644
--- a/packages.v1.tsv
+++ b/packages.v1.tsv
@@ -1,12 +1,17 @@
bullet https://github.com/extend/bullet http://ninenines.eu Simple, reliable, efficient streaming for Cowboy.
-cowboy https://github.com/extend/cowboy http://ninenines.eu Small, fast and modular HTTP server.
-cowlib https://github.com/extend/cowlib http://ninenines.eu Support library for manipulating Web protocols.
+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.
+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.
erlydtl https://github.com/erlydtl/erlydtl https://github.com/erlydtl/erlydtl Django Template Language for Erlang.
-eper https://github.com/massemanet/eper https://github.com/massemanet/eper Erlang Performance and debugging tools.
-farwest_core https://github.com/extend/farwest_core http//ninenines.eu Modern web application development platform.
-farwest_ui https://github.com/extend/farwest_ui http://ninenines.eu Development and administration UI for Farwest.
gun https://github.com/extend/gun http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
+jiffy https://github.com/davisp/jiffy https://github.com/davisp/jiffy JSON NIFs for Erlang.
jsx https://github.com/talentdeficit/jsx https://github.com/talentdeficit/jsx An Erlang application for consuming, producing and manipulating JSON.
-ranch https://github.com/extend/ranch http://ninenines.eu Socket acceptor pool for TCP protocols.
-sheriff https://github.com/extend/sheriff http://ninenines.eu Parse transform for type based validation.
+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.
+neo4j https://github.com/dmitriid/neo4j-erlang https://github.com/dmitriid/neo4j-erlang Erlang client library for Neo4J.
+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.
+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.
+sheriff https://github.com/extend/sheriff http://ninenines.eu Parse transform for type based validation.
diff --git a/packages.v1.txt b/packages.v1.txt
index 02a1a39..3265305 100644
--- a/packages.v1.txt
+++ b/packages.v1.txt
@@ -1,12 +1,17 @@
bullet https://github.com/extend/bullet http://ninenines.eu Simple, reliable, efficient streaming for Cowboy.
-cowboy https://github.com/extend/cowboy http://ninenines.eu Small, fast and modular HTTP server.
-cowlib https://github.com/extend/cowlib http://ninenines.eu Support library for manipulating Web protocols.
+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.
+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.
erlydtl https://github.com/erlydtl/erlydtl https://github.com/erlydtl/erlydtl Django Template Language for Erlang.
-eper https://github.com/massemanet/eper https://github.com/massemanet/eper Erlang Performance and debugging tools.
-farwest_core https://github.com/extend/farwest_core http//ninenines.eu Modern web application development platform.
-farwest_ui https://github.com/extend/farwest_ui http://ninenines.eu Development and administration UI for Farwest.
gun https://github.com/extend/gun http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
+jiffy https://github.com/davisp/jiffy https://github.com/davisp/jiffy JSON NIFs for Erlang.
jsx https://github.com/talentdeficit/jsx https://github.com/talentdeficit/jsx An Erlang application for consuming, producing and manipulating JSON.
-ranch https://github.com/extend/ranch http://ninenines.eu Socket acceptor pool for TCP protocols.
-sheriff https://github.com/extend/sheriff http://ninenines.eu Parse transform for type based validation.
+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.
+neo4j https://github.com/dmitriid/neo4j-erlang https://github.com/dmitriid/neo4j-erlang Erlang client library for Neo4J.
+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.
+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.
+sheriff https://github.com/extend/sheriff http://ninenines.eu Parse transform for type based validation.
diff --git a/packages.v2.tsv b/packages.v2.tsv
index cab43cc..886308f 100644
--- a/packages.v2.tsv
+++ b/packages.v2.tsv
@@ -2,9 +2,16 @@ bullet git https://github.com/extend/bullet master http://ninenines.eu Simple, r
cowboy git https://github.com/ninenines/cowboy 1.0.0 http://ninenines.eu Small, fast and modular HTTP server.
cowlib git https://github.com/ninenines/cowlib 1.0.0 http://ninenines.eu Support library for manipulating Web protocols.
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.
erlydtl git https://github.com/erlydtl/erlydtl master https://github.com/erlydtl/erlydtl Django Template Language for Erlang.
gun git https://github.com/extend/gun master http//ninenines.eu Asynchronous SPDY, HTTP and Websocket client written in Erlang.
+jiffy git https://github.com/davisp/jiffy master https://github.com/davisp/jiffy JSON NIFs for Erlang.
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.
+neo4j git https://github.com/dmitriid/neo4j-erlang master https://github.com/dmitriid/neo4j-erlang Erlang client library for Neo4J.
+pegjs git https://github.com/dmitriid/pegjs 0.2.1 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.
ranch git https://github.com/ninenines/ranch 1.0.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.
sheriff git https://github.com/extend/sheriff master http://ninenines.eu Parse transform for type based validation.
diff --git a/plugins/dialyzer.mk b/plugins/dialyzer.mk
index 8e404d1..db1143a 100644
--- a/plugins/dialyzer.mk
+++ b/plugins/dialyzer.mk
@@ -24,11 +24,17 @@ help::
# Plugin-specific targets.
-plt: deps app
+$(DIALYZER_PLT): deps app
@dialyzer --build_plt --apps erts kernel stdlib $(PLT_APPS) $(ALL_DEPS_DIRS)
+plt: $(DIALYZER_PLT)
+
distclean-plt:
$(gen_verbose) rm -f $(DIALYZER_PLT)
+ifneq ($(wildcard $(DIALYZER_PLT)),)
dialyze:
+else
+dialyze: $(DIALYZER_PLT)
+endif
@dialyzer --no_native --src -r src $(DIALYZER_OPTS)
diff --git a/plugins/relx.mk b/plugins/relx.mk
index ad8343f..3204321 100644
--- a/plugins/relx.mk
+++ b/plugins/relx.mk
@@ -1,14 +1,12 @@
# Copyright (c) 2013-2014, Loïc Hoguin <[email protected]>
# This file is part of erlang.mk and subject to the terms of the ISC License.
-.PHONY: distclean-rel
+.PHONY: relx-rel distclean-relx-rel distclean-relx
# Configuration.
RELX_CONFIG ?= $(CURDIR)/relx.config
-ifneq ($(wildcard $(RELX_CONFIG)),)
-
RELX ?= $(CURDIR)/relx
export RELX
@@ -22,10 +20,11 @@ endif
# Core targets.
-rel:: distclean-rel $(RELX)
- @$(RELX) -c $(RELX_CONFIG) $(RELX_OPTS)
+ifneq ($(wildcard $(RELX_CONFIG)),)
+rel:: distclean-relx-rel relx-rel
+endif
-distclean:: distclean-rel
+distclean:: distclean-relx-rel distclean-relx
# Plugin-specific targets.
@@ -37,7 +36,11 @@ endef
$(RELX):
@$(call relx_fetch)
-distclean-rel:
- $(gen_verbose) rm -rf $(RELX) $(RELX_OUTPUT_DIR)
+relx-rel: $(RELX)
+ @$(RELX) -c $(RELX_CONFIG) $(RELX_OPTS)
+
+distclean-relx-rel:
+ $(gen_verbose) rm -rf $(RELX_OUTPUT_DIR)
-endif
+distclean-relx:
+ $(gen_verbose) rm -rf $(RELX)