From 542a2746c95081504cacda702dda1dba55aa5997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20O=C5=BCarowski?= <piotr@debian.org> Date: Sun, 27 Mar 2011 17:42:39 +0200 Subject: [PATCH] py_builddir: strip "python" form the argument (if set) --- debian/python.mk | 2 +- dh_python2 | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/debian/python.mk b/debian/python.mk index de4ff44..44dfb72 100644 --- a/debian/python.mk +++ b/debian/python.mk @@ -31,7 +31,7 @@ py_libdir = /usr/lib/python$(strip $(if $(findstring 3.,$(subst python,,$(1))),3 py_pkgname = $(if $(findstring 3.,$(2)),$(subst python-,python3-,$(1)),$(1)) # distutils' build directory -py_builddir = $(shell python$(strip $(1)) -c 'from distutils.command.build import build; from distutils.core import Distribution; b = build(Distribution()); b.finalize_options(); print(b.build_platlib)') +py_builddir = $(shell python$(strip $(subst python,,$(1))) -c 'from distutils.command.build import build; from distutils.core import Distribution; b = build(Distribution()); b.finalize_options(); print(b.build_platlib)') # The same macros for use inside loops in shell snippets diff --git a/dh_python2 b/dh_python2 index f7d6890..8dfc1ba 100755 --- a/dh_python2 +++ b/dh_python2 @@ -1,7 +1,7 @@ #! /usr/bin/python # -*- coding: UTF-8 -*- vim: et ts=4 sw=4 -# Copyright © 2010 Piotr Ożarowski <piotr@debian.org> +# Copyright © 2010-2011 Piotr Ożarowski <piotr@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 @@ -37,6 +37,7 @@ from debpython.depends import Dependencies from debpython.version import SUPPORTED, DEFAULT, \ debsorted, getver, vrepr, parse_pycentral_vrange, \ get_requested_versions, parse_vrange, vrange_str +from debpython.namespace import parse as parse_nsp from debpython.pydist import validate as validate_pydist, \ PUBLIC_DIR_RE from debpython.tools import sitedir, relative_symlink, \ @@ -155,6 +156,7 @@ def share(package, stats, options): share_2x(sitedir(srcver, package), sitedir(version, package)) # remove duplicates stats['requires.txt'] = set(realpath(i) for i in stats['requires.txt']) + stats['nsp.txt'] = set(realpath(i) for i in stats['nsp.txt']) def move_to_pyshared(dir1): @@ -291,6 +293,7 @@ def share_2x(dir1, dir2, dc=None): def scan(package, dname=None): """Gather statistics about Python files in given package.""" r = {'requires.txt': set(), + 'nsp.txt': set(), 'shebangs': set(), 'public_vers': set(), 'private_dirs': {}, @@ -355,8 +358,11 @@ def scan(package, dname=None): if clean_name != name: log.info('renaming %s to %s', name, clean_name) os.rename(join(root, name), join(root, clean_name)) - if root.endswith('.egg-info') and 'requires.txt' in file_names: - r['requires.txt'].add(join(root, 'requires.txt')) + if root.endswith('.egg-info'): + if 'requires.txt' in file_names: + r['requires.txt'].add(join(root, 'requires.txt')) + if 'namespace_packages.txt' in file_names: + r['nsp.txt'].add(join(root, 'namespace_packages.txt')) continue # check files @@ -462,6 +468,8 @@ def main(): parser.add_option('--suggests', action='append', dest='suggests', help='translate given requirements into Debian ' 'dependencies and add them to ${python:Suggests}') + parser.add_option('--namespace', action='append', dest='namespaces', + help='recreate __init__.py files for given namespaces at install time') # ignore some debhelper options: parser.add_option('-O', help=SUPPRESS_HELP) @@ -590,6 +598,16 @@ def main(): os.makedirs(dstdir) fcopy(pydist_file, join(dstdir, package)) + # namespace feature - recreate __init__.py files at install time + nsp = parse_nsp(pdetails['nsp.txt'], options.namespaces) + # TODO: skip non-empty __init__.py files, remove empty ones + if nsp: + dstdir = join('debian', package, 'usr/share/python/ns/') + if not exists(dstdir): + os.makedirs(dstdir) + with open(join(dstdir, package), 'w') as fp: + fp.writelines("%s\n" % i for i in nsp) + dh.save() if __name__ == '__main__': -- GitLab