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
|
#!/usr/bin/make -f
export PYTHONWARNINGS=d
export PYTHONHASHSEED=random
-include /usr/share/python/python.mk
scripts = \
rst-buildhtml \
rst2html \
rst2html4 \
rst2html5 \
rst2latex \
rst2man \
rst2odt \
rst2odt_prepstyles \
rst2pseudoxml \
rst2s5 \
rst2xetex \
rst2xml \
rstpep2html \
pre_localize_css = 's,href="(([.][.]/)*)docutils/.*/([^/]+[.]css)",href="$$1css/$$3",g;'
pre_strip_images1 = 's,<img src="http://[^"]+" alt="([^"]*)"[^>]*>,$$1,g;'
pre_strip_images2 = 's,<img alt="([^"]*)"[^>]*\bsrc="http://[^"]+"[^>]*>,$$1,g;'
pre_strip_images = $(pre_strip_images1)$(pre_strip_images2)
python_all = pyversions -r | tr ' ' '\n' | xargs -t -I {} env {}
python3_all = $(patsubst py%,py3%,$(python_all))
build build-indep: build-stamp
build-stamp:
dh_testdir
# Remove convenience copy of the roman module
rm -f docutils/utils/roman.py
# Check if move-data-to-usr-share.diff is up-to-date
if grep -r __file__ --include='*.py' docutils/ | grep -vw _datadir; then \
echo "Error: Some uses of __file__ are not guarded by _datadir()." \
"Is move-data-to-usr-share.diff up-to-date?"; \
exit 1; \
fi
# Build modules for Python 2.X
python setup.py build --build-lib=build/py2/
ifeq "$(filter nocheck,$(DEB_BUILD_OPTIONS))" ""
# Run test suite for Python 2.X:
$(python_all) test/alltests.py --verbose
# Run rst-buildhtml tests:
PYTHONPATH=$(CURDIR)/build/py2 python tools/test/test_buildhtml.py --verbose
endif
# Build modules for Python 3.X
python3 setup.py build --build-lib=build/py3/
ifeq "$(filter nocheck,$(DEB_BUILD_OPTIONS))" ""
# Run test suite for Python 3.X:
$(python3_all) test3/alltests.py --verbose
endif
# Build documentation:
PYTHONPATH=. python tools/buildhtml.py \
--local --link-stylesheet --traceback \
.
PYTHONPATH=. python tools/buildhtml.py \
--link-stylesheet --traceback \
docs
( ls *.html && find docs/ -name '*.html' ) \
| xargs perl -0777 -p -i -e $(pre_localize_css)$(pre_strip_images)
touch build-stamp
clean:
dh_testdir
rm -f build-stamp
rm -rf build/
find -name '*.py[co]' -delete
rm -f *.html
find docs -name '*.html' -not -name 'quickref.html' -delete
rm -rf docutils.egg-info
cd test && rm -rf alltests.out record.txt functional/output/*/ functional/output/[a-z]*.*
rm -rf test3/
dh_clean
install: build
dh_testdir
dh_testroot
dh_installdirs
mkdir -p debian/tmp
python setup.py build --build-lib=build/py2/ install \
--root debian/tmp --no-compile $(py_setup_install_args) \
--install-scripts=/usr/share/docutils/scripts/python2/
python3 setup.py build --build-lib=build/py3/ install \
--root debian/tmp --no-compile $(py_setup_install_args) \
--install-scripts=/usr/share/docutils/scripts/python3/
# Move data files outside dist-packages:
mkdir -p debian/tmp/usr/share/
cp -rlf debian/tmp/usr/lib/python2.*/*-packages/docutils debian/tmp/usr/share/
find debian/tmp/usr/lib/python[23]*/*-packages/docutils/ -type f '!' -name '*.py' -delete
find debian/tmp/usr/share/docutils/ \( -name '*.py' -o -name '*.py[co]' \) '!' -path '*/scripts/*' -delete
find debian/tmp/ -type d -empty -delete
sed -i -e 's/^\(_debian_package\) = /\1 = 1/' debian/tmp/usr/lib/python[23]*/*-packages/docutils/__init__.py
# Give scripts canonical names
# Temporarily symlink rst2html4 to rst2html, remove this with the next release
mkdir -p debian/tmp/usr/share/docutils/scripts/python2/
set -ex && for python in python2 python3; do \
dir=debian/tmp/usr/share/docutils/scripts/$$python/; \
for exe in $(filter-out rst-buildhtml rst2html4,$(scripts)); do \
mv $$dir/$$exe.py $$dir/$$exe; \
done; \
ln -s rst2html $$dir/rst2html4; \
install tools/buildhtml.py $$dir/rst-buildhtml; \
sed -i -e "1 s,^#!.*,#!/usr/bin/$${python%2}," $$dir/rst-buildhtml; \
done
: # Make the man pages (we want to do this *after* renaming all the
: # tools, because their executable name goes into the --help output)
mkdir -p debian/tmp/man/
set -ex && for exe in $(filter-out rst2odt_prepstyles,$(scripts)); do \
export PYTHONPATH=.; \
cp debian/$$exe.txt debian/tmp/man/$$exe.txt; \
python debian/tmp/usr/share/docutils/scripts/python2/$$exe --help | \
sed \
-e '1 s/^Usage$$/Synopsis/' \
-e 's/^=/====/' \
-e '3 s/^ //' \
-e '4 a Description' \
-e '4 a ===========' \
>> debian/tmp/man/$$exe.txt;\
python tools/rst2man.py debian/tmp/man/$$exe.txt \
debian/tmp/man/$$exe.1; \
done
PYTHONPATH=. python tools/rst2man.py debian/rst2odt_prepstyles.txt \
debian/tmp/man/rst2odt_prepstyles.1
sed -i -e 's,"\(docutils/writers/\),"/usr/share/\1,g' debian/tmp/man/*
# Build architecture-independent files here.
binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs -XCOPYING
mkdir -p debian/docutils-doc/usr/share/doc/python-docutils/
cd debian/docutils-doc/usr/share/doc/python-docutils/ && ln -sf ../docutils-doc/*.html .
dh_install -p docutils-common -X /scripts/
dh_install -N docutils-common
dh_lintian
dh_python2 -p python-docutils
dh_python3 -p python3-docutils
dh_installexamples
dh_installcatalogs
dh_installxmlcatalogs
dh_installman
dh_installchangelogs
dh_link
dh_compress -p docutils-doc -X.dtd -X.html -X.txt
dh_compress -N docutils-doc
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
build-arch binary-arch:
# We have nothing to do by default.
binary: binary-indep binary-arch
.PHONY: build build-arch build-indep clean binary-indep binary-arch binary install configure
|