summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2014-11-16 03:36:40 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2014-11-16 03:36:40 -0500
commitc2fb9eec0a018b2dced5078904a77d6adf75c6ab (patch)
tree5573bd54221de13336768199be4c163d2f93aa85 /Makefile
parent4503e3cf26c00f856a1a5a4ed63a193d7800b7d0 (diff)
Support stubbing entry points without exposing the entire classpath
And use this for modello in maven.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile50
1 files changed, 34 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 03a7b36..dd2140a 100644
--- a/Makefile
+++ b/Makefile
@@ -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