aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-07-20 14:06:53 +0200
committerLoïc Hoguin <[email protected]>2014-07-20 14:06:53 +0200
commit0dc1feba668a4e86d4b2a4bb4bcb40a48822490a (patch)
tree3cb88fc835722ca91ceaeeb903396e0ee1b3b5e0 /core
parentf2e7ca3b3d9562b186fb276c72ee7f45a8304c32 (diff)
downloaderlang.mk-0dc1feba668a4e86d4b2a4bb4bcb40a48822490a.tar.gz
erlang.mk-0dc1feba668a4e86d4b2a4bb4bcb40a48822490a.tar.bz2
erlang.mk-0dc1feba668a4e86d4b2a4bb4bcb40a48822490a.zip
Change package index file format and deps handling
This commit adds two columns to the package index file: the method used to retrieve the dependency (only git supported at this point) and the preferred version (a commit or equivalent in the case of git). Now that all the necessary information is in the package index file, the dep_* lines become optional. It is possible to fetch dependencies by just listing it in the DEPS variable, for example this would fetch both cowboy and jsx: DEPS = cowboy jsx The dep_* line can be used to override the defaults. It now takes three values, the method used to retrieve the dependency, the repository URL and the preferred version. The only change from before is the first value being added.
Diffstat (limited to 'core')
-rw-r--r--core/deps.mk33
1 files changed, 18 insertions, 15 deletions
diff --git a/core/deps.mk b/core/deps.mk
index 27eefe5..9491b3f 100644
--- a/core/deps.mk
+++ b/core/deps.mk
@@ -22,10 +22,10 @@ endif
endif
export ERL_LIBS
-PKG_FILE ?= $(CURDIR)/.erlang.mk.packages.v1
+PKG_FILE ?= $(CURDIR)/.erlang.mk.packages.v2
export PKG_FILE
-PKG_FILE_URL ?= https://raw.githubusercontent.com/extend/erlang.mk/master/packages.v1.tsv
+PKG_FILE_URL ?= https://raw.githubusercontent.com/extend/erlang.mk/master/packages.v2.tsv
# Core targets.
@@ -42,17 +42,20 @@ distclean:: distclean-deps distclean-pkg
# Deps related targets.
+define dep_fetch_git
+ git clone -n -- $(2) $(DEPS_DIR)/$(1)
+ cd $(DEPS_DIR)/$(1) ; git checkout -q $(3)
+endef
+
define dep_fetch
@mkdir -p $(DEPS_DIR)
-ifeq (,$(findstring pkg://,$(word 1,$(dep_$(1)))))
- git clone -n -- $(word 1,$(dep_$(1))) $(DEPS_DIR)/$(1)
-else
+ifeq (,$(dep_$(1)))
@if [ ! -f $(PKG_FILE) ]; then $(call core_http_get,$(PKG_FILE),$(PKG_FILE_URL)); fi
- git clone -n -- `awk 'BEGIN { FS = "\t" }; \
- $$$$1 == "$(subst pkg://,,$(word 1,$(dep_$(1))))" { print $$$$2 }' \
- $(PKG_FILE)` $(DEPS_DIR)/$(1)
+ $(eval DEP_FETCH_PKG := $(shell awk 'BEGIN { FS = "\t" }; $$1 == "$(1)" { print $$2 " " $$3 " "$$4 }' $(PKG_FILE)))
+ $(call dep_fetch_$(word 1,$(DEP_FETCH_PKG)),$(1),$(word 2,$(DEP_FETCH_PKG)),$(word 3,$(DEP_FETCH_PKG)))
+else
+ $(call dep_fetch_$(word 1,$(dep_$(1))),$(1),$(word 2,$(dep_$(1))),$(word 3,$(dep_$(1))))
endif
- cd $(DEPS_DIR)/$(1) ; git checkout -q $(word 2,$(dep_$(1)))
endef
define dep_target
@@ -73,17 +76,17 @@ $(PKG_FILE):
pkg-list: $(PKG_FILE)
@cat $(PKG_FILE) | awk 'BEGIN { FS = "\t" }; { print \
"Name:\t\t" $$1 "\n" \
- "Repository:\t" $$2 "\n" \
- "Website:\t" $$3 "\n" \
- "Description:\t" $$4 "\n" }'
+ "Repository:\t" $$3 "\n" \
+ "Website:\t" $$5 "\n" \
+ "Description:\t" $$6 "\n" }'
ifdef q
pkg-search: $(PKG_FILE)
@cat $(PKG_FILE) | grep -i ${q} | awk 'BEGIN { FS = "\t" }; { print \
"Name:\t\t" $$1 "\n" \
- "Repository:\t" $$2 "\n" \
- "Website:\t" $$3 "\n" \
- "Description:\t" $$4 "\n" }'
+ "Repository:\t" $$3 "\n" \
+ "Website:\t" $$5 "\n" \
+ "Description:\t" $$6 "\n" }'
else
pkg-search:
@echo "Usage: make pkg-search q=STRING"