-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
97 lines (77 loc) · 2.83 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
TAG:=$(shell git describe --tags | sed -e 's/^v//')
TAG_DIST=$(shell echo $(TAG) | sed -r -e 's/.*-([[:digit:]]+)-g.*/\1/')
TAG_HASH=$(shell echo $(TAG) | sed -r -e 's/^.*(g[0-9a-f]+|$$)/\1/')
PKG=NIFI
PKG_VERSION=$(shell echo $(TAG) | sed -r -e 's/\+nifi.*//')
JQ_VERSION=1.5
VERSION=$(subst +,-,$(TAG))
ifeq ($(TRAVIS), true)
DISTROS=el7
else
DISTROS=el7
endif
PARCELS=$(foreach DISTRO,$(DISTROS),$(PKG)-$(VERSION)-$(DISTRO).parcel)
.INTERMEDIATE: %-SHA256
.DELETE_ON_ERROR:
.PHONY: release
all: info release
info:
@echo ' Git Tag: $(TAG)'
@[ ! -z $(TAG) ]
@echo ' Tag dist: $(TAG_DIST)'
@echo ' Tag hash: $(TAG_HASH)'
@echo ' PKG version: $(PKG_VERSION)'
@echo 'Parcel version: $(VERSION)'
@echo ' Parcels: $(PARCELS)'
clean:
rm -rf release $(PKG)-*
release: $(foreach PARCEL,$(PARCELS),release/$(PARCEL)) release/manifest.json
%/manifest.json: make_manifest.py
@mkdir -p $(shell dirname $@)
python make_manifest.py $(shell dirname $@)
$(PKG)-$(VERSION)-%.parcel: $(PKG)-$(VERSION).parcel
@mkdir -p $(shell dirname $@)
ln $< $@
java -jar validator.jar -f $@
$(PKG)-$(VERSION).parcel: $(PKG)-$(VERSION)/meta
@mkdir -p $(shell dirname $@)
tar zcvf $@ --owner root --group=root $(shell dirname $<)
$(PKG)-$(VERSION)/meta: $(PKG)-$(VERSION) meta validator.jar
@mkdir $@
cp meta/nifi_env.sh $@
cat meta/parcel.json | jq ".version=\"$(VERSION)\"" > $@/parcel.json
java -jar validator.jar -p $@/parcel.json || (rm -rf $@ && false)
$(PKG)-$(VERSION): nifi-$(PKG_VERSION) nifi-toolkit-$(PKG_VERSION) jq-$(JQ_VERSION)-linux64
rm -rf $@
mkdir -p $@/lib $@/bin
mv jq-$(JQ_VERSION)-linux64 $@/bin/jq
find $@/bin -type f -exec chmod 755 {} \;
cp -avf xslt $@/lib/nifi-xslt
mv nifi-$(PKG_VERSION) $@/lib/nifi
mv nifi-toolkit-$(PKG_VERSION) $@/lib/nifi-toolkit
find $@/lib/nifi-toolkit/bin -type f -exec chmod 755 {} \;
find $@/lib/nifi-toolkit/classpath -type f -exec chmod 644 {} \;
# Remote dependencies
validator.jar:
cd tools/cm_ext && mvn -q install && cd -
ln tools/cm_ext/validator/target/validator.jar .
make_manifest.py:
ln tools/cm_ext/make_manifest/make_manifest.py
jq-$(JQ_VERSION)-linux64: jq-$(JQ_VERSION)-SHA256
wget 'https://github.com/stedolan/jq/releases/download/jq-$(JQ_VERSION)/jq-linux64' -O $@
touch $@
sha256sum -c $<
nifi-$(PKG_VERSION)-bin.tar.gz: nifi-$(PKG_VERSION)-bin.tar.gz-SHA256
wget 'https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=nifi/$(PKG_VERSION)/$@' -O $@
touch $@
sha256sum -c $<
nifi-toolkit-$(PKG_VERSION)-bin.tar.gz: nifi-toolkit-$(PKG_VERSION)-bin.tar.gz-SHA256
wget 'https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=nifi/$(PKG_VERSION)/$@' -O $@
touch $@
sha256sum -c $<
# Implicit rules
%-SHA256: SHA256SUMS
grep $(subst -SHA256,,$@) SHA256SUMS > $@
%: %-bin.tar.gz
tar -zxvf $<
find $@/lib -type f -exec chmod o+r {} \;