heesung-sn commented on issue #12944:
URL: https://github.com/apache/pulsar/issues/12944#issuecomment-1103444708
For those of you who are stuck at this issue, I was able to create ARM
docker images on my M1 Mac by the following simple change. The test dockers
from the following builds passed the shade integration test on my laptop.
```
# docker builds
mvn -B -f docker/pulsar/pom.xml install -am -Pdocker,-main -DskipTests
-Ddocker.nocache=true
mvn -B -f docker/pulsar-all/pom.xml install -am -Pdocker,-main -DskipTests
-Ddocker.nocache=true
mvn -B -f tests/docker-images/pom.xml install -am -Pdocker,-main -DskipTests
# shade test run
mvn -B -ntp -DredirectTestOutputToFile=false -f tests/pom.xml test
-DShadeTests -DtestForkCount=1 -DtestReuseFork=false
```
```
hsohn@HeesungSohns-MacBook-Pro pulsar % git diff
diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile
index 4b6b8a3a84..da4b04e9f0 100644
--- a/build/docker/Dockerfile
+++ b/build/docker/Dockerfile
@@ -51,8 +51,13 @@ RUN cd /usr/src/gmock && cmake . && make && cp libgmock.a
/usr/lib
# Include gtest parallel to speed up unit tests
RUN git clone https://github.com/google/gtest-parallel.git
-ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
-ENV JAVA_HOME_11=/usr/lib/jvm/java-1.11.0-openjdk-amd64
+RUN java_home=$(ls -d1 /usr/lib/jvm/java-1.8.0-openjdk-*) ; \
+ ln -s "$java_home" /usr/lib/jvm/java8 ; \
+ java_home_11=$(ls -d1 /usr/lib/jvm/java-1.11.0-openjdk-*) ; \
+ ln -s "$java_home_11" /usr/lib/jvm/java11
+
+ENV JAVA_HOME /usr/lib/jvm/java8
+ENV JAVA_HOME_11 /usr/lib/jvm/java11
## Website build dependencies
diff --git a/docker/pulsar/Dockerfile b/docker/pulsar/Dockerfile
index 711b9509d3..1bfb622574 100644
--- a/docker/pulsar/Dockerfile
+++ b/docker/pulsar/Dockerfile
@@ -71,9 +71,12 @@ RUN update-alternatives --install /usr/bin/python python
/usr/bin/python3 10
# 3. /pulsar/download - functions write to this directory
# 4. /pulsar - hadoop writes to this directory
RUN mkdir /pulsar && chmod g+w /pulsar
+RUN java_home=$(ls -d1 /usr/lib/jvm/java-11-openjdk-*) ; \
+ ln -s "$java_home" /usr/lib/jvm/java
+
+ENV JAVA_HOME /usr/lib/jvm/java
+RUN echo networkaddress.cache.ttl=1 >>
/usr/lib/jvm/java/conf/security/java.security
-ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64
-RUN echo networkaddress.cache.ttl=1 >>
/usr/lib/jvm/java-11-openjdk-amd64/conf/security/java.security
ADD target/python-client/ /pulsar/pulsar-client
ENV PULSAR_ROOT_LOGGER=INFO,CONSOLE
diff --git a/docker/pulsar/pom.xml b/docker/pulsar/pom.xml
index 048b3da7cb..d4aa4d2eb1 100644
--- a/docker/pulsar/pom.xml
+++ b/docker/pulsar/pom.xml
@@ -75,7 +75,7 @@
<executable>${project.basedir}/../../pulsar-client-cpp/docker/build-wheels.sh</executable>
<arguments>
<!-- build python 3.8 -->
- <argument>3.8 cp38-cp38 manylinux2014 x86_64</argument>
+ <argument>3.8 cp38-cp38 manylinux2014 aarch64</argument>
</arguments>
</configuration>
</execution>
diff --git a/docker/pulsar/scripts/install-pulsar-client.sh
b/docker/pulsar/scripts/install-pulsar-client.sh
index 56702b10db..adba8ed1cd 100755
--- a/docker/pulsar/scripts/install-pulsar-client.sh
+++ b/docker/pulsar/scripts/install-pulsar-client.sh
@@ -22,4 +22,11 @@ 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}")
+
+# The following `update build-essential python3-dev` are added due to
grpcio `cc` not found error
+# TODO: remove these lines if the error got resolved.
+# WARNING: currently grpcio build takes long.
+apt-get update
+apt-get -y install build-essential python3-dev
+
pip3 install /pulsar/pulsar-client/${WHEEL_FILE}[all]
diff --git a/tests/docker-images/java-test-image/Dockerfile
b/tests/docker-images/java-test-image/Dockerfile
index 564182534a..ca7c719cfb 100644
--- a/tests/docker-images/java-test-image/Dockerfile
+++ b/tests/docker-images/java-test-image/Dockerfile
@@ -40,8 +40,11 @@ RUN sed -i
"s|http://archive\.ubuntu\.com/ubuntu/|${UBUNTU_MIRROR:-mirror://mirr
&& apt-get -y dist-upgrade \
&& apt-get -y install openjdk-11-jdk-headless
-ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64
-RUN echo networkaddress.cache.ttl=1 >>
/usr/lib/jvm/java-11-openjdk-amd64/conf/security/java.security
+RUN java_home=$(ls -d1 /usr/lib/jvm/java-11-openjdk-*) ; \
+ ln -s "$java_home" /usr/lib/jvm/java
+ENV JAVA_HOME /usr/lib/jvm/java
+RUN echo networkaddress.cache.ttl=1 >>
/usr/lib/jvm/java/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/Dockerf
ile
index f5c6726831..e9a2ba1c0d 100644
--- a/tests/docker-images/latest-version-image/Dockerfile
+++ b/tests/docker-images/latest-version-image/Dockerfile
@@ -28,8 +28,8 @@ RUN rm -rf /var/lib/apt/lists/* && apt-get update
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 \
+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
# 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
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]