diff --git a/.gitignore b/.gitignore index 1fccc3ea2..16be1ada2 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ __pycache__ geckodriver.log firefox/ .vscode +.idea build downloads diff --git a/Makefile b/Makefile index d5be9afc0..162389f13 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ PYODIDE_ROOT=$(abspath .) include Makefile.envs +.PHONY=check FILEPACKAGER=$(PYODIDE_ROOT)/tools/file_packager.py @@ -58,7 +59,8 @@ PARSO_LIBS=$(PARSO_ROOT)/__init__.py SITEPACKAGES=root/lib/python$(PYMINOR)/site-packages -all: build/pyodide.asm.js \ +all: check \ + build/pyodide.asm.js \ build/pyodide.asm.data \ build/pyodide.js \ build/pyodide_dev.js \ @@ -250,3 +252,6 @@ emsdk/emsdk/.complete: make -C emsdk FORCE: + +check: + ./tools/dependency-check.sh diff --git a/tools/dependency-check.sh b/tools/dependency-check.sh new file mode 100755 index 000000000..4e0a1bb17 --- /dev/null +++ b/tools/dependency-check.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +failure_exit() { + echo >&2 "Could not find ${1}. Please install that before continuing." + exit 1 +} + +check_python_headers() { + local python_headers_present + python_headers_present="$(pkg-config --libs python-3.7)" + + if [ ! "${python_headers_present}" ]; then + failure_exit "Python 3.7 headers" + fi +} + +check_binary_present() { + local binary_exists + binary_exists="$(command -v "${1}")" + if [ ! "${binary_exists}" ]; then + failure_exit "${1}" + fi +} + +check_fortran_dependencies() { + check_binary_present "gfortran" + 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')" + if [ "${pyyaml_import_check}" ]; then + failure_exit "PyYAML" + fi +} + +check_python_headers +check_fortran_dependencies +check_js_dependencies +check_pyyaml