From 0dc1feba668a4e86d4b2a4bb4bcb40a48822490a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sun, 20 Jul 2014 14:06:53 +0200 Subject: 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. --- core/deps.mk | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'core') 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" -- cgit v1.2.3