diff options
-rw-r--r-- | Makefile | 29 | ||||
-rwxr-xr-x | utils/file2base | 7 | ||||
-rwxr-xr-x | utils/file2extra | 7 | ||||
-rwxr-xr-x | utils/file2url | 14 | ||||
-rwxr-xr-x | utils/spec2file | 16 |
5 files changed, 45 insertions, 28 deletions
@@ -23,12 +23,18 @@ all: package # spec = type|url|extra # file ~= type/url/extra # but with 'url' mangled # base ~= type/url # but with 'url' mangled -spec2base = $(shell utils/file2base "$$(utils/spec2file '$1')") + +name2file = $(call spec2file,$($1)) name2base = $(call spec2base,$($1)) -name2file = $(shell utils/spec2file '$($1)') -file2url = $(shell utils/file2url '$1') -file2base = $(shell utils/file2base '$1') -file2extra = $(shell utils/file2extra '$1') + +spec2file = $(shell utils/spec2file $(foreach a,$1,'$a') ) +spec2base = $(shell utils/file2base $$(utils/spec2file $(foreach a,$1,'$a'))) + +file2url = $(shell utils/file2url $(foreach a,$1,'$a')) +file2base = $(shell utils/file2base $(foreach a,$1,'$a')) +file2extra = $(shell utils/file2extra $(foreach a,$1,'$a')) + +specs_for = $(strip $(foreach t,$1,$(filter $t|%,$(if $2,$2,$(specs))))) dep_dir = $1 $(shell $(FIND) $1 2>/dev/null) dep_optdir = $(shell $(FIND) $1 2>/dev/null) @@ -40,11 +46,16 @@ include conf/sources.mk include conf/dependencies.mk export MAVEN_LOCAL_REPO := $(shell $(CAT) conf/maven.local.repo.txt) export JAR_DIR := $(shell $(CAT) conf/jardir.txt) -tarbombs := $(foreach spec,$(_tarbombs),build/extract/$(call spec2base,$(spec))) + +specs := $(foreach package,$(packages),$($(package))) +tarbombs := $(addprefix build/extract/,$(call spec2base,$(_tarbombs))) # download ##################################################################### -download: PHONY $(foreach package,$(packages),build/download/$(call name2file,$(package))) +download: PHONY \ + $(addprefix build/download/, \ + $(call spec2base,$(call specs_for,git tar)) \ + $(call spec2file,$(call specs_for,svn)) ) build/download/git/%: .tokens/network if [ -d '$@' ]; then \ @@ -75,7 +86,7 @@ build/download/tar/%: .tokens/network # extract ###################################################################### -extract: PHONY $(foreach package,$(packages),build/extract/$(call name2file,$(package))) +extract: PHONY $(addprefix build/extract,$(call spec2file,$(specs))) # This is a little gross because to get the dependencies right for # `git` and `tar`, we need to do a bit more complex processing of @@ -115,7 +126,7 @@ build/extract/tar/%: # magic foreach loop # magic foreach loop $(foreach package,$(packages), \ - $(if $(foreach s,git tar,$(filter $s|%,$($(package)))), \ + $(if $(call specs_for,git tar,$($(package))), \ $(eval \ build/extract/$(call name2file,$(package)): \ build/download/$(call name2base,$(package)) \ diff --git a/utils/file2base b/utils/file2base index 616bbbf..2fee680 100755 --- a/utils/file2base +++ b/utils/file2base @@ -1,5 +1,6 @@ #!/usr/bin/env bash -IFS=/ read -r type url extra <<<"$*" - -echo "${type}/${url}" +for file in "$@"; do + IFS=/ read -r type url extra <<<"$file" + echo "${type}/${url}" +done diff --git a/utils/file2extra b/utils/file2extra index 1aa588e..663e461 100755 --- a/utils/file2extra +++ b/utils/file2extra @@ -1,5 +1,6 @@ #!/usr/bin/env bash -IFS=/ read -r type url extra <<<"$*" - -echo "${extra}" +for file in "$@"; do + IFS=/ read -r type url extra <<<"$file" + echo "${extra}" +done diff --git a/utils/file2url b/utils/file2url index 513b7a2..44900b7 100755 --- a/utils/file2url +++ b/utils/file2url @@ -1,10 +1,12 @@ #!/usr/bin/env bash -IFS=/ read -r type url extra <<<"$*" +for file in "$@"; do + IFS=/ read -r type url extra <<<"$file" -url=${url//^2F//} -url=${url//^3A/:} -url=${url//^3D/=} -url=${url//^5E/^} + url=${url//^2F//} + url=${url//^3A/:} + url=${url//^3D/=} + url=${url//^5E/^} -echo "${url}" + echo "${url}" +done diff --git a/utils/spec2file b/utils/spec2file index 692e43e..b0eb72d 100755 --- a/utils/spec2file +++ b/utils/spec2file @@ -1,11 +1,13 @@ #!/usr/bin/env bash -IFS='|' read -r type url extra <<<"$*" +for spec in "$@"; do + IFS='|' read -r type url extra <<<"$spec" -url=${url//^/^5E} -url=${url//=/^3D} -url=${url//:/^3A} -url=${url//\//^2F} + url=${url//^/^5E} + url=${url//=/^3D} + url=${url//:/^3A} + url=${url//\//^2F} -ret=${type}/${url}/${extra} -echo "${ret%/}" + ret=${type}/${url}/${extra} + echo "${ret%/}" +done |