Distribute improved Makefile
authorKarl O. Pinc <kop@karlpinc.com>
Sun, 4 Aug 2024 17:12:05 +0000 (12:12 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Sun, 4 Aug 2024 17:41:56 +0000 (12:41 -0500)
src/pgwui_develop/TEMPLATE/Makefile_pgwui.mk

index ee23a59726df143f72731ac8f6bfa8580554af4a..1cc26bca365d019ca50e0d51516f74d36c7f21b5 100644 (file)
 
 
 # This works on debian...
-PYTHON_EXE=python3
-VIRTUALENV=${PYTHON_EXE} -m venv
+PYTHON_EXE := python3
+VIRTUALENV := $(PYTHON_EXE) -m venv
 # (Optional) where pyenv is installed (git clone somepath)
 # For running tox against multiple python versions
 PYENV_INSTALLATION := $(HOME)/.pyenv
 PYENV_BIN := $(PYENV_INSTALLATION)/bin
 
 TARGETS =
-EXTRA_TARGETS = README.html
-SETUPTOOLS_STUFF = build dist src/${PGWUI_COMPONENT}.egg-info
-PYTEST_STUFF = .cache                                      \
+EXTRA_TARGETS := README.html
+SETUPTOOLS_STUFF := build dist src/${PGWUI_COMPONENT}.egg-info
+PYTEST_STUFF := .cache                                      \
             src/${PGWUI_COMPONENT}/__pycache__            \
             src/${PGWUI_COMPONENT}/views/__pycache__      \
             tests/__pycache__ tests/views/__pycache__
-COVERAGE_STUFF = .coverage
-TOX_STUFF = .tox
+COVERAGE_STUFF := .coverage
+TOX_STUFF := .tox
 
 include help.mk
 
@@ -67,7 +67,7 @@ publish: check-manifest upload push
 
 ## run_tests           Run regression tests
 .PHONY: run_tests
-run_tests: devel/testenv
+run_tests: devel/testenv dist
        if [ -x $(PYENV_BIN)/pyenv ] ; then \
          (set -e ; \
           export PYENV_ROOT=$(PYENV_INSTALLATION) ; \
@@ -121,22 +121,19 @@ upload:
 ## check               Quick run of all regression tests,
 ##                     only with the default python
 .PHONY: check
-check: devel/pytest
-       devel/pytest/bin/flake8 .
+check: devel/pytest run-linters
        devel/pytest/bin/py.test --cov=${PGWUI_COMPONENT} tests
 
 ## check-unit          Quick run of unit regression tests,
 ##                     only with the default python
 .PHONY: check-unit
-check-unit: devel/pytest
-       devel/pytest/bin/flake8 .
+check-unit: devel/pytest run-linters
        devel/pytest/bin/py.test -m unittest --cov=${PGWUI_COMPONENT} tests
 
 ## check-integration   Quick run of integration regression tests,
 ##                     only with the default python
 .PHONY: check-integration
-check-integration: devel/pytest
-       devel/pytest/bin/flake8 .
+check-integration: devel/pytest run-linters
        devel/pytest/bin/py.test -m integrationtest \
                                 --cov=${PGWUI_COMPONENT} tests
 
@@ -146,8 +143,7 @@ check-integration: devel/pytest
 ##                        FILE=test_mymodule.py TEST=test_somefunction \
 ##                          make check-debug
 .PHONY: check-debug
-check-debug: devel/pytest
-       devel/pytest/bin/flake8 .
+check-debug: devel/pytest run-linters
        devel/pytest/bin/py.test --trace tests/${FILE}::${TEST}
 
 ## pudb                Run the python pudb debugger
@@ -186,14 +182,24 @@ update_testenv: devel/testenv
 
 
 # Development related targets
+DEVEL_DEPS := setup.py pyproject.toml MANIFEST.in
+
+# Run linters
+.PHONY: run-linters
+run-linters: devel/pytest
+       devel/pytest/bin/flake8 .
+       if [ -e .yamllint.yaml ] ; then \
+         devel/pytest/bin/yamllint --strict . ; \
+       fi
 
 # Re-create development environment when build environment changes
-devel: setup.py pyproject.toml MANIFEST.in
+devel: $(DEVEL_DEPS)
        rm -rf devel ${TOX_STUFF}
-       mkdir devel
+       mkdir -p devel
 
 # virtualenv for package building
-devel/buildenv: devel
+devel/buildenv: $(DEVEL_DEPS)
+       mkdir -p devel
        [ -d devel/buildenv ] \
          || ( ${VIRTUALENV} devel/buildenv ; \
               devel/buildenv/bin/pip install --upgrade pip ; \
@@ -202,7 +208,8 @@ devel/buildenv: devel
             )
 
 # virtualenv for development
-devel/testenv: devel
+devel/testenv:  $(DEVEL_DEPS)
+       mkdir -p devel
        [ -d devel/testenv ] \
          || ( ${VIRTUALENV} devel/testenv ; \
               devel/testenv/bin/pip install --upgrade pip ; \
@@ -211,8 +218,9 @@ devel/testenv: devel
               devel/testenv/bin/pip install -e '.[test]' ; \
             )
 
-# virtualenv for pytest
-devel/pytest: devel dist
+# virtualenv for pytest and other code tests
+devel/pytest: $(DEVEL_DEPS)
+       mkdir -p devel
        if [ ! -d devel/pytest ] ; then \
           ( ${VIRTUALENV} devel/pytest ; \
             devel/pytest/bin/pip install --upgrade pip ; \
@@ -220,6 +228,9 @@ devel/pytest: devel dist
             devel/pytest/bin/pip install --upgrade wheel ; \
             devel/pytest/bin/pip install dist/${PGWUI_COMPONENT}-*.tar.gz ; \
             devel/pytest/bin/pip install flake8 ; \
+            if [ -e .yamllint.yaml ] ; then \
+              devel/pytest/bin/pip install yamllint ; \
+            fi ; \
             devel/pytest/bin/pip install pytest-cov ; \
             devel/pytest/bin/pip install -e '.[test]' ; \
           ) \
@@ -231,7 +242,8 @@ devel/pytest: devel dist
        fi
 
 # virtualenv for pudb
-devel/pudb: devel dist
+devel/pudb: $(DEVEL_DEPS)
+       mkdir -p devel
        if [ ! -d devel/pudb ] ; then \
          ( ${VIRTUALENV} devel/pudb ; \
            devel/pudb/bin/pip install --upgrade pip ; \