[Reproducible-builds] [dh-python] 29/183: add PyPy support
Jérémy Bobbio
lunar at moszumanska.debian.org
Fri Sep 19 15:30:16 UTC 2014
This is an automated email from the git hooks/post-receive script.
lunar pushed a commit to branch pu/reproducible_builds
in repository dh-python.
commit 7959b9d92641df5ef1994d6a84d667fb339fb489
Author: Piotr Ożarowski <piotr at debian.org>
Date: Tue Jul 2 21:41:27 2013 +0200
add PyPy support
---
Makefile | 5 +-
autoscripts/postinst-pypycompile | 5 +
autoscripts/prerm-pypyclean | 6 +
debian/manpages | 1 +
dh/pypy.pm | 10 ++
dh_pypy | 243 +++++++++++++++++++++++++++++++++++++++
dh_pypy.rst | 119 +++++++++++++++++++
tests/Makefile | 2 +-
tests/common.mk | 2 +
tests/t101/Makefile | 17 +++
tests/t101/debian/changelog | 5 +
tests/t101/debian/compat | 1 +
tests/t101/debian/control | 13 +++
tests/t101/debian/copyright | 2 +
tests/t101/debian/rules | 18 +++
tests/t101/debian/source/format | 1 +
16 files changed, 448 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 63e1a12..9ae5d0b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
#!/usr/bin/make -f
INSTALL ?= install
PREFIX ?= /usr/local
-MANPAGES ?= pybuild.1 dh_python2.1 dh_python3.1
+MANPAGES ?= pybuild.1 dh_pypy.1 dh_python2.1 dh_python3.1
DVERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: (.+),\1,p' || echo 'DEVEL')
VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: ([^-]+).*,\1,p' || echo 'DEVEL')
@@ -25,13 +25,16 @@ install:
$(INSTALL) -m 644 dhpython/*.py $(DESTDIR)$(PREFIX)/share/dh-python/dhpython/
$(INSTALL) -m 644 dhpython/build/*.py $(DESTDIR)$(PREFIX)/share/dh-python/dhpython/build/
$(INSTALL) -m 755 pybuild $(DESTDIR)$(PREFIX)/bin/
+ $(INSTALL) -m 755 dh_pypy $(DESTDIR)$(PREFIX)/share/dh-python/
$(INSTALL) -m 755 dh_python2 $(DESTDIR)$(PREFIX)/bin/
$(INSTALL) -m 755 dh_python3 $(DESTDIR)$(PREFIX)/bin/
sed -i -e 's/DEVELV/$(DVERSION)/' $(DESTDIR)$(PREFIX)/bin/pybuild
+ sed -i -e 's/DEVELV/$(DVERSION)/' $(DESTDIR)$(PREFIX)/share/dh-python/dh_pypy
sed -i -e 's/DEVELV/$(DVERSION)/' $(DESTDIR)$(PREFIX)/bin/dh_python2
sed -i -e 's/DEVELV/$(DVERSION)/' $(DESTDIR)$(PREFIX)/bin/dh_python3
$(INSTALL) -m 644 dh/pybuild.pm $(DESTDIR)$(PREFIX)/share/perl5/Debian/Debhelper/Buildsystem/
+ $(INSTALL) -m 644 dh/pypy.pm $(DESTDIR)$(PREFIX)/share/perl5/Debian/Debhelper/Sequence/
$(INSTALL) -m 644 dh/python2.pm $(DESTDIR)$(PREFIX)/share/perl5/Debian/Debhelper/Sequence/
$(INSTALL) -m 644 dh/python3.pm $(DESTDIR)$(PREFIX)/share/perl5/Debian/Debhelper/Sequence/
$(INSTALL) -m 644 autoscripts/* $(DESTDIR)$(PREFIX)/share/debhelper/autoscripts/
diff --git a/autoscripts/postinst-pypycompile b/autoscripts/postinst-pypycompile
new file mode 100644
index 0000000..1db399c
--- /dev/null
+++ b/autoscripts/postinst-pypycompile
@@ -0,0 +1,5 @@
+if which pypycompile >/dev/null 2>&1; then
+ pypycompile -p #PACKAGE# #ARGS#
+elif pypy -m py_compile >/dev/null 2>&1; then
+ dpkg -L #PACKAGE# | grep '\.py$' | pypy -m py_compile - >/dev/null
+fi
diff --git a/autoscripts/prerm-pypyclean b/autoscripts/prerm-pypyclean
new file mode 100644
index 0000000..e6d7d3e
--- /dev/null
+++ b/autoscripts/prerm-pypyclean
@@ -0,0 +1,6 @@
+if which pypyclean >/dev/null 2>&1; then
+ pypyclean -p #PACKAGE# #ARGS#
+else
+ dpkg -L #PACKAGE# | grep '\.py$' | sed -r 's,/([^/]*).py$,/__pycache__/\1\.*,' | xargs rm
+ find /usr/lib/pypy/dist-packages/ -type d -name __pycache__ -empty | xargs rmdir
+fi
diff --git a/debian/manpages b/debian/manpages
index 881b6a3..820706e 100644
--- a/debian/manpages
+++ b/debian/manpages
@@ -1,3 +1,4 @@
pybuild.1
dh_python2.1
+dh_pypy.1
dh_python3.1
diff --git a/dh/pypy.pm b/dh/pypy.pm
new file mode 100644
index 0000000..7d1c58c
--- /dev/null
+++ b/dh/pypy.pm
@@ -0,0 +1,10 @@
+#! /usr/bin/perl
+# debhelper sequence file for dh_pypy
+
+use warnings;
+use strict;
+use Debian::Debhelper::Dh_Lib;
+
+insert_before("dh_installinit", "dh_pypy");
+
+1
diff --git a/dh_pypy b/dh_pypy
new file mode 100755
index 0000000..962cc28
--- /dev/null
+++ b/dh_pypy
@@ -0,0 +1,243 @@
+#! /usr/bin/python3
+# vim: et ts=4 sw=4
+
+# Copyright © 2013 Piotr Ożarowski <piotr at debian.org>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+import logging
+import os
+import re
+import sys
+from optparse import OptionParser, SUPPRESS_HELP
+from os.path import exists, join
+from shutil import copy as fcopy
+from dhpython.debhelper import DebHelper
+from dhpython.depends import Dependencies
+from dhpython.interpreter import Interpreter, EXTFILE_RE
+from dhpython.version import supported, default, Version, VersionRange
+from dhpython.pydist import validate as validate_pydist
+from dhpython.fs import fix_locations, Scan
+from dhpython.option import Option
+
+# initialize script
+logging.basicConfig(format='%(levelname).1s: dh_pypy '
+ '%(module)s:%(lineno)d: %(message)s')
+log = logging.getLogger('dhpython')
+os.umask(0o22)
+DEFAULT = default('pypy')
+SUPPORTED = supported('pypy')
+
+
+class Scanner(Scan):
+ def handle_ext(self, fpath):
+ path, fname = fpath.rsplit('/', 1)
+ tagver = EXTFILE_RE.search(fname)
+ if tagver is None:
+ return
+ tagver = tagver.groupdict()['ver']
+ if tagver is None:
+ return
+ tagver = Version("%s.%s" % (tagver[0], tagver[1]))
+ return tagver
+
+
+def main():
+ usage = '%prog -p PACKAGE [-V [X.Y][-][A.B]] DIR [-X REGEXPR]\n'
+ parser = OptionParser(usage, version='%prog DEVELV', option_class=Option)
+ parser.add_option('--no-guessing-deps', action='store_false',
+ dest='guess_deps', default=True,
+ help='disable guessing dependencies')
+ parser.add_option('--skip-private', action='store_true', default=False,
+ help='don\'t check private directories')
+ parser.add_option('-v', '--verbose', action='store_true', default=False,
+ help='turn verbose mode on')
+ # arch=False->arch:all only, arch=True->arch:any only, None->all of them
+ parser.add_option('-i', '--indep', action='store_false',
+ dest='arch', default=None,
+ help='act on architecture independent packages')
+ parser.add_option('-a', '-s', '--arch', action='store_true',
+ dest='arch', help='act on architecture dependent packages')
+ parser.add_option('-q', '--quiet', action='store_false', dest='verbose',
+ help='be quiet')
+ parser.add_option('-p', '--package', action='append',
+ help='act on the package named PACKAGE')
+ parser.add_option('-N', '--no-package', action='append',
+ help='do not act on the specified package')
+ parser.add_option('--compile-all', action='store_true', default=False,
+ help='compile all files from given private directory '
+ 'in postinst, not just the ones provided by the '
+ 'package')
+ parser.add_option('-V', type='version_range', dest='vrange',
+ #help='specify list of supported PyPy versions. ' +
+ # 'See pypycompile(1) for examples',
+ help=SUPPRESS_HELP)
+ parser.add_option('-X', '--exclude', action='append', dest='regexpr',
+ help='exclude items that match given REGEXPR. You may '
+ 'use this option multiple times to build up a list'
+ ' of things to exclude.')
+ parser.add_option('--depends', action='append',
+ help='translate given requirements into Debian '
+ 'dependencies and add them to ${pypy:Depends}. '
+ 'Use it for missing items in requires.txt.')
+ parser.add_option('--recommends', action='append',
+ help='translate given requirements into Debian '
+ 'dependencies and add them to ${pypy:Recommends}')
+ parser.add_option('--suggests', action='append',
+ help='translate given requirements into Debian '
+ 'dependencies and add them to ${pypy:Suggests}')
+ parser.add_option('--shebang',
+ help='use given command as shebang in scripts')
+ parser.add_option('--ignore-shebangs', action='store_true', default=False,
+ help='do not translate shebangs into Debian dependencies')
+ parser.add_option('--no-dbg-cleaning', action='store_false',
+ dest='clean_dbg_pkg', default=True,
+ help='do not remove files from debug packages')
+ parser.add_option('--no-shebang-rewrite', action='store_true',
+ default=False, help='do not rewrite shebangs')
+ # ignore some debhelper options:
+ parser.add_option('-O', help=SUPPRESS_HELP)
+
+ options, args = parser.parse_args(sys.argv[1:] +
+ os.environ.get('DH_OPTIONS', '').split())
+ # regexpr option type is not used so lets check patterns here
+ for pattern in options.regexpr or []:
+ # fail now rather than at runtime
+ try:
+ pattern = re.compile(pattern)
+ except Exception:
+ log.error('regular expression is not valid: %s', pattern)
+ exit(1)
+
+ if not args:
+ private_dir = None
+ else:
+ private_dir = args[0]
+ if not private_dir.startswith('/'):
+ # handle usr/share/foo dirs (without leading slash)
+ private_dir = '/' + private_dir
+ # TODO: support more than one private dir at the same time (see :meth:scan)
+ if options.skip_private:
+ private_dir = False
+
+ if options.verbose or os.environ.get('DH_VERBOSE') == '1':
+ log.setLevel(logging.DEBUG)
+ log.debug('argv: %s', sys.argv)
+ log.debug('options: %s', options)
+ log.debug('args: %s', args)
+ log.debug('supported PyPy versions: %s (default=%s)',
+ ','.join(str(v) for v in SUPPORTED), DEFAULT)
+ else:
+ log.setLevel(logging.INFO)
+
+ try:
+ dh = DebHelper(options, impl='pypy')
+ except Exception as e:
+ log.error('cannot initialize DebHelper: %s', e)
+ exit(2)
+ if not options.vrange and dh.python_version:
+ options.vrange = VersionRange(dh.python_version)
+
+ interpreter = Interpreter('pypy')
+ for package, pdetails in dh.packages.items():
+ if options.arch is False and pdetails['arch'] != 'all' or \
+ options.arch is True and pdetails['arch'] == 'all':
+ continue
+ log.debug('processing package %s...', package)
+ if package.endswith('-dbg'):
+ interpreter.debug = True
+
+ if not private_dir:
+ fix_locations(package, interpreter, SUPPORTED)
+ stats = Scanner(interpreter, package, private_dir, options).result
+
+ dependencies = Dependencies(package, 'pypy')
+ dependencies.parse(stats, options)
+
+ if stats['ext_vers']:
+ dh.addsubstvar(package, 'pypy:Versions',
+ ', '.join(str(v) for v in sorted(stats['ext_vers'])))
+ ps = package.split('-', 1)
+ if len(ps) > 1 and ps[0] == 'pypy':
+ dh.addsubstvar(package, 'pypy:Provides',
+ ', '.join("pypy%s-%s" % (i, ps[1])
+ for i in sorted(stats['ext_vers'])))
+
+ pypyclean_added = False # invoke pypyclean only once in maintainer script
+ if stats['compile']:
+ args = ''
+ if options.vrange:
+ args += "-V %s" % options.vrange
+ dh.autoscript(package, 'postinst', 'postinst-pypycompile', args)
+ dh.autoscript(package, 'prerm', 'prerm-pypyclean', '')
+ pypyclean_added = True
+ for pdir, details in stats['private_dirs'].items():
+ if not details.get('compile'):
+ continue
+ if not pypyclean_added:
+ dh.autoscript(package, 'prerm', 'prerm-pypyclean', '')
+ pypyclean_added = True
+
+ args = pdir
+
+ ext_for = details.get('ext_vers')
+ ext_no_version = details.get('ext_no_version')
+ if ext_for is None and not ext_no_version: # no extension
+ shebang_versions = list(i.version for i in details.get('shebangs', [])
+ if i.version and i.version.minor)
+ if not options.ignore_shebangs and len(shebang_versions) == 1:
+ # only one version from shebang
+ args += " -V %s" % shebang_versions[0]
+ elif options.vrange and options.vrange != (None, None):
+ args += " -V %s" % options.vrange
+ elif ext_no_version:
+ # at least one extension's version not detected
+ if options.vrange and '-' not in str(options.vrange):
+ ver = str(options.vrange)
+ else: # try shebang or default PyPy version
+ ver = (list(i.version for i in details.get('shebangs', [])
+ if i.version) or [None])[0] or DEFAULT
+ dependencies.depend("pypy%s" % ver)
+ args += " -V %s" % ver
+ else:
+ extensions = sorted(ext_for)
+ vr = VersionRange(minver=extensions[0], maxver=extensions[-1])
+ args += " -V %s" % vr
+
+ for pattern in options.regexpr or []:
+ args += " -X '%s'" % pattern.replace("'", r"'\''")
+
+ dh.autoscript(package, 'postinst', 'postinst-pypycompile', args)
+
+ dependencies.export_to(dh)
+
+ pydist_file = join('debian', "%s.pydist" % package)
+ if exists(pydist_file):
+ if not validate_pydist(pydist_file):
+ log.warning("%s.pydist file is invalid", package)
+ else:
+ dstdir = join('debian', package, 'usr/share/pypy/dist/')
+ if not exists(dstdir):
+ os.makedirs(dstdir)
+ fcopy(pydist_file, join(dstdir, package))
+
+ dh.save()
+
+if __name__ == '__main__':
+ main()
diff --git a/dh_pypy.rst b/dh_pypy.rst
new file mode 100644
index 0000000..bc665cb
--- /dev/null
+++ b/dh_pypy.rst
@@ -0,0 +1,119 @@
+=========
+ dh_pypy
+=========
+
+---------------------------------------------------------------------------------
+calculates PyPy dependencies, adds maintainer scripts to byte compile files, etc.
+---------------------------------------------------------------------------------
+
+:Manual section: 1
+:Author: Piotr Ożarowski, 2013
+
+SYNOPSIS
+========
+ dh_pypy -p PACKAGE [-V [X.Y][-][A.B]] DIR [-X REGEXPR]
+
+DESCRIPTION
+===========
+
+QUICK GUIDE FOR MAINTAINERS
+---------------------------
+
+ * build-depend on pypy and dh-python,
+ * add `${pypy:Depends}` to Depends
+ * build module/application using its standard build system,
+ * install files to the standard locations,
+ * add `pypy` to dh's --with option, or:
+ * call ``dh_pypy`` in the `binary-*` target,
+
+NOTES
+-----
+
+dependencies
+~~~~~~~~~~~~
+dh_pypy tries to translate Python dependencies from requires.txt file to
+Debian dependencies. Use debian/pypydist-overrides or --no-guessing-deps option
+to override it if the guess is incorrect. If you want dh_pypy to generate
+more strict dependencies (f.e. to avoid ABI problems) create
+debian/pypy-foo.pydist file. See /usr/share/doc/dh-python/README.PyDist
+for more information. If the pydist file contains PEP386 flag or set of (uscan
+like) rules, dh_pypy will make the depedency versioned (version requirements
+are ignored by default).
+
+private dirs
+~~~~~~~~~~~~
+`/usr/share/foo`, `/usr/share/games/foo`, `/usr/lib/foo` and
+`/usr/lib/games/foo` private directories are scanned for Python files by
+default (where `foo` is binary package name). If your package is shipping
+Python files in some other directory, add another dh_pypy call in debian/rules
+with directory name as an argument - you can use different set of options in
+this call. If you need to change options for a private directory that is
+checked by default, invoke dh_pypy with --skip-private option and add another
+call with a path to this directory and new options.
+
+debug packages
+~~~~~~~~~~~~~~
+In binary packages which name ends with `-dbg`, all files in
+`/usr/lib/pypy/dist-packages/` directory that have extensions different than
+`so` or `h` are removed by default. Use --no-dbg-cleaning option to disable
+this feature.
+
+overriding supported / default PyPy versions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you want to override system's list of supported PyPy versions or the
+default one (f.e. to build a package that includes symlinks for older version
+of PyPy or compile .py files only for given interpreter version), you can do
+that via `DEBPYPY_SUPPORTED` and/or `DEBPYPY_DEFAULT` env. variables.
+
+
+OPTIONS
+=======
+--version show program's version number and exit
+
+-h, --help show help message and exit
+
+--no-guessing-deps disable guessing dependencies
+
+--no-dbg-cleaning do not remove any files from debug packages
+
+--no-shebang-rewrite do not rewrite shebangs
+
+--skip-private don't check private directories
+
+-v, --verbose turn verbose mode on
+
+-i, --indep act on architecture independent packages
+
+-a, --arch act on architecture dependent packages
+
+-q, --quiet be quiet
+
+-p PACKAGE, --package=PACKAGE act on the package named PACKAGE
+
+-N NO_PACKAGE, --no-package=NO_PACKAGE do not act on the specified package
+
+-X REGEXPR, --exclude=REGEXPR exclude items that match given REGEXPR. You may
+ use this option multiple times to build up a list of things to exclude.
+
+--compile-all compile all files from given private directory in postinst/rtupdate
+ not just the ones provided by the package (i.e. do not pass the --package
+ parameter to py3compile/py3clean)
+
+--depends=DEPENDS translate given requirements into Debian dependencies
+ and add them to ${pypy:Depends}. Use it for missing items in requires.txt
+
+--recommends=RECOMMENDS translate given requirements into Debian dependencies
+ and add them to ${pypy:Recommends}
+
+--suggests=SUGGESTS translate given requirements into Debian dependencies
+ and add them to ${pypy:Suggests}
+
+--shebang=COMMAND use given command as shebang in scripts
+
+--ignore-shebangs do not translate shebangs into Debian dependencies
+
+SEE ALSO
+========
+* /usr/share/doc/dh-python/README.PyDist
+* pybuild(1)
+* http://deb.li/dhpy - most recent version of this document
diff --git a/tests/Makefile b/tests/Makefile
index b522d8c..1159f22 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -8,7 +8,7 @@ export DEBPYTHON3_DEFAULT=3.3
export DEBPYTHON3_SUPPORTED=3.2,3.3
# enable or disable tests here:
-TESTS := test201 test202 test203 test204 test205 test206 test207 test301 test302 test303 test304
+TESTS := test101 test201 test202 test203 test204 test205 test206 test207 test301 test302 test303 test304
all: $(TESTS)
diff --git a/tests/common.mk b/tests/common.mk
index 24c4ba2..6467f76 100644
--- a/tests/common.mk
+++ b/tests/common.mk
@@ -4,6 +4,8 @@ export DEBPYTHON_DEFAULT ?= $(shell python3 ../../dhpython/_defaults.py default
export DEBPYTHON_SUPPORTED ?= $(shell python3 ../../dhpython/_defaults.py supported cpython2)
export DEBPYTHON3_DEFAULT ?= $(shell python3 ../../dhpython/_defaults.py default cpython3)
export DEBPYTHON3_SUPPORTED ?= $(shell python3 ../../dhpython/_defaults.py supported cpython3)
+export DEBPYPY_DEFAULT ?= $(shell python3 ../../dhpython/_defaults.py default pypy)
+export DEBPYPY_SUPPORTED ?= $(shell python3 ../../dhpython/_defaults.py supported pypy)
all: run check
diff --git a/tests/t101/Makefile b/tests/t101/Makefile
new file mode 100644
index 0000000..bc1a487
--- /dev/null
+++ b/tests/t101/Makefile
@@ -0,0 +1,17 @@
+#!/usr/bin/make -f
+include ../common.mk
+
+all: run check
+
+run: clean
+ dpkg-buildpackage -b -us -uc
+
+check:
+ test -f debian/pypy-foo/usr/lib/pypy/dist-packages/foo.py
+ test ! -d debian/pypy-foo/usr/lib/pypy/site-packages
+ test ! -d debian/pypy-foo/usr/lib/pypy/dist-packages/__pycache__
+ grep -q pypycompile debian/pypy-foo/DEBIAN/postinst
+ grep -q pypyclean debian/pypy-foo/DEBIAN/prerm
+
+clean:
+ ./debian/rules clean
diff --git a/tests/t101/debian/changelog b/tests/t101/debian/changelog
new file mode 100644
index 0000000..322011c
--- /dev/null
+++ b/tests/t101/debian/changelog
@@ -0,0 +1,5 @@
+foo (1.2.3) unstable; urgency=low
+
+ * Initial release
+
+ -- Piotr Ozarowski <piotr at debian.org> Tue, 02 Jul 2013 11:02:06 +0200
diff --git a/tests/t101/debian/compat b/tests/t101/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/tests/t101/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/tests/t101/debian/control b/tests/t101/debian/control
new file mode 100644
index 0000000..4be022f
--- /dev/null
+++ b/tests/t101/debian/control
@@ -0,0 +1,13 @@
+Source: foo
+Section: python
+Priority: optional
+Maintainer: Piotr Ożarowski <piotr at debian.org>
+Build-Depends: debhelper (>= 7.0.50~)
+# , dh-python
+Standards-Version: 3.9.4
+
+Package: pypy-foo
+Architecture: all
+Depends: ${pypy3:Depends}, ${shlibs:Depends}, ${misc:Depends}
+Description: package with public PyPy modules
+ exemple package #1
diff --git a/tests/t101/debian/copyright b/tests/t101/debian/copyright
new file mode 100644
index 0000000..f96adde
--- /dev/null
+++ b/tests/t101/debian/copyright
@@ -0,0 +1,2 @@
+The Debian packaging is © 2013, Piotr Ożarowski <piotr at debian.org> and
+is licensed under the MIT License.
diff --git a/tests/t101/debian/rules b/tests/t101/debian/rules
new file mode 100755
index 0000000..e15a94c
--- /dev/null
+++ b/tests/t101/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ DH_VERBOSE=1 ../../dh_pypy
+
+override_dh_auto_build:
+override_dh_auto_test:
+
+override_dh_auto_install:
+ mkdir -p debian/pypy-foo/usr/lib/pypy/site-packages/__pycache__
+ echo "print('foo')" > debian/pypy-foo/usr/lib/pypy/site-packages/foo.py
+ touch debian/pypy-foo/usr/lib/pypy/site-packages/__pycache__/foo.pypy-20.pyc
+
+override_dh_auto_clean:
diff --git a/tests/t101/debian/source/format b/tests/t101/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/tests/t101/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/dh-python.git
More information about the Reproducible-builds
mailing list