From a3332df9049a5337bcb3478e3bfa5924356d5b25 Mon Sep 17 00:00:00 2001 From: homuler Date: Sat, 5 Jun 2021 14:44:45 +0900 Subject: [PATCH] fix: use gcc-10 and g++-10 --- docker/linux/x86_64/Dockerfile | 74 ++++++++++++++++++--------- docker/linux/x86_64/Dockerfile.ubuntu | 21 ++++++-- 2 files changed, 67 insertions(+), 28 deletions(-) diff --git a/docker/linux/x86_64/Dockerfile b/docker/linux/x86_64/Dockerfile index 655e0edad..ad58394b2 100644 --- a/docker/linux/x86_64/Dockerfile +++ b/docker/linux/x86_64/Dockerfile @@ -1,7 +1,8 @@ ARG UID=1000 -ARG ANDROID_NDK_VERSION=r21e +ARG ANDROID_SDK_VERSION=30 +ARG ANDROID_NDK_VERSION=21.4.7075529 -FROM archlinux:latest AS builder +FROM archlinux:latest AS base ARG RANKMIRROS ARG MIRROR_COUNTRY=JP,US @@ -25,7 +26,7 @@ RUN if [[ "${RANKMIRROS}" ]]; then \ ARG UID # Create a privileged user -RUN pacman -Syuu sudo --needed --noconfirm +RUN pacman -Syuu archlinux-keyring sudo --needed --noconfirm RUN echo -e "%wheel ALL=(ALL) NOPASSWD: ALL\n" > /etc/sudoers.d/01_wheel RUN useradd -u ${UID} -m mediapipe && usermod -aG wheel mediapipe @@ -33,35 +34,39 @@ USER mediapipe WORKDIR /home/mediapipe # install yay -RUN sudo pacman -Sy base-devel git glibc unzip --needed --noconfirm +RUN sudo pacman -Sy base-devel git glibc jdk11-openjdk unzip zip --needed --noconfirm RUN git clone https://aur.archlinux.org/yay.git RUN cd yay && makepkg -si --noconfirm RUN rm -rf yay -FROM builder AS android +FROM base AS android -ARG ANDROID_NDK_VERSION +USER root +WORKDIR /tmp -RUN yay -Sy android-sdk android-sdk-build-tools android-sdk-platform-tools android-platform --needed --noconfirm +ARG ANDROID_SDK_VERSION +ARG ANDROID_NDK_VERSION -ENV ANDROID_NDK_ZIP android-ndk.zip -ENV ANDROID_NDK_SHA1 c3ebc83c96a4d7f539bd72c241b2be9dcd29bda9 +ENV COMMANDLINETOOLS_ZIP commandlinetools.zip +ENV COMMANDLINETOOLS_SHA256 87f6dcf41d4e642e37ba03cb2e387a542aa0bd73cb689a9e7152aad40a6e7a08 -RUN curl -L https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip -o ${ANDROID_NDK_ZIP} && \ - (test "$(sha1sum ${ANDROID_NDK_ZIP})" = "${ANDROID_NDK_SHA1} ${ANDROID_NDK_ZIP}" || { echo 'Checksum Failed'; exit 1; }) -RUN sudo unzip android-ndk.zip -d /opt -RUN sudo mv /opt/android-ndk-${ANDROID_NDK_VERSION} /opt/android-ndk -RUN rm android-ndk.zip +RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip -o ${COMMANDLINETOOLS_ZIP} && \ + (test "$(sha256sum ${COMMANDLINETOOLS_ZIP})" = "${COMMANDLINETOOLS_SHA256} ${COMMANDLINETOOLS_ZIP}" || { echo 'Checksum Failed'; exit 1; }) +RUN sudo unzip ${COMMANDLINETOOLS_ZIP} -d /opt/android +RUN yes | /opt/android/cmdline-tools/bin/sdkmanager --sdk_root=/opt/android --licenses +RUN /opt/android/cmdline-tools/bin/sdkmanager --sdk_root=/opt/android --install \ + "platforms;android-${ANDROID_SDK_VERSION}" \ + "platform-tools" \ + "build-tools;30.0.3" \ + "ndk;${ANDROID_NDK_VERSION}" +RUN rm ${COMMANDLINETOOLS_ZIP} -FROM builder +FROM base AS builder # install Android SDK and NDK -COPY --from=android /opt/android-sdk /opt/android-sdk -COPY --from=android /opt/android-ndk /opt/android-ndk -ENV ANDROID_HOME /opt/android-sdk -ENV ANDROID_NDK_HOME /opt/android-ndk +COPY --from=android /opt/android /opt/android # install FFmpeg RUN mkdir ffmpeg @@ -72,13 +77,36 @@ RUN cd ffmpeg && \ cd .. && \ rm -rf ffmpeg -# install dependencies -RUN yay -Sy bazel nuget mesa python-numpy --needed --noconfirm +ENV NPM_PREFIX /home/mediapipe/.npm-packages +ENV PATH ${NPM_PREFIX}/bin:/home/mediapipe/.local/bin:${PATH} + +# install Bazelisk +RUN yay -Sy npm --needed --noconfirm && \ + echo -e "prefix = ${NPM_PREFIX}\n" > /home/mediapipe/.npmrc && \ + npm install -g @bazel/bazelisk + +# install other dependencies +RUN yay -Sy mesa nuget python-pip --needed --noconfirm && \ + pip install --user numpy + +# gcc-11 is not supported yet, so switch default gcc version +RUN yay -Sy gcc10 gcc10-libs --needed --noconfirm && \ + sudo ln -s $(which gcc-10) /usr/local/bin/gcc && \ + sudo ln -s $(which g++-10) /usr/local/bin/g++ && \ + hash -r + + +FROM builder + +ARG ANDROID_NDK_VERSION + +ENV ANDROID_HOME /opt/android +ENV ANDROID_NDK_HOME /opt/android/ndk/${ANDROID_NDK_VERSION} -ADD build.py . -ADD WORKSPACE . ADD .bazelrc . ADD packages.config . +ADD build.py . +ADD WORKSPACE . ADD mediapipe_api mediapipe_api ADD third_party third_party diff --git a/docker/linux/x86_64/Dockerfile.ubuntu b/docker/linux/x86_64/Dockerfile.ubuntu index 82cd867fb..407e67d61 100644 --- a/docker/linux/x86_64/Dockerfile.ubuntu +++ b/docker/linux/x86_64/Dockerfile.ubuntu @@ -71,11 +71,16 @@ RUN add-apt-repository -y ppa:deadsnakes/ppa && \ python3.9 get-pip.py && \ ln -s /usr/bin/python3.9 /usr/local/bin/python -# install NuGet and Bazel +# install NuGet RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \ apt-add-repository -y 'deb https://download.mono-project.com/repo/ubuntu stable-focal main' && \ apt-get install -y --no-install-recommends mono-complete && \ curl -o /usr/local/bin/nuget.exe https://dist.nuget.org/win-x86-commandline/latest/nuget.exe && \ + bash -c 'echo -e "#!/bin/bash\nmono /usr/local/bin/nuget.exe \$@" | sudo tee -a /usr/local/bin/nuget' && \ + sudo chmod +x /usr/local/bin/nuget + +# install Bazelisk +RUN apt-get install -y --no-install-recommends npm && \ npm install -g @bazel/bazelisk # install FFmpeg @@ -125,15 +130,21 @@ RUN addgroup wheel && useradd -u ${UID} -m mediapipe && usermod -aG wheel mediap USER mediapipe WORKDIR /home/mediapipe +ENV NPM_PREFIX /home/mediapipe/.npm-packages +ENV PATH ${NPM_PREFIX}/bin:/home/mediapipe/.local/bin:${PATH} + +# install Bazelisk +RUN bash -c 'echo -e "prefix = ${NPM_PREFIX}\n" > /home/mediapipe/.npmrc' && \ + npm install -g @bazel/bazelisk + +# install numpy +RUN pip install --user numpy + FROM builder ARG ANDROID_NDK_VERSION -RUN bash -c 'echo -e "#!/bin/bash\nmono /usr/local/bin/nuget.exe \$@" | sudo tee -a /usr/local/bin/nuget' && \ - sudo chmod +x /usr/local/bin/nuget && \ - pip3.9 install --user numpy - ENV ANDROID_HOME /opt/android ENV ANDROID_NDK_HOME /opt/android/ndk/${ANDROID_NDK_VERSION} ENV PYTHON_BIN_PATH /usr/bin/python3.9