diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2014-11-16 03:36:40 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2014-11-16 03:36:40 -0500 |
commit | c2fb9eec0a018b2dced5078904a77d6adf75c6ab (patch) | |
tree | 5573bd54221de13336768199be4c163d2f93aa85 /Makefile | |
parent | 4503e3cf26c00f856a1a5a4ed63a193d7800b7d0 (diff) |
Support stubbing entry points without exposing the entire classpath
And use this for modello in maven.
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 50 |
1 files changed, 34 insertions, 16 deletions
@@ -1,20 +1,22 @@ top := $(shell pwd) -CAT = cat -CP = cp -ECHO = echo -EXISTS = test -e -FAIL = exit 1 -FIND = find -GIT = git -MKDIRS = mkdir -p -PATCH = patch -RM = rm -f -SED = sed -SVN = svn -TAR = bsdtar -TOUCH = touch -WGET = wget +CAT = cat +CP = cp +ECHO = echo +EXISTS = test -e +FAIL = exit 1 +FIND = find +GIT = git +INSTALL = install +JAVA = java +MKDIRS = mkdir -p +PATCH = patch +RM = rm -f +SED = sed +SVN = svn +TAR = bsdtar +TOUCH = touch +WGET = wget all: package @@ -46,6 +48,7 @@ export JAR_DIR := $(shell $(CAT) conf/jardir.txt) # Post-processing for conf/sources.mk packages := $(filter-out _%,$(variables)) packages_specific=$(filter $(patsubst rules/%/Makefile,%,$(wildcard rules/*/Makefile)),$(packages)) +packages_stub =$(foreach package,$(packages),$(if $(filter stub,$(call name2,type,$(package))),$(package))) packages_generic =$(filter-out $(packages_specific) $(packages_stub),$(packages)) specs := $(foreach variable,$(variables),$(if $(findstring |,$($(variable))),$($(variable)))) @@ -87,7 +90,7 @@ build/download/tar/%: .tokens/network # extract ###################################################################### -extract: PHONY $(addprefix build/extract,$(call spec2,file,$(specs))) +extract: PHONY $(addprefix build/extract,$(call spec2,file,$(call specs_for,git svn tar union))) # 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 @@ -203,6 +206,21 @@ build/packages/%: RECURSIVE build/workdir/% rules/_generic/Makefile for dep in $(filter-out RECURSIVE,$^); do $(EXISTS) $$dep || { $(RM) -r '$@'; $(FAIL); }; done $(call recurse,$(top)/rules/_generic/Makefile) || { $(RM) -r '$@'; $(FAIL); } +$(addprefix build/packages/,$(packages_stub)): \ +build/packages/%: $(MAKEFILE_LIST) + { \ + $(ECHO) '#!/bin/sh' && \ + $(ECHO) 'CLASSPATH=$(call deps2classpath,$^):$${CLASSPATH:+:$${CLASSPATH}}' && \ + $(ECHO) 'export CLASSPATH' && \ + $(ECHO) 'exec $(JAVA) $(call name2,extra,$*)' ; \ + } | $(INSTALL) -Dm755 /dev/stdin '$@/usr/bin/$(call name2,url,$*)' && \ + { \ + $(ECHO) '#!/bin/sh' && \ + $(ECHO) 'CLASSPATH=$(call deps2classpath,$^):$${CLASSPATH:+:$${CLASSPATH}}' && \ + $(ECHO) 'printf '%s\n' "$$CLASSPATH"' ; \ + } | $(INSTALL) -Dm755 /dev/stdin '$@/usr/bin/$(call name2,url,$*)-classpath' || \ + { $(RM) -r '$@'; $(FAIL); } + # boilerplate ################################################################## clean: PHONY |