1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
# This Makefile is only used by developers.
PYVER=2.5
PYTHON=python$(PYVER)
VERSION=$(shell $(PYTHON) setup.py --version)
HOST=www.debian.org
LCOPTS=-Ftext -Fhtml -Fgml -Fsql -Fcsv -Fxml -Fgxml -Fdot -v -r1 -C
PYTHONSVN=/home/calvin/src/python-svn
PY_FILES_DIRS=linkcheck tests scripts *.py linkchecker gui cgi-bin config doc
# build dir for svn-buildpackage
SVNBUILD=/home/calvin/src/build-area
DEB_ORIG_TARGET=$(SVNBUILD)/linkchecker_$(VERSION).orig.tar.gz
.PHONY: all
all:
@echo "Read the file doc/install.txt to see how to build and install this package."
.PHONY: clean
clean:
# ignore errors of this command
-$(PYTHON) setup.py clean --all
rm -f *-stamp*
$(MAKE) -C po clean
$(MAKE) -C doc clean
$(MAKE) -C doc/en clean
$(MAKE) -C linkcheck/HtmlParser clean
rm -f linkcheck/ftpparse/_ftpparse.so
find . -name '*.py[co]' -exec rm -f {} \;
.PHONY: distclean
distclean: clean cleandeb
# just to be sure clean also the build dir
rm -rf build
rm -f _linkchecker_configdata.py MANIFEST Packages.gz
# clean aborted dist builds and -out files
rm -f linkchecker-out* linkchecker.prof
rm -rf linkchecker-$(VERSION)
rm -rf coverage dist-stamp python-build-stamp*
.PHONY: cleandeb
cleandeb:
rm -rf debian/linkchecker debian/tmp
rm -f debian/*.debhelper debian/{files,substvars}
rm -f configure-stamp build-stamp
MANIFEST: MANIFEST.in setup.py
$(MAKE) -C doc/en all nav
$(PYTHON) setup.py sdist --manifest-only
.PHONY: locale
locale:
$(MAKE) -C po
# to build in the current directory
.PHONY: localbuild
localbuild: MANIFEST
$(MAKE) -C linkcheck/HtmlParser
$(PYTHON) setup.py build
cp -f build/lib.linux-i686-$(PYVER)/linkcheck/HtmlParser/htmlsax.so linkcheck/HtmlParser
cp -f build/lib.linux-i686-$(PYVER)/linkcheck/ftpparse/_ftpparse.so linkcheck/ftpparse
.PHONY: deb_orig
deb_orig:
if [ ! -e $(DEB_ORIG_TARGET) ]; then \
$(MAKE) dist-stamp && \
cp dist/linkchecker-$(VERSION).tar.gz $(DEB_ORIG_TARGET); \
fi
# ready for upload, signed with my GPG key
.PHONY: deb_signed
deb_signed: cleandeb
(env -u LANG svn-buildpackage --svn-dont-clean --svn-verbose \
--svn-ignore --svn-prebuild="$(MAKE) deb_orig" --svn-lintian \
-sgpg -pgpg -k$(GPGKEY) -rfakeroot 2>&1) | \
tee $(SVNBUILD)/linkchecker-$(VERSION).build
.PHONY: files
files: locale localbuild
-scripts/run.sh linkchecker $(LCOPTS) http://$(HOST)/
rm -f linkchecker-out.*.gz
for f in linkchecker-out.*; do gzip --best $$f; done
.PHONY: upload
upload:
@echo "Starting releaseforge..."
@releaseforge
# ncftpput upload.sourceforge.net /incoming dist/*
# mozilla -remote "openUrl(https://sourceforge.net/projects/linkchecker, new-tab)"
# @echo "Make SF release and press return..."
# @read
.PHONY: release
release: distclean releasecheck dist-stamp sign_distfiles homepage upload
@echo "Uploading new LinkChecker Homepage..."
$(MAKE) -C ~/public_html/linkchecker.sf.net upload
@echo "Register at Python Package Index..."
$(PYTHON) setup.py register
.PHONY: homepage
homepage:
$(MAKE) -C doc/en homepage
.PHONY: chmod
chmod:
-chmod -R a+rX,u+w,go-w -- *
find . -type d -exec chmod 755 {} \;
.PHONY: dist
dist: locale MANIFEST chmod
$(PYTHON) setup.py sdist --formats=gztar bdist_rpm
dist-stamp: changelog
$(MAKE) dist
touch $@
# 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.
.PHONY: check
check:
[ ! -d .svn ] || check-nosvneolstyle -v
check-copyright
check-pofiles -v
py-tabdaddy -v
$(MAKE) pyflakes
.PHONY: releasecheck
releasecheck: check
@if egrep -i "xx\.|xxxx|\.xx" ChangeLog.txt > /dev/null; then \
echo "Could not release: edit ChangeLog.txt release date"; false; \
fi
$(MAKE) -C doc/en test
.PHONY: sign_distfiles
sign_distfiles:
for f in dist/*; do \
if [ ! -f $${f}.asc ]; then \
gpg --detach-sign --armor $$f; \
fi; \
done
.PHONY: test
test: localbuild
scripts/test.sh
.PHONY: pyflakes
pyflakes:
pyflakes 2>&1 | \
grep -v "redefinition of unused 'linkcheck'" | \
grep -v "undefined name '_'" | \
grep -v "undefined name '_n'" | cat
.PHONY: reindent
reindent:
$(PYTHON) config/reindent.py -r -v linkcheck
# Compare custom Python files with the original ones from subversion.
.PHONY: diff
diff:
@for f in gzip robotparser httplib; do \
echo "Comparing $${f}.py"; \
diff -u linkcheck/$${f}2.py $(PYTHONSVN)/Lib/$${f}.py | less; \
done
.PHONY: changelog
changelog:
sftrack_changelog linkchecker calvin@users.sourceforge.net ChangeLog.txt
|