Add dependency check for the builds. (#568)

* Add dependency check for the builds.

* Use Python 3 specifically.

* Use the right target.
This commit is contained in:
Dorian Pula 2019-11-19 16:51:45 -05:00 committed by Michael Droettboom
parent ef01e7039d
commit a1663e77e0
3 changed files with 53 additions and 1 deletions

1
.gitignore vendored
View File

@ -10,6 +10,7 @@ __pycache__
geckodriver.log geckodriver.log
firefox/ firefox/
.vscode .vscode
.idea
build build
downloads downloads

View File

@ -1,5 +1,6 @@
PYODIDE_ROOT=$(abspath .) PYODIDE_ROOT=$(abspath .)
include Makefile.envs include Makefile.envs
.PHONY=check
FILEPACKAGER=$(PYODIDE_ROOT)/tools/file_packager.py FILEPACKAGER=$(PYODIDE_ROOT)/tools/file_packager.py
@ -58,7 +59,8 @@ PARSO_LIBS=$(PARSO_ROOT)/__init__.py
SITEPACKAGES=root/lib/python$(PYMINOR)/site-packages SITEPACKAGES=root/lib/python$(PYMINOR)/site-packages
all: build/pyodide.asm.js \ all: check \
build/pyodide.asm.js \
build/pyodide.asm.data \ build/pyodide.asm.data \
build/pyodide.js \ build/pyodide.js \
build/pyodide_dev.js \ build/pyodide_dev.js \
@ -250,3 +252,6 @@ emsdk/emsdk/.complete:
make -C emsdk make -C emsdk
FORCE: FORCE:
check:
./tools/dependency-check.sh

46
tools/dependency-check.sh Executable file
View File

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