Simplify Docker image (#815)

Co-authored-by: Roman Yurchak <rth.yurchak@gmail.com>
This commit is contained in:
Dexter Chua 2020-12-07 04:17:17 +08:00 committed by GitHub
parent 411a058d7b
commit 81df4e24a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 57 deletions

View File

@ -3,7 +3,7 @@ version: 2
defaults: &defaults
working_directory: ~/repo
docker:
- image: iodide/pyodide-env:0.16.1
- image: iodide/pyodide-env:8
environment:
- EMSDK_NUM_CORES: 4
EMCC_CORES: 4
@ -19,7 +19,7 @@ jobs:
command: |
pip install black mypy
# TODO: investigate why clang-format without version is not available
sudo ln -s /usr/bin/clang-format-6.0 /usr/bin/clang-format
ln -s /usr/bin/clang-format-6.0 /usr/bin/clang-format
make lint
black --check --exclude tools/file_packager.py .
mypy --ignore-missing-imports pyodide_build/ src/ packages/micropip/micropip/ packages/*/test*
@ -30,11 +30,7 @@ jobs:
- restore_cache:
keys:
- v1-emsdk-{{ checksum "emsdk/Makefile" }}-v20201203-
- run:
name: dependencies
command: sudo apt install -y libtinfo5
- v1-emsdk-{{ checksum "emsdk/Makefile" }}-v20201205-
- run:
name: build
@ -52,7 +48,7 @@ jobs:
paths:
- ./emsdk/emsdk
- ~/.ccache
key: v1-emsdk-{{ checksum "emsdk/Makefile" }}-v20201203-{{ .BuildNum }}
key: v1-emsdk-{{ checksum "emsdk/Makefile" }}-v20201205-{{ .BuildNum }}
- persist_to_workspace:
root: .
@ -71,11 +67,7 @@ jobs:
# this cache is generated by the main build job, we never store it here
- restore_cache:
keys:
- v1-emsdk-{{ checksum "emsdk/Makefile" }}-v20201203-
- run:
name: dependencies
command: sudo apt install -y libtinfo5
- v1-emsdk-{{ checksum "emsdk/Makefile" }}-v20201205-
- run:
name: build
@ -108,8 +100,7 @@ jobs:
- run:
name: test
command: |
pip install pytest-httpserver
pytest src packages/*/test* packages/micropip/micropip/ pyodide_build -v -k firefox
pytest src packages/*/test* pyodide_build -v -k firefox
test-chrome:
<<: *defaults
@ -120,8 +111,7 @@ jobs:
- run:
name: test
command: |
pip install pytest-httpserver
pytest src packages/*/test* packages/micropip/micropip/ pyodide_build -v -k chrome
pytest src packages/*/test* pyodide_build -v -k chrome
test-python:
<<: *defaults
@ -130,7 +120,7 @@ jobs:
- run:
name: deps
command: |
sudo pip install pytest-cov
pip install pytest-cov
- run:
name: test
command: |

View File

@ -1,44 +1,29 @@
FROM circleci/python:3.8.2-buster
FROM python:3.8.2-buster
RUN sudo apt-get update \
# bzip2 and libgconf-2-4 are necessary for extracting firefox and running chrome, respectively
&& sudo apt-get install bzip2 libgconf-2-4 node-less cmake build-essential clang-format-6.0 \
uglifyjs chromium ccache libncurses6 gfortran f2c swig g++-8 libtinfo5 \
&& sudo apt-get clean \
&& sudo apt-get autoremove \
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
# building packages
bzip2 ccache clang-format-6.0 cmake f2c g++ gfortran libtinfo5 node-less swig uglifyjs \
# testing packages: libgconf-2-4 is necessary for running chromium
libgconf-2-4 chromium \
&& rm -rf /var/lib/apt/lists/* \
&& test "Comment: Hardcode nodejs path for uglifyjs, so it doesn't conflict with emcc's nodejs" \
&& test $(which node) = /usr/bin/node && test $(which uglifyjs) = /usr/bin/uglifyjs \
&& echo '#!/bin/sh -e\nexec /usr/bin/node /usr/bin/uglifyjs "$@"' >/tmp/uglifyjs \
&& chmod a+x /tmp/uglifyjs && sudo mv -t /usr/local/bin /tmp/uglifyjs
&& chmod a+x /tmp/uglifyjs && mv -t /usr/local/bin /tmp/uglifyjs
RUN sudo pip install pytest pytest-xdist pytest-instafail pytest-rerunfailures selenium PyYAML flake8 \
&& sudo rm -rf /root/.cache/pip
RUN pip3 --no-cache-dir install pytest pytest-xdist pytest-instafail pytest-rerunfailures pytest-httpserver selenium PyYAML flake8
# Get recent version of Firefox and geckodriver
RUN sudo wget --quiet -O firefox.tar.bz2 https://ftp.mozilla.org/pub/firefox/releases/70.0.1/linux-x86_64/en-US/firefox-70.0.1.tar.bz2 \
&& sudo tar jxf firefox.tar.bz2 \
&& sudo rm -f /usr/local/bin/firefox \
&& sudo ln -s $PWD/firefox/firefox /usr/local/bin/firefox \
&& sudo wget --quiet https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz \
&& sudo tar zxf geckodriver-v0.26.0-linux64.tar.gz -C /usr/local/bin \
&& sudo rm -f firefox.tar.bz2 geckodriver-v0.26.0-linux64.tar.gz
# Get firefox 70.0.1 and geckodriver
RUN wget -qO- https://ftp.mozilla.org/pub/firefox/releases/70.0.1/linux-x86_64/en-US/firefox-70.0.1.tar.bz2 | tar jx \
&& ln -s $PWD/firefox/firefox /usr/local/bin/firefox \
&& wget -qO- https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz | tar zxC /usr/local/bin/
# Get recent version of chromedriver
RUN sudo wget --quiet https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip \
&& sudo unzip chromedriver_linux64.zip \
&& sudo mv $PWD/chromedriver /usr/local/bin \
&& sudo rm -f chromedriver_linux64.zip
RUN wget --quiet https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip \
&& unzip chromedriver_linux64.zip \
&& mv $PWD/chromedriver /usr/local/bin \
&& rm -f chromedriver_linux64.zip
# start xvfb automatically to avoid needing to express in circle.yml
ENV DISPLAY :99
RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint \
&& chmod +x /tmp/entrypoint \
&& sudo mv /tmp/entrypoint /docker-entrypoint.sh
# ensure that the build agent doesn't override the entrypoint
LABEL com.circleci.preserve-entrypoint=true
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["/bin/sh"]
WORKDIR /src

View File

@ -54,11 +54,6 @@ building on the host machine is preferred if at all possible.
2. From a git checkout of Pyodide, run `./run_docker` or `./run_docker --pre-built`
Install libtinfo5 in the docker contaner,
```
sudo apt install -y libtinfo5
```
3. Run `make` to build.
Note: You can control the resources allocated to the build by setting the env vars

View File

@ -26,7 +26,7 @@ function error() {
}
PYODIDE_IMAGE_TAG="0.16.1"
PYODIDE_IMAGE_TAG="8"
PYODIDE_PREBUILT_IMAGE_TAG="0.16.0b1"
DEFAULT_PYODIDE_DOCKER_IMAGE="iodide/pyodide-env:${PYODIDE_IMAGE_TAG}"
DEFAULT_PYODIDE_SYSTEM_PORT="8000"