Skip to content

Commit

Permalink
fix: use gcc-10 and g++-10
Browse files Browse the repository at this point in the history
  • Loading branch information
homuler committed Jun 5, 2021
1 parent 8c171d0 commit a3332df
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 28 deletions.
74 changes: 51 additions & 23 deletions docker/linux/x86_64/Dockerfile
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -25,43 +26,47 @@ 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

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
Expand All @@ -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

Expand Down
21 changes: 16 additions & 5 deletions docker/linux/x86_64/Dockerfile.ubuntu
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit a3332df

Please sign in to comment.