mirror of
https://github.com/zama-ai/concrete.git
synced 2026-01-13 06:48:02 -05:00
166 lines
3.8 KiB
Makefile
166 lines
3.8 KiB
Makefile
PYTHON=python
|
|
PIP=$(PYTHON) -m pip
|
|
|
|
COMPILER_BUILD_DIRECTORY ?= $(PWD)/../../compilers/concrete-compiler/compiler/build
|
|
BINDINGS_DIRECTORY=${COMPILER_BUILD_DIRECTORY}/tools/concretelang/python_packages/concretelang_core/
|
|
RUNTIME_LIBRARY=${COMPILER_BUILD_DIRECTORY}/lib/libConcretelangRuntime.so
|
|
|
|
.ONESHELL:
|
|
.PHONY:
|
|
.SILENT:
|
|
|
|
# =====
|
|
# Setup
|
|
# =====
|
|
|
|
venv:
|
|
$(PYTHON) -m venv .venv
|
|
. .venv/bin/activate
|
|
|
|
$(PIP) install -r requirements.dev.txt
|
|
$(PIP) install -r requirements.txt
|
|
|
|
@echo
|
|
@echo "The new environment is automatically activated with locals cp & bindings for makefile targets."
|
|
@echo "You can have the same activation in a terminal using:"
|
|
@echo 'eval $$(make cp_activate)'
|
|
|
|
cp_activate:
|
|
@echo "echo 'Activating virtual env and local concrete-python and local compiler bindings' ;"
|
|
@echo "export PATH=$(PWD)/.venv/bin:$$PATH;"
|
|
@echo "export LD_PRELOAD=$(RUNTIME_LIBRARY);"
|
|
@echo "export PYTHONPATH=$(BINDINGS_DIRECTORY);"
|
|
|
|
licenses:
|
|
bash scripts/versioning/summary.sh
|
|
|
|
# =======
|
|
# Testing
|
|
# =======
|
|
|
|
pytest: pytest-single pytest-multi
|
|
|
|
pytest-single:
|
|
export LD_PRELOAD=$(RUNTIME_LIBRARY)
|
|
export PYTHONPATH=$(BINDINGS_DIRECTORY)
|
|
|
|
# test single precision, mono params
|
|
pytest tests -svv -n auto \
|
|
--precision=single \
|
|
--strategy=mono \
|
|
--key-cache "${KEY_CACHE_DIRECTORY}" \
|
|
-m "${PYTEST_MARKERS}"
|
|
|
|
pytest-multi:
|
|
export LD_PRELOAD=$(RUNTIME_LIBRARY)
|
|
export PYTHONPATH=$(BINDINGS_DIRECTORY)
|
|
|
|
# test multi precision, multi params
|
|
pytest tests -svv -n auto \
|
|
--precision=multi \
|
|
--strategy=multi \
|
|
--cov=concrete \
|
|
--cov-fail-under=100 \
|
|
--cov-report=term-missing:skip-covered \
|
|
--key-cache "${KEY_CACHE_DIRECTORY}" \
|
|
-m "${PYTEST_MARKERS}"
|
|
|
|
pytest-gpu:
|
|
export LD_PRELOAD=$(RUNTIME_LIBRARY)
|
|
export PYTHONPATH=$(BINDINGS_DIRECTORY)
|
|
|
|
# test single precision
|
|
pytest tests -svv -n0 --use_gpu \
|
|
--key-cache "${KEY_CACHE_DIRECTORY}" \
|
|
-m "${PYTEST_MARKERS}"
|
|
|
|
# test multi precision
|
|
pytest tests -svv -n0 --use_gpu \
|
|
--precision=multi \
|
|
--cov=concrete \
|
|
--cov-fail-under=100 \
|
|
--cov-report=term-missing:skip-covered \
|
|
--key-cache "${KEY_CACHE_DIRECTORY}" \
|
|
-m "${PYTEST_MARKERS}"
|
|
|
|
# ==========
|
|
# Formatting
|
|
# ==========
|
|
|
|
format:
|
|
bash scripts/format/formatter.sh \
|
|
--dir concrete \
|
|
--dir examples \
|
|
--dir scripts \
|
|
--dir tests
|
|
|
|
sanitize-notebooks:
|
|
$(PYTHON) scripts/notebook/sanitizer.py docs
|
|
|
|
conformance: format sanitize-notebooks
|
|
|
|
# =======
|
|
# Linting
|
|
# =======
|
|
|
|
check-format:
|
|
bash scripts/format/formatter.sh --check \
|
|
--dir concrete \
|
|
--dir examples \
|
|
--dir scripts \
|
|
--dir tests
|
|
|
|
check-sanitize-notebooks:
|
|
$(PYTHON) scripts/notebook/sanitizer.py docs --check
|
|
|
|
mypy:
|
|
mypy concrete examples scripts tests --ignore-missing-imports
|
|
|
|
pydocstyle:
|
|
pydocstyle concrete --convention google --add-ignore=D1,D200,D202,D212,D402 --add-select=D401
|
|
|
|
pylint:
|
|
pylint --rcfile=.pylintrc concrete
|
|
pylint --rcfile=.pylintrc examples --disable=C0103,C0114,C0115,C0116,E0401,R1721
|
|
pylint --rcfile=.pylintrc scripts
|
|
pylint --rcfile=.pylintrc tests --disable=C0301,W0108
|
|
|
|
ruff:
|
|
ruff concrete/ examples/ scripts/ tests/
|
|
|
|
pcc: check-format check-sanitize-notebooks mypy pydocstyle pylint ruff
|
|
|
|
# ============
|
|
# Distribution
|
|
# ============
|
|
|
|
OS=undefined
|
|
ifeq ($(shell uname), Linux)
|
|
OS=linux
|
|
else ifeq ($(shell uname), Darwin)
|
|
OS=darwin
|
|
endif
|
|
|
|
clear-whls:
|
|
rm -rf dist
|
|
|
|
build-whl:
|
|
mkdir -p dist
|
|
$(PIP) wheel --no-deps -w dist .
|
|
|
|
patch-whl-linux:
|
|
GLIBC_VER=$(shell ldd --version | head -n 1 | grep -o '[^ ]*$$'|head|tr '.' '_'); \
|
|
for PLATFORM in manylinux_$${GLIBC_VER}_x86_64 linux_x86_64; do \
|
|
if $(PYTHON) -m auditwheel repair -w dist --plat $$PLATFORM dist/*.whl; then \
|
|
echo Success for $$PLATFORM; \
|
|
break; \
|
|
else \
|
|
echo No repair with $$PLATFORM; \
|
|
fi \
|
|
done
|
|
|
|
patch-whl-darwin:
|
|
delocate-wheel -v dist/*macosx*.whl
|
|
|
|
whl: clear-whls build-whl patch-whl-$(OS)
|