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]

Reply via email to