From 89a2cb863d1d52348192f4037d19c0b3826bbb4f Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Tue, 16 Mar 2021 01:06:51 +0900 Subject: [PATCH 1/9] Improve Dockerfile per os to support jdk argument --- docker/centos7/Dockerfile | 28 ++++++++++++++++++++++++++-- docker/centos8/Dockerfile | 27 +++++++++++++++++++++++++-- docker/debian9/Dockerfile | 19 +++++++++++++++++-- docker/ubuntu18/Dockerfile | 5 +++-- docker/ubuntu20-clang/Dockerfile | 5 +++-- docker/ubuntu20/Dockerfile | 5 +++-- 6 files changed, 77 insertions(+), 12 deletions(-) diff --git a/docker/centos7/Dockerfile b/docker/centos7/Dockerfile index 82c9cbe0a3..54acf82dc8 100644 --- a/docker/centos7/Dockerfile +++ b/docker/centos7/Dockerfile @@ -19,10 +19,32 @@ FROM centos:7 LABEL maintainer="Apache ORC project " +ARG jdk=8 RUN yum check-update || true RUN yum -y install epel-release -RUN yum install -y \ +RUN if [ "${jdk}" = 11 ] ; then \ + yum install -y \ + cmake3 \ + curl-devel \ + cyrus-sasl-devel \ + expat-devel \ + gcc \ + gcc-c++ \ + gettext-devel \ + git \ + java-11-openjdk \ + java-11-openjdk-devel \ + libtool \ + make \ + maven \ + openssl-devel \ + tar \ + wget \ + which \ + zlib-devel \ + ; else \ + yum install -y \ cmake3 \ curl-devel \ cyrus-sasl-devel \ @@ -40,7 +62,9 @@ RUN yum install -y \ tar \ wget \ which \ - zlib-devel + zlib-devel \ + ; fi + # Our scripts assume that cmake is called 'cmake' RUN ln -s /usr/bin/cmake3 /usr/bin/cmake diff --git a/docker/centos8/Dockerfile b/docker/centos8/Dockerfile index 3736b316e8..cb78c5d08c 100644 --- a/docker/centos8/Dockerfile +++ b/docker/centos8/Dockerfile @@ -19,9 +19,31 @@ FROM centos:8 LABEL maintainer="Apache ORC project " +ARG jdk=8 RUN yum check-update || true -RUN yum install -y \ +RUN if [ "${jdk}" = 11 ] ; then \ + yum install -y \ + cmake \ + curl-devel \ + cyrus-sasl-devel \ + expat-devel \ + gcc \ + gcc-c++ \ + gettext-devel \ + git \ + java-11-openjdk \ + java-11-openjdk-devel \ + libtool \ + make \ + maven \ + openssl-devel \ + tar \ + wget \ + which \ + zlib-devel \ + ; else \ + yum install -y \ cmake \ curl-devel \ cyrus-sasl-devel \ @@ -39,7 +61,8 @@ RUN yum install -y \ tar \ wget \ which \ - zlib-devel + zlib-devel \ + ; fi ENV TZ=America/Los_Angeles WORKDIR /root diff --git a/docker/debian9/Dockerfile b/docker/debian9/Dockerfile index 8377a63732..3502c949a5 100644 --- a/docker/debian9/Dockerfile +++ b/docker/debian9/Dockerfile @@ -19,9 +19,23 @@ FROM debian:9 LABEL maintainer="Apache ORC project " +ARG jdk=8 RUN apt-get update -RUN apt-get install -y \ +RUN if [ "${jdk}" = 11 ] ; then \ + apt-get install -y \ + cmake \ + gcc \ + g++ \ + git \ + libsasl2-dev \ + libssl-dev \ + openjdk-11-jdk \ + make \ + curl \ + maven \ + ; else \ + apt-get install -y \ cmake \ gcc \ g++ \ @@ -31,7 +45,8 @@ RUN apt-get install -y \ openjdk-8-jdk \ make \ curl \ - maven + maven \ + ; fi WORKDIR /root diff --git a/docker/ubuntu18/Dockerfile b/docker/ubuntu18/Dockerfile index ea1b945800..2996756906 100644 --- a/docker/ubuntu18/Dockerfile +++ b/docker/ubuntu18/Dockerfile @@ -19,6 +19,7 @@ FROM ubuntu:18.04 LABEL maintainer="Apache ORC project " +ARG jdk=8 RUN ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime RUN apt-get update @@ -32,9 +33,9 @@ RUN apt-get install -y \ make \ curl \ maven \ - openjdk-8-jdk \ + openjdk-${jdk}-jdk \ tzdata -RUN update-java-alternatives --set java-1.8.0-openjdk-amd64 +RUN update-java-alternatives --set java-1.${jdk}.0-openjdk-amd64 WORKDIR /root VOLUME /root/.m2/repository diff --git a/docker/ubuntu20-clang/Dockerfile b/docker/ubuntu20-clang/Dockerfile index 869c1e8175..fff05378e8 100644 --- a/docker/ubuntu20-clang/Dockerfile +++ b/docker/ubuntu20-clang/Dockerfile @@ -19,6 +19,7 @@ FROM ubuntu:20.04 LABEL maintainer="Apache ORC project " +ARG jdk=8 RUN ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime RUN apt-get update @@ -31,9 +32,9 @@ RUN apt-get install -y \ make \ curl \ maven \ - openjdk-8-jdk \ + openjdk-${jdk}-jdk \ tzdata -RUN update-java-alternatives --set java-1.8.0-openjdk-amd64 +RUN update-java-alternatives --set java-1.${jdk}.0-openjdk-amd64 ENV CC=clang ENV CXX=clang++ diff --git a/docker/ubuntu20/Dockerfile b/docker/ubuntu20/Dockerfile index 316ec3f348..9862b04a10 100644 --- a/docker/ubuntu20/Dockerfile +++ b/docker/ubuntu20/Dockerfile @@ -19,6 +19,7 @@ FROM ubuntu:20.04 LABEL maintainer="Apache ORC project " +ARG jdk=8 RUN ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime RUN apt-get update @@ -32,9 +33,9 @@ RUN apt-get install -y \ make \ curl \ maven \ - openjdk-8-jdk \ + openjdk-${jdk}-jdk \ tzdata -RUN update-java-alternatives --set java-1.8.0-openjdk-amd64 +RUN update-java-alternatives --set java-1.${jdk}.0-openjdk-amd64 WORKDIR /root VOLUME /root/.m2/repository From e9d4f5bf37b6ab7540613609840913e2edcdbe67 Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Tue, 16 Mar 2021 01:16:18 +0900 Subject: [PATCH 2/9] Update shell scripts to support docker images for JDK 11 --- docker/reinit.sh | 8 +++++--- docker/run-all.sh | 8 +++++--- docker/run-one.sh | 9 ++++++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/docker/reinit.sh b/docker/reinit.sh index 24e697c856..52457564a5 100755 --- a/docker/reinit.sh +++ b/docker/reinit.sh @@ -16,9 +16,11 @@ # limitations under the License. start=`date` -for os in `cat os-list.txt`; do - echo "Re-initialize $os" - ( cd $os && docker build --no-cache -t "orc-$os" . ) +for jdk in 8 11; do + for os in `cat os-list.txt`; do + echo "Re-initialize $os" + ( cd $os && docker build --no-cache -t "orc-${os}-jdk${jdk}" --build-arg jdk=${jdk} . ) + done done echo "Start: $start" echo "End:" `date` diff --git a/docker/run-all.sh b/docker/run-all.sh index 81876f41be..d5d6e3aa0e 100755 --- a/docker/run-all.sh +++ b/docker/run-all.sh @@ -32,9 +32,11 @@ function failure { rm -f logs/pids.txt logs/*.log start=`date` -for os in `cat os-list.txt`; do - echo "Building $os" - ( cd $os && docker build -t "orc-$os" . ) > logs/$os-build.log 2>&1 || exit 1 +for jdk in 8 11; do + for os in `cat os-list.txt`; do + echo "Building $os" + ( cd $os && docker build -t "orc-$os-jdk${jdk}" --build-arg jdk=$jdk . ) > logs/${os}-jdk${jdk}-build.log 2>&1 || exit 1 + done done testStart=`date` diff --git a/docker/run-one.sh b/docker/run-one.sh index da29dc6539..3f1805f69a 100755 --- a/docker/run-one.sh +++ b/docker/run-one.sh @@ -44,8 +44,11 @@ else OPTS="" ;; esac - docker run $VOLUME "orc-$OS" /bin/bash -c \ - "$CLONE && $MAKEDIR && cmake $OPTS .. && make package test-out" \ - || failure + + for jdk in 8 11; do + docker run $VOLUME "orc-$OS-jdk${jdk}" /bin/bash -c \ + "$CLONE && $MAKEDIR && cmake $OPTS .. && make package test-out" \ + || failure + done fi echo "Finished $OS at $(date)" From a85bd6292fd86e8ada8b49adf8f29adb3d97faa7 Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Tue, 16 Mar 2021 01:35:31 +0900 Subject: [PATCH 3/9] Update README.md for docker --- docker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/README.md b/docker/README.md index 3ba46fdfb6..fdfaa818ae 100644 --- a/docker/README.md +++ b/docker/README.md @@ -21,7 +21,7 @@ The scripts are: A base image for each OS is built using: cd docker/$os - docker build -t orc-$os . + docker build -t "orc-$os-jdk8" --build-arg jdk=8 . OR docker build -t "orc-$os-jdk11" --build-arg jdk=11 . ## Clean up From 3475e652df106375ab97586e0a78b8dc48c38b87 Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Tue, 16 Mar 2021 13:31:12 +0900 Subject: [PATCH 4/9] fixup! Improve Dockerfile per os to support jdk argument --- docker/debian9/Dockerfile | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/docker/debian9/Dockerfile b/docker/debian9/Dockerfile index 3502c949a5..8377a63732 100644 --- a/docker/debian9/Dockerfile +++ b/docker/debian9/Dockerfile @@ -19,23 +19,9 @@ FROM debian:9 LABEL maintainer="Apache ORC project " -ARG jdk=8 RUN apt-get update -RUN if [ "${jdk}" = 11 ] ; then \ - apt-get install -y \ - cmake \ - gcc \ - g++ \ - git \ - libsasl2-dev \ - libssl-dev \ - openjdk-11-jdk \ - make \ - curl \ - maven \ - ; else \ - apt-get install -y \ +RUN apt-get install -y \ cmake \ gcc \ g++ \ @@ -45,8 +31,7 @@ RUN if [ "${jdk}" = 11 ] ; then \ openjdk-8-jdk \ make \ curl \ - maven \ - ; fi + maven WORKDIR /root From 28dbb4dcf6841edcdeeec7948b0d7d826f5ae1cc Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Wed, 17 Mar 2021 17:52:09 +0900 Subject: [PATCH 5/9] Improve Dockerfile for centos7/centos8 --- docker/centos7/Dockerfile | 36 ++++++++++++------------------------ docker/centos8/Dockerfile | 36 ++++++++++++------------------------ 2 files changed, 24 insertions(+), 48 deletions(-) diff --git a/docker/centos7/Dockerfile b/docker/centos7/Dockerfile index 54acf82dc8..f9267d191b 100644 --- a/docker/centos7/Dockerfile +++ b/docker/centos7/Dockerfile @@ -23,8 +23,7 @@ ARG jdk=8 RUN yum check-update || true RUN yum -y install epel-release -RUN if [ "${jdk}" = 11 ] ; then \ - yum install -y \ +RUN yum install -y \ cmake3 \ curl-devel \ cyrus-sasl-devel \ @@ -33,8 +32,6 @@ RUN if [ "${jdk}" = 11 ] ; then \ gcc-c++ \ gettext-devel \ git \ - java-11-openjdk \ - java-11-openjdk-devel \ libtool \ make \ maven \ @@ -42,27 +39,18 @@ RUN if [ "${jdk}" = 11 ] ; then \ tar \ wget \ which \ - zlib-devel \ + zlib-devel && \ + if [ "${jdk}" = "11" ] ; then \ + yum install -y \ + java-11-openjdk \ + java-11-openjdk-devel \ + && \ + update-alternatives --set java $(readlink -f /usr/lib/jvm/java-11-openjdk/bin/java) && \ + update-alternatives --set javac $(readlink -f /usr/lib/jvm/java-11-openjdk/bin/javac) \ ; else \ - yum install -y \ - cmake3 \ - curl-devel \ - cyrus-sasl-devel \ - expat-devel \ - gcc \ - gcc-c++ \ - gettext-devel \ - git \ - java-1.8.0-openjdk \ - java-1.8.0-openjdk-devel \ - libtool \ - make \ - maven \ - openssl-devel \ - tar \ - wget \ - which \ - zlib-devel \ + yum install -y \ + java-1.8.0-openjdk \ + java-1.8.0-openjdk-devel \ ; fi # Our scripts assume that cmake is called 'cmake' diff --git a/docker/centos8/Dockerfile b/docker/centos8/Dockerfile index cb78c5d08c..14ddc704ec 100644 --- a/docker/centos8/Dockerfile +++ b/docker/centos8/Dockerfile @@ -22,8 +22,7 @@ LABEL maintainer="Apache ORC project " ARG jdk=8 RUN yum check-update || true -RUN if [ "${jdk}" = 11 ] ; then \ - yum install -y \ +RUN yum install -y \ cmake \ curl-devel \ cyrus-sasl-devel \ @@ -32,8 +31,6 @@ RUN if [ "${jdk}" = 11 ] ; then \ gcc-c++ \ gettext-devel \ git \ - java-11-openjdk \ - java-11-openjdk-devel \ libtool \ make \ maven \ @@ -41,27 +38,18 @@ RUN if [ "${jdk}" = 11 ] ; then \ tar \ wget \ which \ - zlib-devel \ + zlib-devel && \ + if [ "${jdk}" = "11" ] ; then \ + yum install -y \ + java-11-openjdk \ + java-11-openjdk-devel \ + && \ + update-alternatives --set java $(readlink -f /usr/lib/jvm/java-11-openjdk/bin/java) && \ + update-alternatives --set javac $(readlink -f /usr/lib/jvm/java-11-openjdk/bin/javac) \ ; else \ - yum install -y \ - cmake \ - curl-devel \ - cyrus-sasl-devel \ - expat-devel \ - gcc \ - gcc-c++ \ - gettext-devel \ - git \ - java-1.8.0-openjdk \ - java-1.8.0-openjdk-devel \ - libtool \ - make \ - maven \ - openssl-devel \ - tar \ - wget \ - which \ - zlib-devel \ + yum install -y \ + java-1.8.0-openjdk \ + java-1.8.0-openjdk-devel \ ; fi ENV TZ=America/Los_Angeles From e08d96eb24afa0afe44a06a66a9fd212f2f392da Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Thu, 18 Mar 2021 08:27:51 +0900 Subject: [PATCH 6/9] Improve message in run-all.sh --- docker/run-all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/run-all.sh b/docker/run-all.sh index d5d6e3aa0e..4a6c5f58cf 100755 --- a/docker/run-all.sh +++ b/docker/run-all.sh @@ -34,7 +34,7 @@ rm -f logs/pids.txt logs/*.log start=`date` for jdk in 8 11; do for os in `cat os-list.txt`; do - echo "Building $os" + echo "Building $os for $jdk" ( cd $os && docker build -t "orc-$os-jdk${jdk}" --build-arg jdk=$jdk . ) > logs/${os}-jdk${jdk}-build.log 2>&1 || exit 1 done done From f7329c00a589e3e33ba288e350d612ee49561f96 Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Thu, 18 Mar 2021 08:28:15 +0900 Subject: [PATCH 7/9] Update README --- docker/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/README.md b/docker/README.md index fdfaa818ae..1ae21afccf 100644 --- a/docker/README.md +++ b/docker/README.md @@ -21,7 +21,8 @@ The scripts are: A base image for each OS is built using: cd docker/$os - docker build -t "orc-$os-jdk8" --build-arg jdk=8 . OR docker build -t "orc-$os-jdk11" --build-arg jdk=11 . + FOR jdk8: docker build -t "orc-$os-jdk8" --build-arg jdk=8 . + FOR jdk11: docker build -t "orc-$os-jdk11" --build-arg jdk=11 . ## Clean up From 27a8570845f90ad51ddaae59285b98eab9ab1247 Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Thu, 18 Mar 2021 11:01:37 +0900 Subject: [PATCH 8/9] Skip the building operations with specific combinations --- docker/README.md | 4 ++++ docker/reinit.sh | 6 +++++- docker/run-all.sh | 4 ++++ docker/run-one.sh | 3 +++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docker/README.md b/docker/README.md index 1ae21afccf..df09cf41f3 100644 --- a/docker/README.md +++ b/docker/README.md @@ -24,6 +24,10 @@ A base image for each OS is built using: FOR jdk8: docker build -t "orc-$os-jdk8" --build-arg jdk=8 . FOR jdk11: docker build -t "orc-$os-jdk11" --build-arg jdk=11 . +## JDK 11 support + +For debian9 & ubuntu16: JDK 11 support isn't provided. + ## Clean up docker container prune diff --git a/docker/reinit.sh b/docker/reinit.sh index 52457564a5..e3a36bafd7 100755 --- a/docker/reinit.sh +++ b/docker/reinit.sh @@ -18,7 +18,11 @@ start=`date` for jdk in 8 11; do for os in `cat os-list.txt`; do - echo "Re-initialize $os" + if [[ "$os" = "debian10" && "$jdk" = "8" ]] || [[ "$os" = "debian9" && "$jdk" = "11" ]] || [[ "$os" = "ubuntu16" && "$jdk" = "11" ]]; then + echo "Skip an initialize $os with $jdk" + continue + fi + echo "Re-initialize $os with $jdk" ( cd $os && docker build --no-cache -t "orc-${os}-jdk${jdk}" --build-arg jdk=${jdk} . ) done done diff --git a/docker/run-all.sh b/docker/run-all.sh index 4a6c5f58cf..6979e1de8a 100755 --- a/docker/run-all.sh +++ b/docker/run-all.sh @@ -34,6 +34,10 @@ rm -f logs/pids.txt logs/*.log start=`date` for jdk in 8 11; do for os in `cat os-list.txt`; do + if [[ "$os" = "debian10" && "$jdk" = "8" ]] || [[ "$os" = "debian9" && "$jdk" = "11" ]] || [[ "$os" = "ubuntu16" && "$jdk" = "11" ]]; then + echo "Skip building $os with $jdk" + continue + fi echo "Building $os for $jdk" ( cd $os && docker build -t "orc-$os-jdk${jdk}" --build-arg jdk=$jdk . ) > logs/${os}-jdk${jdk}-build.log 2>&1 || exit 1 done diff --git a/docker/run-one.sh b/docker/run-one.sh index 3f1805f69a..9c049e44cc 100755 --- a/docker/run-one.sh +++ b/docker/run-one.sh @@ -46,6 +46,9 @@ else esac for jdk in 8 11; do + if [[ "$OS" = "debian10" && "$jdk" = "8" ]] || [[ "$OS" = "debian9" && "$jdk" = "11" ]] || [[ "$OS" = "ubuntu16" && "$jdk" = "11" ]]; then + continue + fi docker run $VOLUME "orc-$OS-jdk${jdk}" /bin/bash -c \ "$CLONE && $MAKEDIR && cmake $OPTS .. && make package test-out" \ || failure From 415a3bd180ec9af1efeb54107461698151597ea2 Mon Sep 17 00:00:00 2001 From: Yukihiro Okada Date: Thu, 18 Mar 2021 11:05:59 +0900 Subject: [PATCH 9/9] Update README.md --- docker/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/README.md b/docker/README.md index df09cf41f3..bb4ea03f5b 100644 --- a/docker/README.md +++ b/docker/README.md @@ -18,6 +18,8 @@ The scripts are: * `run-one.sh` *owner* *branch* *os* - test the owner's branch on one OS * `reinit.sh` - rebuild all of the base images without the image cache +`run-all.sh`, `run-one.sh` and `reinit.sh` tests both on jdk8 and 11 across OSes + A base image for each OS is built using: cd docker/$os