diff --git a/Makefile b/Makefile index c08e84dd..737e4200 100644 --- a/Makefile +++ b/Makefile @@ -1,194 +1,42 @@ # This Makefile is only used by developers. -PYVER:=3 -PYTHON?=python$(PYVER) -VERSION:=$(shell $(PYTHON) setup.py --version) -PLATFORM:=$(shell $(PYTHON) -c "from __future__ import print_function; from distutils.util import get_platform; print(get_platform())") -APPNAME:=$(shell $(PYTHON) setup.py --name) -AUTHOR:=$(shell $(PYTHON) setup.py --author) -MAINTAINER:=$(shell $(PYTHON) setup.py --maintainer) -LAPPNAME:=$(shell echo $(APPNAME)|tr "[A-Z]" "[a-z]") -ARCHIVE_SOURCE_EXT:=gz -ARCHIVE_SOURCE:=$(APPNAME)-$(VERSION).tar.$(ARCHIVE_SOURCE_EXT) -GITUSER:=linkchecker -GITREPO:=$(LAPPNAME) -HOMEPAGE:=$(HOME)/public_html/$(LAPPNAME)-webpage.git -WEB_META:=doc/web/app.yaml -DEBUILDDIR:=$(HOME)/projects/debian/official -DEBORIGFILE:=$(DEBUILDDIR)/$(LAPPNAME)_$(VERSION).orig.tar.$(ARCHIVE_SOURCE_EXT) -DEBPACKAGEDIR:=$(DEBUILDDIR)/$(APPNAME)-$(VERSION) -FILESCHECK_URL:=http://localhost/~calvin/ -SRCDIR:=${HOME}/src -PY_FILES_DIRS:=linkcheck tests *.py linkchecker cgi-bin config doc/examples scripts -MYPY_FILES_DIRS:=linkcheck/HtmlParser linkcheck/checker \ - linkcheck/cache linkcheck/configuration linkcheck/director \ - linkcheck/htmlutil linkcheck/logger linkcheck/network \ - linkcheck/bookmarks linkcheck/plugins linkcheck/parser \ - $(filter-out %2.py,$(wildcard linkcheck/*.py)) \ - cgi-bin/lc.wsgi \ - linkchecker \ - *.py - -TESTS ?= tests -# set test options, eg. to "--verbose" -TESTOPTS= PAGER ?= less -# options to run the pep8 utility -PEP8OPTS:=--repeat --ignore=E211,E501,E225,E301,E302,E241 \ - --exclude="robotparser2.py" -PY2APPOPTS ?= -ifeq ($(shell uname),Darwin) - CHMODMINUSMINUS:= -else - CHMODMINUSMINUS:=-- -endif -# Pytest options: -# - use multiple processes -# - write test results in file -PYTESTOPTS:=-n 4 --resultlog=testresults.txt all: @echo "Read the file doc/install.txt to see how to build and install this package." clean: - -$(PYTHON) setup.py clean --all - rm -f $(LAPPNAME)-out.* *-stamp* - find . -name '*.py[co]' -exec rm -f {} \; - find . -name '*.bak' -exec rm -f {} \; - find . -depth -name '__pycache__' -exec rm -rf {} \; - -distclean: clean - rm -rf build dist $(APPNAME).egg-info - rm -f _$(APPNAME)_configdata.py MANIFEST Packages.gz -# clean aborted dist builds and -out files - rm -f $(LAPPNAME)-out* $(LAPPNAME).prof - rm -f alexa*.log testresults.txt - rm -rf $(APPNAME)-$(VERSION) - rm -rf coverage dist-stamp python-build-stamp* + git clean -fdx locale: $(MAKE) -C po -# to build in the current directory -localbuild: locale - $(PYTHON) setup.py build - -release: distclean releasecheck filescheck - $(MAKE) dist sign register upload homepage tag changelog deb - -tag: - git tag upstream/$(VERSION) - git push --tags origin upstream/$(VERSION) +test: + hatch -e test run tests upload: - twine upload dist/$(ARCHIVE_SOURCE) dist/$(ARCHIVE_SOURCE).asc - + twine upload dist/LinkChecker* homepage: -# update metadata - @echo "version: \"$(VERSION)\"" > $(WEB_META) - @echo "name: \"$(APPNAME)\"" >> $(WEB_META) - @echo "lname: \"$(LAPPNAME)\"" >> $(WEB_META) - @echo "maintainer: \"$(MAINTAINER)\"" >> $(WEB_META) - @echo "author: \"$(AUTHOR)\"" >> $(WEB_META) - git add $(WEBMETA) - -git commit -m "Updated webpage meta info" -# update documentation and man pages - $(MAKE) -C doc man - $(MAKE) -C doc/web release + hatch -e doc run code + hatch -e doc run html -register: - @echo "Register at Python Package Index..." - $(PYTHON) setup.py register - @echo "done." +dist: + hatchling build -deb: -# build a debian package - [ -f $(DEBORIGFILE) ] || cp dist/$(ARCHIVE_SOURCE) $(DEBORIGFILE) - sed -i -e 's/VERSION_$(LAPPNAME):=.*/VERSION_$(LAPPNAME):=$(VERSION)/' $(DEBUILDDIR)/$(LAPPNAME).mak - [ -d $(DEBPACKAGEDIR) ] || (cd $(DEBUILDDIR); \ - patool extract $(DEBORIGFILE); \ - cd $(CURDIR); \ - git checkout debian; \ - cp -r debian $(DEBPACKAGEDIR); \ - rm -f $(DEBPACKAGEDIR)/debian/.gitignore; \ - git checkout master) - $(MAKE) -C $(DEBUILDDIR) $(LAPPNAME)_clean $(LAPPNAME) - -chmod: - -chmod -R a+rX,u+w,go-w $(CHMODMINUSMINUS) * - find . -type d -exec chmod 755 {} \; - -dist: locale chmod - rm -f dist/$(ARCHIVE_SOURCE) - $(PYTHON) setup.py sdist --formats=tar - gzip --best dist/$(APPNAME)-$(VERSION).tar - -# The check programs used here are mostly local scripts on my private system. -# So for other developers there is no need to execute this target. check: - check-copyright - check-pofiles -v - py-tabdaddy $(MYPY_FILES_DIRS) - py-unittest2-compat tests/ - $(MAKE) -C doc check - $(MAKE) doccheck - $(MAKE) pyflakes - -doccheck: - py-check-docstrings --force $(MYPY_FILES_DIRS) - -filescheck: localbuild - for out in text html gml sql csv xml gxml dot sitemap; do \ - ./$(LAPPNAME) -o$$out -F$$out --complete -r1 -C $(FILESCHECK_URL) || exit 1; \ - done - -update-copyright: - update-copyright --holder="Bastian Kleineidam" $(PY_FILES_DIRS) + flake8 + make -C doc check + make -C po check releasecheck: check - @if egrep -i "xx\.|xxxx|\.xx" doc/changelog.txt > /dev/null; then \ + @if egrep -i "xx\.|xxxx|\.xx|^[[:digit:]]+\.x" doc/changelog.txt > /dev/null; then \ echo "Could not release: edit doc/changelog.txt release date"; false; \ fi - $(PYTHON) setup.py check --restructuredtext - -sign: - for f in $(shell find dist -name *.$(ARCHIVE_SOURCE_EXT) -o -name *.exe -o -name *.zip -o -name *.dmg); do \ - [ -f $${f}.asc ] || gpg --detach-sign --armor $$f; \ - done - -test: localbuild - env LANG=en_US.utf-8 $(PYTHON) -m pytest $(PYTESTOPTS) $(TESTOPTS) $(TESTS) - -pyflakes: - pyflakes $(PY_FILES_DIRS) 2>&1 | \ - grep -v "local variable 'dummy' is assigned to but never used" | \ - grep -v -E "'(setuptools|win32com|find_executable|parse_sitemap|parse_sitemapindex|parse_bookmark_data|parse_bookmark_file|wsgiref|pyftpdlib|linkchecker_rc)' imported but unused" | \ - grep -v "undefined name '_'" | \ - grep -v "undefined name '_n'" | cat - -pep8: - pep8 $(PEP8OPTS) $(PY_FILES_DIRS) - -# Compare custom Python files with the originals -diff: - @for f in gzip robotparser; do \ - echo "Comparing $${f}.py"; \ - diff -u linkcheck/$${f}2.py $(SRCDIR)/cpython.hg/Lib/$${f}.py | $(PAGER); \ - done - @diff -u linkcheck/better_exchook.py $(SRCDIR)/py_better_exchook.git/better_exchook.py - -changelog: - github-changelog $(DRYRUN) $(GITUSER) $(GITREPO) doc/changelog.txt count: - @sloccount linkchecker linkcheck tests + @sloccount linkcheck tests -# run eclipse ide -ide: - eclipse -data $(CURDIR)/.. -.PHONY: test changelog count pyflakes ide login upload all clean distclean -.PHONY: pep8 cleandeb locale localbuild deb diff dnsdiff sign -.PHONY: filescheck update-copyright releasecheck check register announce -.PHONY: chmod dist release homepage +.PHONY: test count upload all clean +.PHONY: locale dist homepage