diff --git a/.circleci/config.yml b/.circleci/config.yml index 81bfda402..359156a75 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ version: 2 defaults: &defaults working_directory: ~/repo docker: - - image: iodide/pyodide-env:9 + - image: iodide/pyodide-env:10 environment: - EMSDK_NUM_CORES: 4 EMCC_CORES: 4 diff --git a/.gitignore b/.gitignore index 2a6e2fa97..51156fd02 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ firefox/ .vscode .idea .mypy_cache/ +node_modules/ build downloads diff --git a/Dockerfile b/Dockerfile index 634db74d3..40a72c9ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,14 +3,10 @@ FROM python:3.8.2-buster 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 \ + bzip2 ccache clang-format-6.0 cmake f2c g++ gfortran libtinfo5 swig \ # 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 && mv -t /usr/local/bin /tmp/uglifyjs + && rm -rf /var/lib/apt/lists/* RUN pip3 --no-cache-dir install pytest pytest-xdist pytest-instafail pytest-rerunfailures \ pytest-httpserver pytest-cov selenium PyYAML flake8 black distlib mypy "Cython<3.0" diff --git a/Makefile b/Makefile index aeca432a3..c6fe8f359 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,8 @@ include Makefile.envs .PHONY=check FILEPACKAGER=$(PYODIDE_ROOT)/emsdk/emsdk/fastcomp/emscripten/tools/file_packager.py +UGLIFYJS=$(PYODIDE_ROOT)/node_modules/.bin/uglifyjs +LESSC=$(PYODIDE_ROOT)/node_modules/.bin/lessc CPYTHONROOT=cpython CPYTHONLIB=$(CPYTHONROOT)/installs/python-$(PYVERSION)/lib/python$(PYMINOR) @@ -94,8 +96,8 @@ build/console.html: src/templates/console.html sed -i -e 's#{{ PYODIDE_BASE_URL }}#$(PYODIDE_BASE_URL)#g' $@ -build/renderedhtml.css: src/css/renderedhtml.less - lessc $< $@ +build/renderedhtml.css: src/css/renderedhtml.less $(LESSC) + $(LESSC) $< $@ build/webworker.js: src/webworker.js cp $< $@ @@ -129,6 +131,7 @@ clean: rm -fr root rm -fr build/* rm -fr src/*.bc + rm -fr node_modules make -C packages clean make -C packages/six clean make -C packages/jedi clean @@ -157,9 +160,12 @@ build/test.data: $(CPYTHONLIB) cd build; \ python $(FILEPACKAGER) test.data --lz4 --preload ../$(CPYTHONLIB)/test@/lib/python3.8/test --js-output=test.js --export-name=pyodide._module --exclude __pycache__ \ ) - uglifyjs build/test.js -o build/test.js + $(UGLIFYJS) build/test.js -o build/test.js +$(UGLIFYJS) $(LESSC): emsdk/emsdk/.complete + npm i --no-save uglify-js lessc + root/.built: \ $(CPYTHONLIB) \ $(SIX_LIBS) \ diff --git a/Makefile.envs b/Makefile.envs index 0d8858579..b0e913e5e 100644 --- a/Makefile.envs +++ b/Makefile.envs @@ -1,7 +1,7 @@ export EMSCRIPTEN_VERSION = 1.38.44 export BINARYEN_VERSION = version_86 -export PATH := $(PYODIDE_ROOT)/ccache:$(PYODIDE_ROOT)/emsdk/emsdk:$(PYODIDE_ROOT)/emsdk/emsdk/node/12.18.1_64bit/bin:$(PYODIDE_ROOT)/emsdk/emsdk/binaryen/bin/:$(PYODIDE_ROOT)/emsdk/emsdk/fastcomp/emscripten/:$(PATH) +export PATH := $(PYODIDE_ROOT)/ccache:$(PYODIDE_ROOT)/emsdk/emsdk:$(PYODIDE_ROOT)/emsdk/emsdk/node/12.18.1_64bit/bin:$(PYODIDE_ROOT)/emsdk/emsdk/binaryen/bin/:$(PYODIDE_ROOT)/emsdk/emsdk/fastcomp/emscripten/:$(PYODIDE_ROOT)/node_modules/.bin/:$(PATH) export EMSDK = $(PYODIDE_ROOT)/emsdk/emsdk export EM_CONFIG = $(PYODIDE_ROOT)/emsdk/emsdk/.emscripten diff --git a/docs/building_from_sources.md b/docs/building_from_sources.md index 486b6960a..58baf8f2e 100644 --- a/docs/building_from_sources.md +++ b/docs/building_from_sources.md @@ -19,8 +19,6 @@ Additional build prerequisites are: - PyYAML - FreeType 2 development libraries to compile Matplotlib. - Cython to compile SciPy -- [lessc](http://lesscss.org/) to compile less to css. -- [uglifyjs](https://github.com/mishoo/UglifyJS) to minify Javascript builds. - gfortran (GNU Fortran 95 compiler) - [f2c](http://www.netlib.org/f2c/) - [ccache](https://ccache.samba.org) (optional) *highly* recommended for much faster rebuilds. diff --git a/docs/changelog.md b/docs/changelog.md index 4bbee4b08..80ed5a70c 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -19,6 +19,7 @@ ### Added - `micropip` now supports installing wheels from relative urls. [#872](https://github.com/iodide-project/pyodide/pull/872) +- uglifyjs and lessc no longer need to be installed in the system during build ## Version 0.16.1 *December 25, 2020* diff --git a/run_docker b/run_docker index c1c9da205..0ce40d699 100755 --- a/run_docker +++ b/run_docker @@ -26,7 +26,7 @@ function error() { } -PYODIDE_IMAGE_TAG="9" +PYODIDE_IMAGE_TAG="10" PYODIDE_PREBUILT_IMAGE_TAG="0.16.0b1" DEFAULT_PYODIDE_DOCKER_IMAGE="iodide/pyodide-env:${PYODIDE_IMAGE_TAG}" DEFAULT_PYODIDE_SYSTEM_PORT="8000" diff --git a/tools/dependency-check.sh b/tools/dependency-check.sh index 9f4787e54..6e4068ebd 100755 --- a/tools/dependency-check.sh +++ b/tools/dependency-check.sh @@ -37,11 +37,6 @@ check_fortran_dependencies() { check_binary_present "f2c" } -check_js_dependencies() { - check_binary_present "lessc" - check_binary_present "uglifyjs" -} - check_pyyaml() { local pyyaml_import_check pyyaml_import_check="$(python3 -c 'import yaml' 2>&1)" @@ -54,5 +49,4 @@ check_python_version check_pkgconfig #check_python_headers check_fortran_dependencies -check_js_dependencies check_pyyaml