diff options
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | README.md | 16 | ||||
-rw-r--r-- | core/deps.mk | 1 | ||||
-rw-r--r-- | core/erlc.mk | 11 | ||||
-rw-r--r-- | erlang.mk | 41 | ||||
-rw-r--r-- | packages.v1.tsv | 19 | ||||
-rw-r--r-- | packages.v1.txt | 19 | ||||
-rw-r--r-- | packages.v2.tsv | 7 | ||||
-rw-r--r-- | plugins/dialyzer.mk | 8 | ||||
-rw-r--r-- | plugins/relx.mk | 21 |
10 files changed, 110 insertions, 39 deletions
@@ -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 @@ -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/ @@ -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) |