@@ -27,16 +27,22 @@ rpmversion := $(versionnumber)-$(release)
2727GRADLE = ./gradlew -PbuildVersion=$(buildversion )
2828
2929jarfile := cypher-shell.jar
30- rpmfile := cypher-shell-$(rpmversion ) .noarch.rpm
30+ rpm-java8file := cypher-shell-java8-$(rpmversion ) .noarch.rpm
31+ rpm-java11file := cypher-shell-java11-$(rpmversion ) .noarch.rpm
32+ rpm-openjava11file := cypher-shell-openjava11-$(rpmversion ) .noarch.rpm
3133debfile := cypher-shell_$(debversion ) _all.deb
3234
3335outputs := cypher-shell cypher-shell.bat $(jarfile )
3436artifacts: =$(patsubst % ,cypher-shell/build/install/cypher-shell/% ,${outputs})
35- rpm_artifacts: =$(patsubst % ,out/rpm/BUILD/% ,${artifacts})
37+ rpm-java8_artifacts: =$(patsubst % ,out/rpm-java8/BUILD/% ,${artifacts})
38+ rpm-java11_artifacts: =$(patsubst % ,out/rpm-java11/BUILD/% ,${artifacts})
39+ rpm-openjava11_artifacts: =$(patsubst % ,out/rpm-openjava11/BUILD/% ,${artifacts})
3640deb_artifacts: =$(patsubst % ,out/debian/cypher-shell-$(debversion ) /% ,${artifacts})
3741deb_files: =$(wildcard packaging/debian/* )
3842deb_targets: =$(patsubst packaging/debian/% ,out/debian/cypher-shell-$(debversion ) /debian/% ,${deb_files})
3943
44+ DOCKERUUIDRPM := $(shell uuidgen)
45+
4046help : # # Print this help text
4147 @grep -E ' ^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | awk ' BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
4248
@@ -122,37 +128,120 @@ out/cypher-shell.zip: tmp/cypher-shell.zip
122128 mkdir -p out
123129 cp $< $@
124130
125- out/rpm/SPECS/cypher-shell.spec : packaging/rpm/cypher-shell.spec
131+ .PHONY : rpm
132+ rpm : rpm-java8 rpm-java11 rpm-openjava11
133+
134+ # ======================= RPM java 8 =======================
135+
136+ out/rpm-java8/SPECS/cypher-shell.spec : packaging/rpm-java8/cypher-shell.spec
126137 mkdir -p $(dir $@ )
127138 VERSION=$(versionnumber ) RELEASE=$(release ) envsubst ' $${VERSION} $${RELEASE}' < $< > $@
128139
129- out/rpm/BUILD/% : %
140+ out/rpm-java8 /BUILD/% : %
130141 mkdir -p $(dir $@ )
131142 cp $< $@
132143
133- out/% .rpm : out/rpm/RPMS/noarch/% .rpm
144+ out/% .rpm : out/rpm-java8 /RPMS/noarch/% .rpm
134145 mkdir -p $(dir $@ )
135146 cp $< $@
136147
137- tmp/rpm-test/% .rpm : out/rpm/RPMS/noarch/% .rpm
148+ tmp/rpm-java8- test/% .rpm : out/rpm-java8 /RPMS/noarch/% .rpm
138149 mkdir -p $(dir $@ )
139150 cp $< $@
140151
141- tmp/rpm-test/Dockerfile : packaging/test/rpm/Dockerfile
152+ tmp/rpm-java8- test/Dockerfile : packaging/test/rpm/Dockerfile
142153 mkdir -p $(dir $@ )
143- RPMFILE=$(rpmfile ) envsubst ' $${RPMFILE}' < $< > $@
154+ RPMFILE=$(rpm-java8file ) envsubst ' $${RPMFILE}' < $< > $@
144155
145- out/rpm/RPMS/noarch/$(rpmfile ) : out/rpm/SPECS/cypher-shell.spec $(rpm_artifacts ) out/rpm/BUILD/Makefile out/rpm/BUILD/cypher-shell.1.md
146- rpmbuild --define " _topdir $( CURDIR) /out/rpm" -bb --clean $<
156+ out/rpm-java8 /RPMS/noarch/$(rpm-java8file ) : out/rpm-java8 /SPECS/cypher-shell.spec $(rpm-java8_artifacts ) out/rpm-java8 /BUILD/Makefile out/rpm-java8 /BUILD/cypher-shell.1.md
157+ rpmbuild --define " _topdir $( CURDIR) /out/rpm-java8 " -bb --clean $<
147158
148- .PHONY : rpm
149- rpm : out/$(rpmfile ) # # Build the RPM package
159+ .PHONY : rpm-java8
160+ rpm-java8 : out/$(rpm-java8file ) # # Build the RPM package
150161
151- DOCKERUUIDRPM := $(shell uuidgen)
152- .PHONY : rpm-test
153- rpm-test : tmp/rpm-test/$(rpmfile ) tmp/rpm-test/Dockerfile # # Test the RPM package (requires Docker)
162+ .PHONY : rpm-java8-test
163+ rpm-java8-test : tmp/rpm-java8-test/$(rpm-java8file ) tmp/rpm-java8-test/Dockerfile # # Test the RPM java 8 package (requires Docker)
154164 cd $(dir $< ) && docker build . -t $(DOCKERUUIDRPM ) && docker run --rm $(DOCKERUUIDRPM ) --version
155165
166+
167+ # ======================= RPM open java 11 variant (OpenJDK) =======================
168+ # We unfortunately need to provide two cypher shell rpm packages because
169+ # Oracle and OpenJDK java 11 distros provide incompatible package names:
170+ # a) OpenJDK provides jre-11/java-11
171+ # b) Oracle provides jre/java/jdk
172+
173+ out/rpm-openjava11/SPECS/cypher-shell.spec : packaging/rpm-openjava11/cypher-shell.spec
174+ mkdir -p $(dir $@ )
175+ VERSION=$(versionnumber ) RELEASE=$(release ) envsubst ' $${VERSION} $${RELEASE}' < $< > $@
176+
177+ out/rpm-openjava11/BUILD/% : %
178+ mkdir -p $(dir $@ )
179+ cp $< $@
180+
181+ out/% .rpm : out/rpm-openjava11/RPMS/noarch/% .rpm
182+ mkdir -p $(dir $@ )
183+ cp $< $@
184+
185+ tmp/rpm-openjava11-test/% .rpm : out/rpm-openjava11/RPMS/noarch/% .rpm
186+ mkdir -p $(dir $@ )
187+ cp $< $@
188+
189+ tmp/rpm-openjava11-test/Dockerfile : packaging/test/rpm/Dockerfile
190+ mkdir -p $(dir $@ )
191+ RPMFILE=$(rpm11file ) envsubst ' $${RPMFILE}' < $< > $@
192+
193+ out/rpm-openjava11/RPMS/noarch/$(rpm-openjava11file ) : out/rpm-openjava11/SPECS/cypher-shell.spec $(rpm-openjava11_artifacts ) out/rpm-openjava11/BUILD/Makefile out/rpm-openjava11/BUILD/cypher-shell.1.md
194+ rpmbuild --define " _topdir $( CURDIR) /out/rpm-openjava11" -bb --clean $<
195+
196+ .PHONY : rpm-openjava11
197+ rpm-openjava11 : out/$(rpm-openjava11file ) # # Build the RPM package
198+
199+ .PHONY : rpm-openjava11-test
200+ rpm-openjava11-test : tmp/rpm-openjava11-test/$(rpm-openjava11file ) tmp/rpm-openjava11-test/Dockerfile # # Test the RPM java 11 (Oracle) package (requires Docker)
201+ cd $(dir $< ) && docker build . -t $(DOCKERUUIDRPM ) && docker run --rm $(DOCKERUUIDRPM ) --version
202+
203+ # ======================= RPM java 11 variant (Oracle) =======================
204+ # We unfortunately need to provide two cypher shell rpm packages because
205+ # Oracle and OpenJDK java 11 distros provide incompatible package names:
206+ # a) OpenJDK provides jre-11/java-11
207+ # b) Oracle provides jre/java/jdk
208+
209+ out/rpm-java11/SPECS/cypher-shell.spec : packaging/rpm-java11/cypher-shell.spec
210+ mkdir -p $(dir $@ )
211+ VERSION=$(versionnumber ) RELEASE=$(release ) envsubst ' $${VERSION} $${RELEASE}' < $< > $@
212+
213+ out/rpm-java11/BUILD/% : %
214+ mkdir -p $(dir $@ )
215+ cp $< $@
216+
217+ out/% .rpm : out/rpm-java11/RPMS/noarch/% .rpm
218+ mkdir -p $(dir $@ )
219+ cp $< $@
220+
221+ tmp/rpm-java11-test/% .rpm : out/rpm-java11/RPMS/noarch/% .rpm
222+ mkdir -p $(dir $@ )
223+ cp $< $@
224+
225+ tmp/rpm-java11-test/Dockerfile : packaging/test/rpm/Dockerfile
226+ mkdir -p $(dir $@ )
227+ RPMFILE=$(rpm11file ) envsubst ' $${RPMFILE}' < $< > $@
228+
229+ out/rpm-java11/RPMS/noarch/$(rpm-java11file ) : out/rpm-java11/SPECS/cypher-shell.spec $(rpm-java11_artifacts ) out/rpm-java11/BUILD/Makefile out/rpm-java11/BUILD/cypher-shell.1.md
230+ rpmbuild --define " _topdir $( CURDIR) /out/rpm-java11" -bb --clean $<
231+
232+ .PHONY : rpm-java11
233+ rpm-java11 : out/$(rpm-java11file ) # # Build the RPM package
234+
235+ .PHONY : rpm-java11-test
236+ rpm-java11-test : tmp/rpm-java11-test/$(rpm-java11file ) tmp/rpm-java11-test/Dockerfile # # Test the RPM java 11 (Oracle) package (requires Docker)
237+ cd $(dir $< ) && docker build . -t $(DOCKERUUIDRPM ) && docker run --rm $(DOCKERUUIDRPM ) --version
238+
239+
240+
241+
242+ # ======================= DEBIAN =======================
243+
244+
156245out/debian/cypher-shell-$(debversion ) /debian/changelog : packaging/debian/changelog
157246 mkdir -p $(dir $@ )
158247 VERSION=$(debversion ) DISTRIBUTION=$(distribution ) DATE=" $( shell date -R) " envsubst ' $${VERSION} $${DISTRIBUTION} $${DATE}' < $< > $@
0 commit comments