Skip to content
This repository was archived by the owner on Jul 6, 2023. It is now read-only.

Commit ba67fab

Browse files
authored
Merge pull request #143 from fickludd/new-rpm-packaging
Branch into 3 rpm packages
2 parents 3ab0ee3 + a124f72 commit ba67fab

File tree

5 files changed

+188
-19
lines changed

5 files changed

+188
-19
lines changed

Makefile

Lines changed: 104 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,22 @@ rpmversion := $(versionnumber)-$(release)
2727
GRADLE = ./gradlew -PbuildVersion=$(buildversion)
2828

2929
jarfile := 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
3133
debfile := cypher-shell_$(debversion)_all.deb
3234

3335
outputs := cypher-shell cypher-shell.bat $(jarfile)
3436
artifacts:=$(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})
3640
deb_artifacts:=$(patsubst %,out/debian/cypher-shell-$(debversion)/%,${artifacts})
3741
deb_files:=$(wildcard packaging/debian/*)
3842
deb_targets:=$(patsubst packaging/debian/%,out/debian/cypher-shell-$(debversion)/debian/%,${deb_files})
3943

44+
DOCKERUUIDRPM := $(shell uuidgen)
45+
4046
help: ## 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+
156245
out/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}' < $< > $@

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ available in your local package manager.
3434
Then just do
3535

3636
```
37-
make debian rpm
37+
make debian rpm8 rpm11
3838
```
3939

4040
To test the packages you need to have Docker installed:
4141

4242
```
43-
make debian-test rpm-test
43+
make debian-test rpm8-test rpm11-test
4444
```
4545

4646
To get the versions correct when building packages you can override

packaging/rpm/cypher-shell.spec renamed to packaging/rpm-java11/cypher-shell.spec

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Name: cypher-shell
1+
Name: cypher-shell-java11
22
Provides: cypher-shell
33
Version: ${VERSION}
44
Release: ${RELEASE}%{?dist}
@@ -8,7 +8,8 @@ License: GPLv3
88
URL: https://github.com/neo4j/cypher-shell
99
Source0: https://github.com/neo4j/cypher-shell/archive/%{version}.tar.gz
1010

11-
Requires: which, (jre-headless >= 1.8 or jre >= 11)
11+
Conflicts: cypher-shell-java8, cypher-shell-openjava11
12+
Requires: which, jre >= 11
1213
BuildArch: noarch
1314
Prefix: /usr
1415

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
Name: cypher-shell-java8
2+
Provides: cypher-shell
3+
Version: ${VERSION}
4+
Release: ${RELEASE}%{?dist}
5+
Summary: Command line shell for Neo4j
6+
7+
License: GPLv3
8+
URL: https://github.com/neo4j/cypher-shell
9+
Source0: https://github.com/neo4j/cypher-shell/archive/%{version}.tar.gz
10+
11+
Conflicts: cypher-shell-java11
12+
Obsoletes: cypher-shell <= 1.1.8
13+
Requires: which, jre-headless >= 1.8
14+
BuildArch: noarch
15+
Prefix: /usr
16+
17+
%description
18+
A command line shell where you can execute Cypher against an instance
19+
of Neo4j.
20+
21+
%prep
22+
# This macro will unpack the tarball into the appropriate build directory
23+
# Expects tarball to unpack into a directory called {name}-{version}
24+
#%setup -q
25+
%build
26+
#make clean build
27+
28+
%install
29+
rm -rf ${RPM_BUILD_ROOT}
30+
# Calls make with correct DESTDIR
31+
%make_install prefix=/usr
32+
33+
%clean
34+
rm -rf ${RPM_BUILD_ROOT}
35+
36+
%files
37+
%defattr(-,root,root)
38+
%{_bindir}/cypher-shell
39+
%{_datadir}/cypher-shell
40+
%doc %{_mandir}/man1/cypher-shell.1.gz
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
Name: cypher-shell-openjava11
2+
Provides: cypher-shell
3+
Version: ${VERSION}
4+
Release: ${RELEASE}%{?dist}
5+
Summary: Command line shell for Neo4j
6+
7+
License: GPLv3
8+
URL: https://github.com/neo4j/cypher-shell
9+
Source0: https://github.com/neo4j/cypher-shell/archive/%{version}.tar.gz
10+
11+
Conflicts: cypher-shell-java8, cypher-shell-java11
12+
Requires: which, jre-11-headless >= 11
13+
BuildArch: noarch
14+
Prefix: /usr
15+
16+
%description
17+
A command line shell where you can execute Cypher against an instance
18+
of Neo4j.
19+
20+
%prep
21+
# This macro will unpack the tarball into the appropriate build directory
22+
# Expects tarball to unpack into a directory called {name}-{version}
23+
#%setup -q
24+
%build
25+
#make clean build
26+
27+
%install
28+
rm -rf ${RPM_BUILD_ROOT}
29+
# Calls make with correct DESTDIR
30+
%make_install prefix=/usr
31+
32+
%clean
33+
rm -rf ${RPM_BUILD_ROOT}
34+
35+
%files
36+
%defattr(-,root,root)
37+
%{_bindir}/cypher-shell
38+
%{_datadir}/cypher-shell
39+
%doc %{_mandir}/man1/cypher-shell.1.gz

0 commit comments

Comments
 (0)