From 5504b2e7a0e82eec38f1fbe5378d002efba1b437 Mon Sep 17 00:00:00 2001 From: Jenny Date: Tue, 16 Apr 2019 16:19:18 +0200 Subject: [PATCH 1/8] removed multiple rpm cypher-shells, replaced with java adapter. Java adapter, plus cypher-shell requirement "jre >= 1.8" makes cypher-shell compatible with java8 and java11 in both openjdk and oracle flavours. --- Makefile | 111 +++--------------- packaging/rpm-java-adapter/java-adapter.spec | 18 +++ packaging/rpm-java8/cypher-shell.spec | 40 ------- packaging/rpm-openjava11/cypher-shell.spec | 39 ------ .../{rpm-java11 => rpm}/cypher-shell.spec | 6 +- 5 files changed, 36 insertions(+), 178 deletions(-) create mode 100644 packaging/rpm-java-adapter/java-adapter.spec delete mode 100644 packaging/rpm-java8/cypher-shell.spec delete mode 100644 packaging/rpm-openjava11/cypher-shell.spec rename packaging/{rpm-java11 => rpm}/cypher-shell.spec (88%) diff --git a/Makefile b/Makefile index 5a2d7df5..cfd94fba 100644 --- a/Makefile +++ b/Makefile @@ -27,16 +27,12 @@ rpmversion := $(versionnumber)-$(release) GRADLE = ./gradlew -PbuildVersion=$(buildversion) jarfile := cypher-shell.jar -rpm-java8file := cypher-shell-java8-$(rpmversion).noarch.rpm -rpm-java11file := cypher-shell-java11-$(rpmversion).noarch.rpm -rpm-openjava11file := cypher-shell-openjava11-$(rpmversion).noarch.rpm +rpmfile := cypher-shell-$(rpmversion).noarch.rpm debfile := cypher-shell_$(debversion)_all.deb outputs := cypher-shell cypher-shell.bat $(jarfile) artifacts:=$(patsubst %,cypher-shell/build/install/cypher-shell/%,${outputs}) -rpm-java8_artifacts:=$(patsubst %,out/rpm-java8/BUILD/%,${artifacts}) -rpm-java11_artifacts:=$(patsubst %,out/rpm-java11/BUILD/%,${artifacts}) -rpm-openjava11_artifacts:=$(patsubst %,out/rpm-openjava11/BUILD/%,${artifacts}) +rpm_artifacts:=$(patsubst %,out/rpm/BUILD/%,${artifacts}) deb_artifacts:=$(patsubst %,out/debian/cypher-shell-$(debversion)/%,${artifacts}) deb_files:=$(wildcard packaging/debian/*) deb_targets:=$(patsubst packaging/debian/%,out/debian/cypher-shell-$(debversion)/debian/%,${deb_files}) @@ -128,117 +124,40 @@ out/cypher-shell.zip: tmp/cypher-shell.zip mkdir -p out cp $< $@ -.PHONY: rpm -rpm: rpm-java8 rpm-java11 rpm-openjava11 - -# ======================= RPM java 8 ======================= - -out/rpm-java8/SPECS/cypher-shell.spec: packaging/rpm-java8/cypher-shell.spec - mkdir -p $(dir $@) - VERSION=$(versionnumber) RELEASE=$(release) envsubst '$${VERSION} $${RELEASE}' < $< > $@ - -out/rpm-java8/BUILD/%: % - mkdir -p $(dir $@) - cp $< $@ - -out/%.rpm: out/rpm-java8/RPMS/noarch/%.rpm - mkdir -p $(dir $@) - cp $< $@ - -tmp/rpm-java8-test/%.rpm: out/rpm-java8/RPMS/noarch/%.rpm - mkdir -p $(dir $@) - cp $< $@ - -tmp/rpm-java8-test/Dockerfile: packaging/test/rpm/Dockerfile - mkdir -p $(dir $@) - RPMFILE=$(rpm-java8file) envsubst '$${RPMFILE}' < $< > $@ - -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 - rpmbuild --define "_topdir $(CURDIR)/out/rpm-java8" -bb --clean $< - -.PHONY: rpm-java8 -rpm-java8: out/$(rpm-java8file) ## Build the RPM package - -.PHONY: rpm-java8-test -rpm-java8-test: tmp/rpm-java8-test/$(rpm-java8file) tmp/rpm-java8-test/Dockerfile ## Test the RPM java 8 package (requires Docker) - cd $(dir $<) && docker build . -t $(DOCKERUUIDRPM) && docker run --rm $(DOCKERUUIDRPM) --version - - -# ======================= RPM open java 11 variant (OpenJDK) ======================= -# We unfortunately need to provide two cypher shell rpm packages because -# Oracle and OpenJDK java 11 distros provide incompatible package names: -# a) OpenJDK provides jre-11/java-11 -# b) Oracle provides jre/java/jdk +# ======================= RPM ======================= -out/rpm-openjava11/SPECS/cypher-shell.spec: packaging/rpm-openjava11/cypher-shell.spec +out/rpm/SPECS/cypher-shell.spec: packaging/rpm/cypher-shell.spec mkdir -p $(dir $@) VERSION=$(versionnumber) RELEASE=$(release) envsubst '$${VERSION} $${RELEASE}' < $< > $@ -out/rpm-openjava11/BUILD/%: % +out/rpm/BUILD/%: % mkdir -p $(dir $@) cp $< $@ -out/%.rpm: out/rpm-openjava11/RPMS/noarch/%.rpm +out/%.rpm: out/rpm/RPMS/noarch/%.rpm mkdir -p $(dir $@) cp $< $@ -tmp/rpm-openjava11-test/%.rpm: out/rpm-openjava11/RPMS/noarch/%.rpm +tmp/rpm-test/%.rpm: out/rpm/RPMS/noarch/%.rpm mkdir -p $(dir $@) cp $< $@ -tmp/rpm-openjava11-test/Dockerfile: packaging/test/rpm/Dockerfile +tmp/rpm-test/Dockerfile: packaging/test/rpm/Dockerfile mkdir -p $(dir $@) - RPMFILE=$(rpm11file) envsubst '$${RPMFILE}' < $< > $@ + RPMFILE=$(rpmfile) envsubst '$${RPMFILE}' < $< > $@ -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 - rpmbuild --define "_topdir $(CURDIR)/out/rpm-openjava11" -bb --clean $< +out/rpm/RPMS/noarch/$(rpmfile): out/rpm/SPECS/cypher-shell.spec $(rpm_artifacts) out/rpm/BUILD/Makefile out/rpm/BUILD/cypher-shell.1.md + rpmbuild --define "_topdir $(CURDIR)/out/rpm" -bb --clean $< -.PHONY: rpm-openjava11 -rpm-openjava11: out/$(rpm-openjava11file) ## Build the RPM package - -.PHONY: rpm-openjava11-test -rpm-openjava11-test: tmp/rpm-openjava11-test/$(rpm-openjava11file) tmp/rpm-openjava11-test/Dockerfile ## Test the RPM java 11 (Oracle) package (requires Docker) - cd $(dir $<) && docker build . -t $(DOCKERUUIDRPM) && docker run --rm $(DOCKERUUIDRPM) --version - -# ======================= RPM java 11 variant (Oracle) ======================= -# We unfortunately need to provide two cypher shell rpm packages because -# Oracle and OpenJDK java 11 distros provide incompatible package names: -# a) OpenJDK provides jre-11/java-11 -# b) Oracle provides jre/java/jdk - -out/rpm-java11/SPECS/cypher-shell.spec: packaging/rpm-java11/cypher-shell.spec - mkdir -p $(dir $@) - VERSION=$(versionnumber) RELEASE=$(release) envsubst '$${VERSION} $${RELEASE}' < $< > $@ - -out/rpm-java11/BUILD/%: % - mkdir -p $(dir $@) - cp $< $@ - -out/%.rpm: out/rpm-java11/RPMS/noarch/%.rpm - mkdir -p $(dir $@) - cp $< $@ - -tmp/rpm-java11-test/%.rpm: out/rpm-java11/RPMS/noarch/%.rpm - mkdir -p $(dir $@) - cp $< $@ - -tmp/rpm-java11-test/Dockerfile: packaging/test/rpm/Dockerfile - mkdir -p $(dir $@) - RPMFILE=$(rpm11file) envsubst '$${RPMFILE}' < $< > $@ - -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 - rpmbuild --define "_topdir $(CURDIR)/out/rpm-java11" -bb --clean $< - -.PHONY: rpm-java11 -rpm-java11: out/$(rpm-java11file) ## Build the RPM package +.PHONY: rpm +rpm: out/$(rpmfile) ## Build the RPM package -.PHONY: rpm-java11-test -rpm-java11-test: tmp/rpm-java11-test/$(rpm-java11file) tmp/rpm-java11-test/Dockerfile ## Test the RPM java 11 (Oracle) package (requires Docker) +.PHONY: rpm-test +rpm-test: tmp/rpm-test/$(rpmfile) tmp/rpm-test/Dockerfile ## Test the RPM java 11 (Oracle) package (requires Docker) cd $(dir $<) && docker build . -t $(DOCKERUUIDRPM) && docker run --rm $(DOCKERUUIDRPM) --version - # ======================= DEBIAN ======================= diff --git a/packaging/rpm-java-adapter/java-adapter.spec b/packaging/rpm-java-adapter/java-adapter.spec new file mode 100644 index 00000000..8fc73ea4 --- /dev/null +++ b/packaging/rpm-java-adapter/java-adapter.spec @@ -0,0 +1,18 @@ +Name: java-adapter +Version: 1.0 +Release: 1.0 +Summary: Meta package so that Neo4j can be compatible with java 8 and java 11 in both openjdk and oracle +License: GPLv3 + +Provides: jre = 11 +Requires: jre-11 + +%description +Meta package so that Neo4j can be compatible with java 8 and java 11 in both OpenJDK and Oracle. +Contains no source. + +%prep +%build +%install +%files +%changelog \ No newline at end of file diff --git a/packaging/rpm-java8/cypher-shell.spec b/packaging/rpm-java8/cypher-shell.spec deleted file mode 100644 index 9b3b20d2..00000000 --- a/packaging/rpm-java8/cypher-shell.spec +++ /dev/null @@ -1,40 +0,0 @@ -Name: cypher-shell-java8 -Provides: cypher-shell -Version: ${VERSION} -Release: ${RELEASE}%{?dist} -Summary: Command line shell for Neo4j - -License: GPLv3 -URL: https://github.com/neo4j/cypher-shell -Source0: https://github.com/neo4j/cypher-shell/archive/%{version}.tar.gz - -Conflicts: cypher-shell-java11 -Obsoletes: cypher-shell <= 1.1.8 -Requires: which, jre-headless >= 1.8 -BuildArch: noarch -Prefix: /usr - -%description -A command line shell where you can execute Cypher against an instance -of Neo4j. - -%prep -# This macro will unpack the tarball into the appropriate build directory -# Expects tarball to unpack into a directory called {name}-{version} -#%setup -q -%build -#make clean build - -%install -rm -rf ${RPM_BUILD_ROOT} -# Calls make with correct DESTDIR -%make_install prefix=/usr - -%clean -rm -rf ${RPM_BUILD_ROOT} - -%files -%defattr(-,root,root) -%{_bindir}/cypher-shell -%{_datadir}/cypher-shell -%doc %{_mandir}/man1/cypher-shell.1.gz diff --git a/packaging/rpm-openjava11/cypher-shell.spec b/packaging/rpm-openjava11/cypher-shell.spec deleted file mode 100644 index 4f6ac4bb..00000000 --- a/packaging/rpm-openjava11/cypher-shell.spec +++ /dev/null @@ -1,39 +0,0 @@ -Name: cypher-shell-openjava11 -Provides: cypher-shell -Version: ${VERSION} -Release: ${RELEASE}%{?dist} -Summary: Command line shell for Neo4j - -License: GPLv3 -URL: https://github.com/neo4j/cypher-shell -Source0: https://github.com/neo4j/cypher-shell/archive/%{version}.tar.gz - -Conflicts: cypher-shell-java8, cypher-shell-java11 -Requires: which, jre-11-headless >= 11 -BuildArch: noarch -Prefix: /usr - -%description -A command line shell where you can execute Cypher against an instance -of Neo4j. - -%prep -# This macro will unpack the tarball into the appropriate build directory -# Expects tarball to unpack into a directory called {name}-{version} -#%setup -q -%build -#make clean build - -%install -rm -rf ${RPM_BUILD_ROOT} -# Calls make with correct DESTDIR -%make_install prefix=/usr - -%clean -rm -rf ${RPM_BUILD_ROOT} - -%files -%defattr(-,root,root) -%{_bindir}/cypher-shell -%{_datadir}/cypher-shell -%doc %{_mandir}/man1/cypher-shell.1.gz diff --git a/packaging/rpm-java11/cypher-shell.spec b/packaging/rpm/cypher-shell.spec similarity index 88% rename from packaging/rpm-java11/cypher-shell.spec rename to packaging/rpm/cypher-shell.spec index 731129c5..21f4383b 100644 --- a/packaging/rpm-java11/cypher-shell.spec +++ b/packaging/rpm/cypher-shell.spec @@ -1,4 +1,4 @@ -Name: cypher-shell-java11 +Name: cypher-shell Provides: cypher-shell Version: ${VERSION} Release: ${RELEASE}%{?dist} @@ -8,8 +8,8 @@ License: GPLv3 URL: https://github.com/neo4j/cypher-shell Source0: https://github.com/neo4j/cypher-shell/archive/%{version}.tar.gz -Conflicts: cypher-shell-java8, cypher-shell-openjava11 -Requires: which, jre >= 11 +#Conflicts: +Requires: which, jre >= 1.8 BuildArch: noarch Prefix: /usr From 5c53c7ff1a340ea891a01b84069917acbfed6f02 Mon Sep 17 00:00:00 2001 From: Jenny Date: Tue, 16 Apr 2019 17:28:52 +0200 Subject: [PATCH 2/8] wrote Makefile target to build java adapter. I don't expect it will need updating often, so version numbers will need manually changing. --- Makefile | 19 ++++++++++++++++++- ...a-adapter.spec => neo4j-java-adapter.spec} | 12 ++++++------ 2 files changed, 24 insertions(+), 7 deletions(-) rename packaging/rpm-java-adapter/{java-adapter.spec => neo4j-java-adapter.spec} (68%) diff --git a/Makefile b/Makefile index cfd94fba..4a6cfb2a 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,7 @@ GRADLE = ./gradlew -PbuildVersion=$(buildversion) jarfile := cypher-shell.jar rpmfile := cypher-shell-$(rpmversion).noarch.rpm debfile := cypher-shell_$(debversion)_all.deb +java_adapter_file := neo4j-java-adapter-1.0.0-1.noarch.rpm outputs := cypher-shell cypher-shell.bat $(jarfile) artifacts:=$(patsubst %,cypher-shell/build/install/cypher-shell/%,${outputs}) @@ -124,7 +125,23 @@ out/cypher-shell.zip: tmp/cypher-shell.zip mkdir -p out cp $< $@ -# ======================= RPM ======================= +# ======================= RPM JAVA-ADAPTER ======================= + +.PHONY: java-adapter +java-adapter: out/$(java_adapter_file) ## Build the RPM package + +out/$(java_adapter_file): out/rpm/RPMS/noarch/$(java_adapter_file) + mkdir -p $(dir $@) + cp $< $@ + +out/rpm/RPMS/noarch/$(java_adapter_file): out/rpm/SPECS/neo4j-java-adapter.spec + rpmbuild --define "_topdir $(CURDIR)/out/rpm" -bb --clean $< + +out/rpm/SPECS/neo4j-java-adapter.spec: packaging/rpm-java-adapter/neo4j-java-adapter.spec + mkdir -p $(dir $@) + cp $< $@ + +# ======================= RPM CYPHER-SHELL ======================= out/rpm/SPECS/cypher-shell.spec: packaging/rpm/cypher-shell.spec mkdir -p $(dir $@) diff --git a/packaging/rpm-java-adapter/java-adapter.spec b/packaging/rpm-java-adapter/neo4j-java-adapter.spec similarity index 68% rename from packaging/rpm-java-adapter/java-adapter.spec rename to packaging/rpm-java-adapter/neo4j-java-adapter.spec index 8fc73ea4..d62e3e10 100644 --- a/packaging/rpm-java-adapter/java-adapter.spec +++ b/packaging/rpm-java-adapter/neo4j-java-adapter.spec @@ -1,11 +1,12 @@ -Name: java-adapter -Version: 1.0 -Release: 1.0 +Name: neo4j-java-adapter +Version: 1.0.0 +Release: 1%{?dist} Summary: Meta package so that Neo4j can be compatible with java 8 and java 11 in both openjdk and oracle License: GPLv3 -Provides: jre = 11 +Provides: jre = 11, java = 11, neo4j-java Requires: jre-11 +BuildArch: noarch %description Meta package so that Neo4j can be compatible with java 8 and java 11 in both OpenJDK and Oracle. @@ -14,5 +15,4 @@ Contains no source. %prep %build %install -%files -%changelog \ No newline at end of file +%files \ No newline at end of file From f86a7e9adf2424bb3cf36e13f6be55e83be33009 Mon Sep 17 00:00:00 2001 From: Jenny Date: Wed, 17 Apr 2019 14:38:54 +0200 Subject: [PATCH 3/8] added makefile target for creating docker volume containing yum repository still need to use this to create tests for the java adapter and/or cypher-shell --- Makefile | 24 ++++++++++++++++++++++-- packaging/test/java-adapter/Dockerfile | 10 ++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 packaging/test/java-adapter/Dockerfile diff --git a/Makefile b/Makefile index 4a6cfb2a..d417ac59 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,9 @@ deb_artifacts:=$(patsubst %,out/debian/cypher-shell-$(debversion)/%,${artifacts} deb_files:=$(wildcard packaging/debian/*) deb_targets:=$(patsubst packaging/debian/%,out/debian/cypher-shell-$(debversion)/debian/%,${deb_files}) -DOCKERUUIDRPM := $(shell uuidgen) +DOCKERUUIDRPM := $(shell uuidgen) +YUMREPO_VOLUMEID := $(shell uuidgen) +YUMREPO_IMAGEID := repomaker/$(shell uuidgen | head -c 5) help: ## Print this help text @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' @@ -141,6 +143,24 @@ out/rpm/SPECS/neo4j-java-adapter.spec: packaging/rpm-java-adapter/neo4j-java-ada mkdir -p $(dir $@) cp $< $@ +.PHONY: java-adapter-test +java-adapter-test: tmp/java-adapter-test/Dockerfile java-adapter-test-rpm-artifacts + cd $( tmp/java-adapter-test/volumeid + +java-adapter-test-rpm-artifacts: tmp/java-adapter-test/$(java_adapter_file) tmp/java-adapter-test/$(rpmfile) + +tmp/java-adapter-test/%.rpm: out/%.rpm + mkdir -p $(dir $@) + cp $< $@ + +tmp/java-adapter-test/Dockerfile: packaging/test/java-adapter/Dockerfile + mkdir -p $(dir $@) + CYPHER_SHELL_FILE=$(rpmfile) JAVA_ADAPTER_FILE=$(java_adapter_file) envsubst '$${CYPHER_SHELL_FILE} $${JAVA_ADAPTER_FILE}' < $< > $@ + + # ======================= RPM CYPHER-SHELL ======================= out/rpm/SPECS/cypher-shell.spec: packaging/rpm/cypher-shell.spec @@ -170,7 +190,7 @@ out/rpm/RPMS/noarch/$(rpmfile): out/rpm/SPECS/cypher-shell.spec $(rpm_artifacts) rpm: out/$(rpmfile) ## Build the RPM package .PHONY: rpm-test -rpm-test: tmp/rpm-test/$(rpmfile) tmp/rpm-test/Dockerfile ## Test the RPM java 11 (Oracle) package (requires Docker) +rpm-test: tmp/rpm-test/$(rpmfile) tmp/rpm-test/Dockerfile ## Test the RPM package (requires Docker) cd $(dir $<) && docker build . -t $(DOCKERUUIDRPM) && docker run --rm $(DOCKERUUIDRPM) --version diff --git a/packaging/test/java-adapter/Dockerfile b/packaging/test/java-adapter/Dockerfile new file mode 100644 index 00000000..2eb19aa6 --- /dev/null +++ b/packaging/test/java-adapter/Dockerfile @@ -0,0 +1,10 @@ +FROM ubuntu:bionic + +# VOLUME /repo + +COPY ${CYPHER_SHELL_FILE} /repo/ +COPY ${JAVA_ADAPTER_FILE} /repo/ + +RUN apt-get update -qq && \ + apt-get -y -qq install createrepo && \ + createrepo /repo \ No newline at end of file From da8d5517305d0e6caba06d2da6c0e41a087cc4d5 Mon Sep 17 00:00:00 2001 From: Jenny Date: Thu, 18 Apr 2019 15:52:21 +0200 Subject: [PATCH 4/8] going to try building yum repo in each docker image instead of as a volume --- Makefile | 30 +++++++++++++++---- .../test/java-adapter/Centos7-Dockerfile | 9 ++++++ .../{Dockerfile => YumRepo-Dockerfile} | 0 packaging/test/java-adapter/tempneo4j.repo | 5 ++++ 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 packaging/test/java-adapter/Centos7-Dockerfile rename packaging/test/java-adapter/{Dockerfile => YumRepo-Dockerfile} (100%) create mode 100644 packaging/test/java-adapter/tempneo4j.repo diff --git a/Makefile b/Makefile index d417ac59..e13d5e21 100644 --- a/Makefile +++ b/Makefile @@ -144,22 +144,40 @@ out/rpm/SPECS/neo4j-java-adapter.spec: packaging/rpm-java-adapter/neo4j-java-ada cp $< $@ .PHONY: java-adapter-test -java-adapter-test: tmp/java-adapter-test/Dockerfile java-adapter-test-rpm-artifacts - cd $( tmp/java-adapter-test/volumeid + echo $(YUMREPO_VOLUMEID) > $@ -java-adapter-test-rpm-artifacts: tmp/java-adapter-test/$(java_adapter_file) tmp/java-adapter-test/$(rpmfile) +java-adapter-test-yumrepo-build: tmp/java-adapter-test/yum-repo/volumeid -tmp/java-adapter-test/%.rpm: out/%.rpm +tmp/java-adapter-test/yum-repo/%.rpm: out/%.rpm mkdir -p $(dir $@) cp $< $@ -tmp/java-adapter-test/Dockerfile: packaging/test/java-adapter/Dockerfile +tmp/java-adapter-test/yum-repo/Dockerfile: packaging/test/java-adapter/YumRepo-Dockerfile mkdir -p $(dir $@) CYPHER_SHELL_FILE=$(rpmfile) JAVA_ADAPTER_FILE=$(java_adapter_file) envsubst '$${CYPHER_SHELL_FILE} $${JAVA_ADAPTER_FILE}' < $< > $@ +.PHONY: java-adapter-test-run +java-adapter-test-run: tmp/java-adapter-test/tests/java-11-openjdk \ + tmp/java-adapter-test/tests/java-1.8.0-openjdk-headless \ + tmp/java-adapter-test/tests/java-1.8.0-openjdk + +tmp/java-adapter-test/tests/%: tmp/java-adapter-test/yum-repo/volumeid + mkdir -p $@ + cp packaging/test/java-adapter/tempneo4j.repo $@/tempneo4j.repo + TEST_JAVA=$* envsubst '$${TEST_JAVA}' < packaging/test/java-adapter/Centos7-Dockerfile > $@/Dockerfile + echo $(shell cat $<) + cd $@ && docker build . -t $(DOCKERUUIDRPM) && docker run --volume $(shell cat $<):/repo --rm $(DOCKERUUIDRPM) + # ======================= RPM CYPHER-SHELL ======================= diff --git a/packaging/test/java-adapter/Centos7-Dockerfile b/packaging/test/java-adapter/Centos7-Dockerfile new file mode 100644 index 00000000..5f0c5712 --- /dev/null +++ b/packaging/test/java-adapter/Centos7-Dockerfile @@ -0,0 +1,9 @@ +FROM centos:7 + +VOLUME /repo + +COPY tempneo4j.repo /etc/yum.repos.d/ + +RUN yum --assumeyes install ${TEST_JAVA} cypher-shell + +ENTRYPOINT ["/usr/bin/cypher-shell"] diff --git a/packaging/test/java-adapter/Dockerfile b/packaging/test/java-adapter/YumRepo-Dockerfile similarity index 100% rename from packaging/test/java-adapter/Dockerfile rename to packaging/test/java-adapter/YumRepo-Dockerfile diff --git a/packaging/test/java-adapter/tempneo4j.repo b/packaging/test/java-adapter/tempneo4j.repo new file mode 100644 index 00000000..058884f5 --- /dev/null +++ b/packaging/test/java-adapter/tempneo4j.repo @@ -0,0 +1,5 @@ +[tempneo4j] + name=temp neo4j repo + baseurl=file:///repo + enabled=1 + gpgcheck=0 \ No newline at end of file From 9bc47d9dc3e7d5a130331b762be24ed135c27e9c Mon Sep 17 00:00:00 2001 From: Jenny Date: Tue, 23 Apr 2019 13:08:09 +0200 Subject: [PATCH 5/8] java adapter tests no longer create docker volume for yum repository --- Makefile | 39 +++++-------------- .../rpm-java-adapter/neo4j-java-adapter.spec | 2 +- packaging/rpm/cypher-shell.spec | 2 +- .../test/java-adapter/Centos7-Dockerfile | 9 ----- packaging/test/java-adapter/Dockerfile | 15 +++++++ .../test/java-adapter/YumRepo-Dockerfile | 10 ----- packaging/test/java-adapter/entrypoint.sh | 13 +++++++ packaging/test/java-adapter/tempneo4j.repo | 8 ++-- 8 files changed, 44 insertions(+), 54 deletions(-) delete mode 100644 packaging/test/java-adapter/Centos7-Dockerfile create mode 100644 packaging/test/java-adapter/Dockerfile delete mode 100644 packaging/test/java-adapter/YumRepo-Dockerfile create mode 100755 packaging/test/java-adapter/entrypoint.sh diff --git a/Makefile b/Makefile index e13d5e21..8f7af7cd 100644 --- a/Makefile +++ b/Makefile @@ -144,39 +144,20 @@ out/rpm/SPECS/neo4j-java-adapter.spec: packaging/rpm-java-adapter/neo4j-java-ada cp $< $@ .PHONY: java-adapter-test -java-adapter-test: java-adapter-test-yumrepo-build java-adapter-test-run - -# this target makes a docker volume that contains a yum repository of cyphershell and the java adapter -# saves the volume id into a file so this step isn't run again until there's a make clean. -tmp/java-adapter-test/yum-repo/volumeid: tmp/java-adapter-test/yum-repo/Dockerfile \ - tmp/java-adapter-test/yum-repo/$(java_adapter_file) \ - tmp/java-adapter-test/yum-repo/$(rpmfile) - cd $(@D) && docker build . --rm -t $(YUMREPO_IMAGEID) - docker volume create --name $(YUMREPO_VOLUMEID) - docker run --rm --volume $(YUMREPO_VOLUMEID):/repo $(YUMREPO_IMAGEID) - echo $(YUMREPO_VOLUMEID) > $@ - -java-adapter-test-yumrepo-build: tmp/java-adapter-test/yum-repo/volumeid - -tmp/java-adapter-test/yum-repo/%.rpm: out/%.rpm - mkdir -p $(dir $@) - cp $< $@ - -tmp/java-adapter-test/yum-repo/Dockerfile: packaging/test/java-adapter/YumRepo-Dockerfile - mkdir -p $(dir $@) - CYPHER_SHELL_FILE=$(rpmfile) JAVA_ADAPTER_FILE=$(java_adapter_file) envsubst '$${CYPHER_SHELL_FILE} $${JAVA_ADAPTER_FILE}' < $< > $@ - -.PHONY: java-adapter-test-run -java-adapter-test-run: tmp/java-adapter-test/tests/java-11-openjdk \ +java-adapter-test: tmp/java-adapter-test/tests/java-11-openjdk \ tmp/java-adapter-test/tests/java-1.8.0-openjdk-headless \ tmp/java-adapter-test/tests/java-1.8.0-openjdk -tmp/java-adapter-test/tests/%: tmp/java-adapter-test/yum-repo/volumeid +tmp/java-adapter-test/tests/%: out/$(java_adapter_file) \ + out/$(rpmfile) \ + packaging/test/java-adapter/tempneo4j.repo \ + packaging/test/java-adapter/Dockerfile \ + packaging/test/java-adapter/entrypoint.sh mkdir -p $@ - cp packaging/test/java-adapter/tempneo4j.repo $@/tempneo4j.repo - TEST_JAVA=$* envsubst '$${TEST_JAVA}' < packaging/test/java-adapter/Centos7-Dockerfile > $@/Dockerfile - echo $(shell cat $<) - cd $@ && docker build . -t $(DOCKERUUIDRPM) && docker run --volume $(shell cat $<):/repo --rm $(DOCKERUUIDRPM) + cp $^ $@/ + CYPHER_SHELL_FILE=$(rpmfile) JAVA_ADAPTER_FILE=$(java_adapter_file) TEST_JAVA=$* \ + envsubst '$${CYPHER_SHELL_FILE} $${JAVA_ADAPTER_FILE} $${TEST_JAVA}' < packaging/test/java-adapter/Dockerfile > $@/Dockerfile + cd $@ && docker build . -t $(DOCKERUUIDRPM) && docker run --rm $(DOCKERUUIDRPM) # ======================= RPM CYPHER-SHELL ======================= diff --git a/packaging/rpm-java-adapter/neo4j-java-adapter.spec b/packaging/rpm-java-adapter/neo4j-java-adapter.spec index d62e3e10..b7e52ff9 100644 --- a/packaging/rpm-java-adapter/neo4j-java-adapter.spec +++ b/packaging/rpm-java-adapter/neo4j-java-adapter.spec @@ -4,7 +4,7 @@ Release: 1%{?dist} Summary: Meta package so that Neo4j can be compatible with java 8 and java 11 in both openjdk and oracle License: GPLv3 -Provides: jre = 11, java = 11, neo4j-java +Provides: jre = 11, java = 11, jre-headless = 11 Requires: jre-11 BuildArch: noarch diff --git a/packaging/rpm/cypher-shell.spec b/packaging/rpm/cypher-shell.spec index 21f4383b..e186af6f 100644 --- a/packaging/rpm/cypher-shell.spec +++ b/packaging/rpm/cypher-shell.spec @@ -9,7 +9,7 @@ URL: https://github.com/neo4j/cypher-shell Source0: https://github.com/neo4j/cypher-shell/archive/%{version}.tar.gz #Conflicts: -Requires: which, jre >= 1.8 +Requires: which, jre-headless >= 1.8 BuildArch: noarch Prefix: /usr diff --git a/packaging/test/java-adapter/Centos7-Dockerfile b/packaging/test/java-adapter/Centos7-Dockerfile deleted file mode 100644 index 5f0c5712..00000000 --- a/packaging/test/java-adapter/Centos7-Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM centos:7 - -VOLUME /repo - -COPY tempneo4j.repo /etc/yum.repos.d/ - -RUN yum --assumeyes install ${TEST_JAVA} cypher-shell - -ENTRYPOINT ["/usr/bin/cypher-shell"] diff --git a/packaging/test/java-adapter/Dockerfile b/packaging/test/java-adapter/Dockerfile new file mode 100644 index 00000000..564d392d --- /dev/null +++ b/packaging/test/java-adapter/Dockerfile @@ -0,0 +1,15 @@ +FROM centos:7 + +VOLUME /repo + +COPY ${CYPHER_SHELL_FILE} /repo/ +COPY ${JAVA_ADAPTER_FILE} /repo/ +COPY tempneo4j.repo /tmp/ +COPY entrypoint.sh /tmp/ + +RUN yum --assumeyes install ${TEST_JAVA} createrepo bc && \ + mv /tmp/tempneo4j.repo /etc/yum.repos.d/ + +#ENTRYPOINT [ "ls", "-l", "/repo"] +ENTRYPOINT [ "/tmp/entrypoint.sh", "${TEST_JAVA}" ] +#ENTRYPOINT [ "test $(yum --assumeno install cypher-shell | grep -c ${TEST_JAVA} | bc) == '0'" ] diff --git a/packaging/test/java-adapter/YumRepo-Dockerfile b/packaging/test/java-adapter/YumRepo-Dockerfile deleted file mode 100644 index 2eb19aa6..00000000 --- a/packaging/test/java-adapter/YumRepo-Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM ubuntu:bionic - -# VOLUME /repo - -COPY ${CYPHER_SHELL_FILE} /repo/ -COPY ${JAVA_ADAPTER_FILE} /repo/ - -RUN apt-get update -qq && \ - apt-get -y -qq install createrepo && \ - createrepo /repo \ No newline at end of file diff --git a/packaging/test/java-adapter/entrypoint.sh b/packaging/test/java-adapter/entrypoint.sh new file mode 100755 index 00000000..5f861b51 --- /dev/null +++ b/packaging/test/java-adapter/entrypoint.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +javaTested=$1 +javaRegex="openjdk" +createrepo /repo + +if [ $(yum --assumeno install cypher-shell | grep -c "${javaRegex}" | bc) != "0" ]; then + echo "Attempt to install java dependency "${javaTested} " FAILED. Here is the install output:" + yum --assumeno install cypher-shell + exit 1 +else + exit 0 +fi diff --git a/packaging/test/java-adapter/tempneo4j.repo b/packaging/test/java-adapter/tempneo4j.repo index 058884f5..f9273ec9 100644 --- a/packaging/test/java-adapter/tempneo4j.repo +++ b/packaging/test/java-adapter/tempneo4j.repo @@ -1,5 +1,5 @@ [tempneo4j] - name=temp neo4j repo - baseurl=file:///repo - enabled=1 - gpgcheck=0 \ No newline at end of file +name=temp neo4j repo +baseurl=file:///repo +enabled=1 +gpgcheck=0 \ No newline at end of file From 93d19b04c04826cd36e201439f320cb9f6585ea9 Mon Sep 17 00:00:00 2001 From: Jenny Date: Tue, 23 Apr 2019 17:22:42 +0200 Subject: [PATCH 6/8] added java adaptor for java11 headless --- Makefile | 25 +++++++++++-------- .../neo4j-java-adapter-jre-11-headless.spec | 18 +++++++++++++ ...er.spec => neo4j-java-adapter-jre-11.spec} | 2 +- packaging/test/java-adapter/Dockerfile | 5 ++-- packaging/test/java-adapter/entrypoint.sh | 1 + 5 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 packaging/rpm-java-adapter/neo4j-java-adapter-jre-11-headless.spec rename packaging/rpm-java-adapter/{neo4j-java-adapter.spec => neo4j-java-adapter-jre-11.spec} (91%) diff --git a/Makefile b/Makefile index 8f7af7cd..ecb7384a 100644 --- a/Makefile +++ b/Makefile @@ -23,18 +23,21 @@ else endif rpmversion := $(versionnumber)-$(release) +java_adapter_version:=1.0.0-1 GRADLE = ./gradlew -PbuildVersion=$(buildversion) jarfile := cypher-shell.jar rpmfile := cypher-shell-$(rpmversion).noarch.rpm debfile := cypher-shell_$(debversion)_all.deb -java_adapter_file := neo4j-java-adapter-1.0.0-1.noarch.rpm +java_adapter_files := neo4j-java-adapter-jre-11-$(java_adapter_version).noarch.rpm \ + neo4j-java-adapter-jre-11-headless-$(java_adapter_version).noarch.rpm outputs := cypher-shell cypher-shell.bat $(jarfile) artifacts:=$(patsubst %,cypher-shell/build/install/cypher-shell/%,${outputs}) rpm_artifacts:=$(patsubst %,out/rpm/BUILD/%,${artifacts}) deb_artifacts:=$(patsubst %,out/debian/cypher-shell-$(debversion)/%,${artifacts}) +java_adapter_artifacts:=$(patsubst %, out/%, ${java_adapter_files}) deb_files:=$(wildcard packaging/debian/*) deb_targets:=$(patsubst packaging/debian/%,out/debian/cypher-shell-$(debversion)/debian/%,${deb_files}) @@ -130,33 +133,33 @@ out/cypher-shell.zip: tmp/cypher-shell.zip # ======================= RPM JAVA-ADAPTER ======================= .PHONY: java-adapter -java-adapter: out/$(java_adapter_file) ## Build the RPM package +java-adapter: $(java_adapter_artifacts) ## Build the RPM package -out/$(java_adapter_file): out/rpm/RPMS/noarch/$(java_adapter_file) +out/neo4j-java-adapter-%.rpm: out/rpm/RPMS/noarch/neo4j-java-adapter-%.rpm mkdir -p $(dir $@) cp $< $@ -out/rpm/RPMS/noarch/$(java_adapter_file): out/rpm/SPECS/neo4j-java-adapter.spec +out/rpm/RPMS/noarch/neo4j-java-adapter-%-$(java_adapter_version).noarch.rpm: out/rpm/SPECS/neo4j-java-adapter-%.spec rpmbuild --define "_topdir $(CURDIR)/out/rpm" -bb --clean $< -out/rpm/SPECS/neo4j-java-adapter.spec: packaging/rpm-java-adapter/neo4j-java-adapter.spec +out/rpm/SPECS/neo4j-java-adapter-%.spec: packaging/rpm-java-adapter/neo4j-java-adapter-%.spec mkdir -p $(dir $@) cp $< $@ .PHONY: java-adapter-test -java-adapter-test: tmp/java-adapter-test/tests/java-11-openjdk \ - tmp/java-adapter-test/tests/java-1.8.0-openjdk-headless \ - tmp/java-adapter-test/tests/java-1.8.0-openjdk +java-adapter-test: tmp/java-adapter-test/tests/java-11-openjdk \ + tmp/java-adapter-test/tests/java-11-openjdk-headless \ + tmp/java-adapter-test/tests/java-1.8.0-openjdk \ + tmp/java-adapter-test/tests/java-1.8.0-openjdk-headless -tmp/java-adapter-test/tests/%: out/$(java_adapter_file) \ +tmp/java-adapter-test/tests/%: $(java_adapter_artifacts) \ out/$(rpmfile) \ packaging/test/java-adapter/tempneo4j.repo \ packaging/test/java-adapter/Dockerfile \ packaging/test/java-adapter/entrypoint.sh mkdir -p $@ cp $^ $@/ - CYPHER_SHELL_FILE=$(rpmfile) JAVA_ADAPTER_FILE=$(java_adapter_file) TEST_JAVA=$* \ - envsubst '$${CYPHER_SHELL_FILE} $${JAVA_ADAPTER_FILE} $${TEST_JAVA}' < packaging/test/java-adapter/Dockerfile > $@/Dockerfile + TEST_JAVA=$* envsubst '$${TEST_JAVA}' < packaging/test/java-adapter/Dockerfile > $@/Dockerfile cd $@ && docker build . -t $(DOCKERUUIDRPM) && docker run --rm $(DOCKERUUIDRPM) diff --git a/packaging/rpm-java-adapter/neo4j-java-adapter-jre-11-headless.spec b/packaging/rpm-java-adapter/neo4j-java-adapter-jre-11-headless.spec new file mode 100644 index 00000000..df11656e --- /dev/null +++ b/packaging/rpm-java-adapter/neo4j-java-adapter-jre-11-headless.spec @@ -0,0 +1,18 @@ +Name: neo4j-java-adapter-jre-11-headless +Version: 1.0.0 +Release: 1%{?dist} +Summary: Meta package so that Neo4j can be compatible with java 8 and java 11 in both openjdk and oracle +License: GPLv3 + +Provides: jre-headless = 11 +Requires: jre-11-headless +BuildArch: noarch + +%description +Meta package so that Neo4j can be compatible with java 8 and java 11 in both OpenJDK and Oracle. +Contains no source. + +%prep +%build +%install +%files \ No newline at end of file diff --git a/packaging/rpm-java-adapter/neo4j-java-adapter.spec b/packaging/rpm-java-adapter/neo4j-java-adapter-jre-11.spec similarity index 91% rename from packaging/rpm-java-adapter/neo4j-java-adapter.spec rename to packaging/rpm-java-adapter/neo4j-java-adapter-jre-11.spec index b7e52ff9..64840e65 100644 --- a/packaging/rpm-java-adapter/neo4j-java-adapter.spec +++ b/packaging/rpm-java-adapter/neo4j-java-adapter-jre-11.spec @@ -1,4 +1,4 @@ -Name: neo4j-java-adapter +Name: neo4j-java-adapter-jre-11 Version: 1.0.0 Release: 1%{?dist} Summary: Meta package so that Neo4j can be compatible with java 8 and java 11 in both openjdk and oracle diff --git a/packaging/test/java-adapter/Dockerfile b/packaging/test/java-adapter/Dockerfile index 564d392d..590f2f37 100644 --- a/packaging/test/java-adapter/Dockerfile +++ b/packaging/test/java-adapter/Dockerfile @@ -2,8 +2,9 @@ FROM centos:7 VOLUME /repo -COPY ${CYPHER_SHELL_FILE} /repo/ -COPY ${JAVA_ADAPTER_FILE} /repo/ +#COPY ${CYPHER_SHELL_FILE} /repo/ +#COPY ${JAVA_ADAPTER_FILE} /repo/ +COPY *.rpm /repo/ COPY tempneo4j.repo /tmp/ COPY entrypoint.sh /tmp/ diff --git a/packaging/test/java-adapter/entrypoint.sh b/packaging/test/java-adapter/entrypoint.sh index 5f861b51..2cfe94c5 100755 --- a/packaging/test/java-adapter/entrypoint.sh +++ b/packaging/test/java-adapter/entrypoint.sh @@ -9,5 +9,6 @@ if [ $(yum --assumeno install cypher-shell | grep -c "${javaRegex}" | bc) != "0" yum --assumeno install cypher-shell exit 1 else + echo "cypher-shell did not appear to download another java as a dependency when ${javaTested} is pre-installed. Success!" exit 0 fi From e719764b62ed41d624b91de7c12fb184373614d4 Mon Sep 17 00:00:00 2001 From: Jenny Date: Wed, 24 Apr 2019 10:10:24 +0200 Subject: [PATCH 7/8] minor fix to the read me --- Makefile | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index ecb7384a..6b0246b1 100644 --- a/Makefile +++ b/Makefile @@ -133,7 +133,7 @@ out/cypher-shell.zip: tmp/cypher-shell.zip # ======================= RPM JAVA-ADAPTER ======================= .PHONY: java-adapter -java-adapter: $(java_adapter_artifacts) ## Build the RPM package +java-adapter: $(java_adapter_artifacts) ## Build the java adapter package for java 11 compatibility out/neo4j-java-adapter-%.rpm: out/rpm/RPMS/noarch/neo4j-java-adapter-%.rpm mkdir -p $(dir $@) diff --git a/README.md b/README.md index db9c08e2..d71b3133 100644 --- a/README.md +++ b/README.md @@ -34,13 +34,13 @@ available in your local package manager. Then just do ``` -make debian rpm8 rpm11 +make debian rpm ``` To test the packages you need to have Docker installed: ``` -make debian-test rpm8-test rpm11-test +make debian-test rpm-test ``` To get the versions correct when building packages you can override From f43640086dc67fed825990703de51da6e3f17c8d Mon Sep 17 00:00:00 2001 From: Jenny Date: Wed, 24 Apr 2019 11:26:00 +0200 Subject: [PATCH 8/8] cleaned up some comments --- Makefile | 8 +++++++- packaging/test/java-adapter/Dockerfile | 4 ---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 6b0246b1..47082e1a 100644 --- a/Makefile +++ b/Makefile @@ -131,9 +131,15 @@ out/cypher-shell.zip: tmp/cypher-shell.zip cp $< $@ # ======================= RPM JAVA-ADAPTER ======================= +## Build the java adapter package for java 11 compatibility +## oracle and openjdk java 11 don't provide the same java package names any more, +## and rpm might not be advanced enough to support boolean dependencies. +## To fix that, we have a few empty java packages that provide various standard java package names. +## This page is helpful for understanding this make code: +## https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html .PHONY: java-adapter -java-adapter: $(java_adapter_artifacts) ## Build the java adapter package for java 11 compatibility +java-adapter: $(java_adapter_artifacts) out/neo4j-java-adapter-%.rpm: out/rpm/RPMS/noarch/neo4j-java-adapter-%.rpm mkdir -p $(dir $@) diff --git a/packaging/test/java-adapter/Dockerfile b/packaging/test/java-adapter/Dockerfile index 590f2f37..187e449b 100644 --- a/packaging/test/java-adapter/Dockerfile +++ b/packaging/test/java-adapter/Dockerfile @@ -2,8 +2,6 @@ FROM centos:7 VOLUME /repo -#COPY ${CYPHER_SHELL_FILE} /repo/ -#COPY ${JAVA_ADAPTER_FILE} /repo/ COPY *.rpm /repo/ COPY tempneo4j.repo /tmp/ COPY entrypoint.sh /tmp/ @@ -11,6 +9,4 @@ COPY entrypoint.sh /tmp/ RUN yum --assumeyes install ${TEST_JAVA} createrepo bc && \ mv /tmp/tempneo4j.repo /etc/yum.repos.d/ -#ENTRYPOINT [ "ls", "-l", "/repo"] ENTRYPOINT [ "/tmp/entrypoint.sh", "${TEST_JAVA}" ] -#ENTRYPOINT [ "test $(yum --assumeno install cypher-shell | grep -c ${TEST_JAVA} | bc) == '0'" ]