distutils: Create MANIFEST.in instead of MANIFEST in Makefile
authorStephen Thorne <stephen@thorne.id.au>
Thu, 09 Jun 2011 10:15:24 +1000
changeset 14558 2ce7dfe17bc5
parent 14557 f966979f61ce
child 14559 e29821ca94cf
distutils: Create MANIFEST.in instead of MANIFEST in Makefile When running 'python setup.py sdist' many files were omitted from the resulting tarball that are required for a complete build, including the .h file for the inotify extension due to a python2.7+ distutils bug. This would cause 'make dist' to fail to build a correct dist on python2.7 By building a MANIFEST.in that is the same as the old MANIFEST with 'include' at the start of each line will cause a correct MANIFEST to be built and used by distutils.
Makefile
--- a/Makefile	Thu Jun 09 18:39:14 2011 +0200
+++ b/Makefile	Thu Jun 09 10:15:24 2011 +1000
@@ -46,7 +46,7 @@
 	-$(PYTHON) setup.py clean --all # ignore errors from this command
 	find . \( -name '*.py[cdo]' -o -name '*.so' \) -exec rm -f '{}' ';'
 	rm -f $(addprefix mercurial/,$(notdir $(wildcard mercurial/pure/*.py)))
-	rm -f MANIFEST tests/*.err
+	rm -f MANIFEST MANIFEST.in tests/*.err
 	rm -rf build mercurial/locale
 	$(MAKE) -C doc clean
 
@@ -69,14 +69,14 @@
 MANIFEST-doc:
 	$(MAKE) -C doc MANIFEST
 
-MANIFEST: MANIFEST-doc
-	hg manifest > MANIFEST
-	echo mercurial/__version__.py >> MANIFEST
-	cat doc/MANIFEST >> MANIFEST
+MANIFEST.in: MANIFEST-doc
+	hg manifest | sed -e 's/^/include /' > MANIFEST.in
+	echo include mercurial/__version__.py >> MANIFEST.in
+	sed -e 's/^/include /' < doc/MANIFEST >> MANIFEST.in
 
 dist:	tests dist-notests
 
-dist-notests:	doc MANIFEST
+dist-notests:	doc MANIFEST.in
 	TAR_OPTIONS="--owner=root --group=root --mode=u+w,go-w,a+rX-s" $(PYTHON) setup.py -q sdist
 
 check: tests