From 6a2d129cdd485fd511b897674a6992c5d4f58649 Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 20 Sep 2022 14:08:13 +0800 Subject: [PATCH 1/8] detect arch for Golang installation Signed-off-by: tison --- tests/docker-images/latest-version-image/Dockerfile | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/docker-images/latest-version-image/Dockerfile b/tests/docker-images/latest-version-image/Dockerfile index f153a2723ad34..64ca72b6f0595 100644 --- a/tests/docker-images/latest-version-image/Dockerfile +++ b/tests/docker-images/latest-version-image/Dockerfile @@ -29,13 +29,7 @@ RUN apt-get install -y procps curl git build-essential ENV GOLANG_VERSION 1.15.8 -RUN curl -sSL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz \ - | tar -C /usr/local -xz - -# RUN wget https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz && tar -xvf go1.13.3.linux-amd64.tar.gz && mv go /usr/local -# RUN export GOROOT=/usr/local/go && export GOPATH=$HOME/go && export PATH=$GOPATH/bin:$GOROOT/bin:$PATH -# RUN echo "export GOROOT=/usr/local/go" >> ~/.profile && echo "export GOPATH=$HOME/go" >> ~/.profile && echo "export PATH=$GOPATH/bin:$GOROOT/bin:$PATH" >> ~/.profile - +RUN curl -sSL https://golang.org/dl/go$GOLANG_VERSION.linux-$(uname -m).tar.gz | tar -C /usr/local -xz ENV PATH /usr/local/go/bin:$PATH RUN mkdir -p /go/src /go/bin && chmod -R 777 /go From e0d465aba48d8a9438831fd4093ee127818df4a5 Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 20 Sep 2022 14:15:11 +0800 Subject: [PATCH 2/8] detect arch for JDK installation Signed-off-by: tison --- docker/pulsar/Dockerfile | 6 +++--- tests/docker-images/java-test-image/Dockerfile | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/pulsar/Dockerfile b/docker/pulsar/Dockerfile index 0089fe56acc44..8bfc1034e4809 100644 --- a/docker/pulsar/Dockerfile +++ b/docker/pulsar/Dockerfile @@ -69,7 +69,8 @@ RUN mkdir -p /etc/apt/keyrings \ && echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list \ && apt-get update \ && apt-get -y dist-upgrade \ - && apt-get -y install temurin-17-jdk + && apt-get -y install temurin-17-jdk \ + && export JAVA_HOME="/usr/lib/jvm/temurin-17-jdk-$(uname -m)" # Cleanup apt RUN apt-get -y --purge autoremove \ @@ -87,8 +88,7 @@ RUN pip3 install pyyaml==5.4.1 # 4. /pulsar - hadoop writes to this directory RUN mkdir /pulsar && chmod g+w /pulsar -ENV JAVA_HOME /usr/lib/jvm/temurin-17-jdk-amd64 -RUN echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-amd64/conf/security/java.security +RUN echo networkaddress.cache.ttl=1 >> ${JAVA_HOME}/conf/security/java.security ADD target/python-client/ /pulsar/pulsar-client ENV PULSAR_ROOT_LOGGER=INFO,CONSOLE diff --git a/tests/docker-images/java-test-image/Dockerfile b/tests/docker-images/java-test-image/Dockerfile index 8abae296f53de..8f02381af43af 100644 --- a/tests/docker-images/java-test-image/Dockerfile +++ b/tests/docker-images/java-test-image/Dockerfile @@ -46,10 +46,10 @@ RUN mkdir -p /etc/apt/keyrings \ && echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list \ && apt-get update \ && apt-get -y dist-upgrade \ - && apt-get -y install temurin-17-jdk + && apt-get -y install temurin-17-jdk \ + && export JAVA_HOME="/usr/lib/jvm/temurin-17-jdk-$(uname -m)" -ENV JAVA_HOME /usr/lib/jvm/temurin-17-jdk-amd64 -RUN echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-amd64/conf/security/java.security +RUN echo networkaddress.cache.ttl=1 >> ${JAVA_HOME}/conf/security/java.security # /pulsar/bin/watch-znode.py requires python3-kazoo # /pulsar/bin/pulsar-managed-ledger-admin requires python3-protobuf From b2d56057c47466df81f1bc9012ad7448d1f940eb Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 20 Sep 2022 15:52:51 +0800 Subject: [PATCH 3/8] fix python client build on ARM64 Signed-off-by: tison --- docker/pulsar/pom.xml | 3 ++- docker/pulsar/scripts/install-pulsar-client.sh | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docker/pulsar/pom.xml b/docker/pulsar/pom.xml index e24ec7b8ac082..a458cea39763a 100644 --- a/docker/pulsar/pom.xml +++ b/docker/pulsar/pom.xml @@ -31,6 +31,7 @@ pom + x86_64 false false @@ -79,7 +80,7 @@ ${project.basedir}/../../pulsar-client-cpp/docker/build-wheels.sh - 3.8 cp38-cp38 manylinux2014 x86_64 + 3.8 cp38-cp38 manylinux2014 ${pythonClientBuildArch} diff --git a/docker/pulsar/scripts/install-pulsar-client.sh b/docker/pulsar/scripts/install-pulsar-client.sh index 56702b10db3d8..a58d068b90416 100755 --- a/docker/pulsar/scripts/install-pulsar-client.sh +++ b/docker/pulsar/scripts/install-pulsar-client.sh @@ -23,3 +23,7 @@ set -x PYTHON_MAJOR_MINOR=$(python3 -V | sed -E 's/.* ([[:digit:]]+)\.([[:digit:]]+).*/\1\2/') WHEEL_FILE=$(ls /pulsar/pulsar-client | grep "cp${PYTHON_MAJOR_MINOR}") pip3 install /pulsar/pulsar-client/${WHEEL_FILE}[all] + +# TODO: remove these lines once grpcio doesn't need to compile from source on ARM64 platform +apt update +apt -y install build-essential python3-dev From 9fe71d92d37e6785b84f3c730e10c2b16ea58921 Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 20 Sep 2022 16:08:37 +0800 Subject: [PATCH 4/8] fix java_home path Signed-off-by: tison --- docker/pulsar/Dockerfile | 13 ++++--------- tests/docker-images/java-test-image/Dockerfile | 4 +--- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/docker/pulsar/Dockerfile b/docker/pulsar/Dockerfile index 8bfc1034e4809..6ed6de38ffc77 100644 --- a/docker/pulsar/Dockerfile +++ b/docker/pulsar/Dockerfile @@ -70,15 +70,12 @@ RUN mkdir -p /etc/apt/keyrings \ && apt-get update \ && apt-get -y dist-upgrade \ && apt-get -y install temurin-17-jdk \ - && export JAVA_HOME="/usr/lib/jvm/temurin-17-jdk-$(uname -m)" - -# Cleanup apt -RUN apt-get -y --purge autoremove \ + && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$(uname -m)/conf/security/java.security \ + && apt-get -y --purge autoremove \ && apt-get autoclean \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -RUN pip3 install pyyaml==5.4.1 + && rm -rf /var/lib/apt/lists/* \ + && pip3 install pyyaml==5.4.1 # Pulsar currently writes to the below directories, assuming the default configuration. # Note that number 4 is the reason that pulsar components need write access to the /pulsar directory. @@ -88,12 +85,10 @@ RUN pip3 install pyyaml==5.4.1 # 4. /pulsar - hadoop writes to this directory RUN mkdir /pulsar && chmod g+w /pulsar -RUN echo networkaddress.cache.ttl=1 >> ${JAVA_HOME}/conf/security/java.security ADD target/python-client/ /pulsar/pulsar-client ENV PULSAR_ROOT_LOGGER=INFO,CONSOLE - COPY --from=pulsar /pulsar /pulsar WORKDIR /pulsar diff --git a/tests/docker-images/java-test-image/Dockerfile b/tests/docker-images/java-test-image/Dockerfile index 8f02381af43af..7df1fe72ff3a8 100644 --- a/tests/docker-images/java-test-image/Dockerfile +++ b/tests/docker-images/java-test-image/Dockerfile @@ -47,9 +47,7 @@ RUN mkdir -p /etc/apt/keyrings \ && apt-get update \ && apt-get -y dist-upgrade \ && apt-get -y install temurin-17-jdk \ - && export JAVA_HOME="/usr/lib/jvm/temurin-17-jdk-$(uname -m)" - -RUN echo networkaddress.cache.ttl=1 >> ${JAVA_HOME}/conf/security/java.security + && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$(uname -m)/conf/security/java.security # /pulsar/bin/watch-znode.py requires python3-kazoo # /pulsar/bin/pulsar-managed-ledger-admin requires python3-protobuf From a13e8cbf4c760e08b785f760da0e299eaeb0f245 Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 20 Sep 2022 16:22:54 +0800 Subject: [PATCH 5/8] fix resolve architecture Signed-off-by: tison --- docker/pulsar/Dockerfile | 3 ++- tests/docker-images/java-test-image/Dockerfile | 3 ++- tests/docker-images/latest-version-image/Dockerfile | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/pulsar/Dockerfile b/docker/pulsar/Dockerfile index 6ed6de38ffc77..2a5e783276672 100644 --- a/docker/pulsar/Dockerfile +++ b/docker/pulsar/Dockerfile @@ -70,7 +70,8 @@ RUN mkdir -p /etc/apt/keyrings \ && apt-get update \ && apt-get -y dist-upgrade \ && apt-get -y install temurin-17-jdk \ - && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$(uname -m)/conf/security/java.security \ + && export architecture=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ + && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$architecture/conf/security/java.security \ && apt-get -y --purge autoremove \ && apt-get autoclean \ && apt-get clean \ diff --git a/tests/docker-images/java-test-image/Dockerfile b/tests/docker-images/java-test-image/Dockerfile index 7df1fe72ff3a8..b7acfbd6fd017 100644 --- a/tests/docker-images/java-test-image/Dockerfile +++ b/tests/docker-images/java-test-image/Dockerfile @@ -47,7 +47,8 @@ RUN mkdir -p /etc/apt/keyrings \ && apt-get update \ && apt-get -y dist-upgrade \ && apt-get -y install temurin-17-jdk \ - && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$(uname -m)/conf/security/java.security + && export architecture=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ + && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$architecture/conf/security/java.security # /pulsar/bin/watch-znode.py requires python3-kazoo # /pulsar/bin/pulsar-managed-ledger-admin requires python3-protobuf diff --git a/tests/docker-images/latest-version-image/Dockerfile b/tests/docker-images/latest-version-image/Dockerfile index 64ca72b6f0595..913f161910310 100644 --- a/tests/docker-images/latest-version-image/Dockerfile +++ b/tests/docker-images/latest-version-image/Dockerfile @@ -29,7 +29,8 @@ RUN apt-get install -y procps curl git build-essential ENV GOLANG_VERSION 1.15.8 -RUN curl -sSL https://golang.org/dl/go$GOLANG_VERSION.linux-$(uname -m).tar.gz | tar -C /usr/local -xz +RUN export architecture=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ + && curl -sSL https://golang.org/dl/go$GOLANG_VERSION.linux-$architecture.tar.gz | tar -C /usr/local -xz ENV PATH /usr/local/go/bin:$PATH RUN mkdir -p /go/src /go/bin && chmod -R 777 /go From 1ae770952e3c2bb280df73aebfa64c87485cd7e1 Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 20 Sep 2022 18:58:37 +0800 Subject: [PATCH 6/8] revert chained run commands Signed-off-by: tison --- docker/pulsar/Dockerfile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/pulsar/Dockerfile b/docker/pulsar/Dockerfile index 2a5e783276672..c1751fffeed95 100644 --- a/docker/pulsar/Dockerfile +++ b/docker/pulsar/Dockerfile @@ -72,11 +72,14 @@ RUN mkdir -p /etc/apt/keyrings \ && apt-get -y install temurin-17-jdk \ && export architecture=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$architecture/conf/security/java.security \ - && apt-get -y --purge autoremove \ + +# Cleanup apt +RUN apt-get -y --purge autoremove \ && apt-get autoclean \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* \ - && pip3 install pyyaml==5.4.1 + && rm -rf /var/lib/apt/lists/* + +RUN pip3 install pyyaml==5.4.1 # Pulsar currently writes to the below directories, assuming the default configuration. # Note that number 4 is the reason that pulsar components need write access to the /pulsar directory. From 1909f25075609c1537afb397a0626c9b810058b0 Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 20 Sep 2022 23:42:45 +0800 Subject: [PATCH 7/8] architecture -> ARCH Signed-off-by: tison --- docker/pulsar/Dockerfile | 4 ++-- tests/docker-images/java-test-image/Dockerfile | 4 ++-- tests/docker-images/latest-version-image/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/pulsar/Dockerfile b/docker/pulsar/Dockerfile index c1751fffeed95..3746fe1c26c2e 100644 --- a/docker/pulsar/Dockerfile +++ b/docker/pulsar/Dockerfile @@ -70,8 +70,8 @@ RUN mkdir -p /etc/apt/keyrings \ && apt-get update \ && apt-get -y dist-upgrade \ && apt-get -y install temurin-17-jdk \ - && export architecture=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ - && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$architecture/conf/security/java.security \ + && export ARCH=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ + && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$ARCH/conf/security/java.security \ # Cleanup apt RUN apt-get -y --purge autoremove \ diff --git a/tests/docker-images/java-test-image/Dockerfile b/tests/docker-images/java-test-image/Dockerfile index b7acfbd6fd017..26d0609917cdc 100644 --- a/tests/docker-images/java-test-image/Dockerfile +++ b/tests/docker-images/java-test-image/Dockerfile @@ -47,8 +47,8 @@ RUN mkdir -p /etc/apt/keyrings \ && apt-get update \ && apt-get -y dist-upgrade \ && apt-get -y install temurin-17-jdk \ - && export architecture=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ - && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$architecture/conf/security/java.security + && export ARCH=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ + && echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$ARCH/conf/security/java.security # /pulsar/bin/watch-znode.py requires python3-kazoo # /pulsar/bin/pulsar-managed-ledger-admin requires python3-protobuf diff --git a/tests/docker-images/latest-version-image/Dockerfile b/tests/docker-images/latest-version-image/Dockerfile index 913f161910310..16644a2c8051e 100644 --- a/tests/docker-images/latest-version-image/Dockerfile +++ b/tests/docker-images/latest-version-image/Dockerfile @@ -29,8 +29,8 @@ RUN apt-get install -y procps curl git build-essential ENV GOLANG_VERSION 1.15.8 -RUN export architecture=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ - && curl -sSL https://golang.org/dl/go$GOLANG_VERSION.linux-$architecture.tar.gz | tar -C /usr/local -xz +RUN export ARCH=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \ + && curl -sSL https://golang.org/dl/go$GOLANG_VERSION.linux-$ARCH.tar.gz | tar -C /usr/local -xz ENV PATH /usr/local/go/bin:$PATH RUN mkdir -p /go/src /go/bin && chmod -R 777 /go From 279388542fe93df2b5dc4fc9f9986fb2c303c95a Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 20 Sep 2022 23:52:43 +0800 Subject: [PATCH 8/8] install build-essential python3-dev only for ARM64 Signed-off-by: tison --- docker/pulsar/scripts/install-pulsar-client.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docker/pulsar/scripts/install-pulsar-client.sh b/docker/pulsar/scripts/install-pulsar-client.sh index a58d068b90416..355f5f6524a3a 100755 --- a/docker/pulsar/scripts/install-pulsar-client.sh +++ b/docker/pulsar/scripts/install-pulsar-client.sh @@ -20,10 +20,13 @@ set -x +# TODO: remove these lines once grpcio doesn't need to compile from source on ARM64 platform +ARCH=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') +if [ "${ARCH}" == "arm64" ]; then + apt update + apt -y install build-essential python3-dev +fi + PYTHON_MAJOR_MINOR=$(python3 -V | sed -E 's/.* ([[:digit:]]+)\.([[:digit:]]+).*/\1\2/') WHEEL_FILE=$(ls /pulsar/pulsar-client | grep "cp${PYTHON_MAJOR_MINOR}") pip3 install /pulsar/pulsar-client/${WHEEL_FILE}[all] - -# TODO: remove these lines once grpcio doesn't need to compile from source on ARM64 platform -apt update -apt -y install build-essential python3-dev