summaryrefslogtreecommitdiff
path: root/debian/patches/multiarch-extname.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/multiarch-extname.diff')
-rw-r--r--debian/patches/multiarch-extname.diff92
1 files changed, 92 insertions, 0 deletions
diff --git a/debian/patches/multiarch-extname.diff b/debian/patches/multiarch-extname.diff
new file mode 100644
index 0000000..61d1384
--- /dev/null
+++ b/debian/patches/multiarch-extname.diff
@@ -0,0 +1,92 @@
+# DP: Make sure to rename extensions to a tag including the MULTIARCH name
+
+this patch can be dropped for python3.5 final, if the upstream chage is kept.
+
+Index: b/Lib/distutils/dir_util.py
+===================================================================
+--- a/Lib/distutils/dir_util.py
++++ b/Lib/distutils/dir_util.py
+@@ -96,6 +96,9 @@ def create_tree(base_dir, files, mode=0o
+ for dir in sorted(need_dir):
+ mkpath(dir, mode, verbose=verbose, dry_run=dry_run)
+
++import sysconfig
++_multiarch = None
++
+ def copy_tree(src, dst, preserve_mode=1, preserve_times=1,
+ preserve_symlinks=0, update=0, verbose=1, dry_run=0):
+ """Copy an entire directory tree 'src' to a new location 'dst'.
+@@ -131,6 +134,13 @@ def copy_tree(src, dst, preserve_mode=1,
+ raise DistutilsFileError(
+ "error listing files in '%s': %s" % (src, e.strerror))
+
++ ext_suffix = sysconfig.get_config_var ('EXT_SUFFIX')
++ _multiarch = sysconfig.get_config_var ('MULTIARCH')
++ if ext_suffix.endswith(_multiarch + ext_suffix[-3:]):
++ new_suffix = None
++ else:
++ new_suffix = "%s-%s%s" % (ext_suffix[:-3], _multiarch, ext_suffix[-3:])
++
+ if not dry_run:
+ mkpath(dst, verbose=verbose)
+
+@@ -139,6 +149,9 @@ def copy_tree(src, dst, preserve_mode=1,
+ for n in names:
+ src_name = os.path.join(src, n)
+ dst_name = os.path.join(dst, n)
++ if new_suffix and _multiarch and n.endswith(ext_suffix) and not n.endswith(new_suffix):
++ dst_name = os.path.join(dst, n.replace(ext_suffix, new_suffix))
++ log.info("renaming extension %s -> %s", n, n.replace(ext_suffix, new_suffix))
+
+ if n.startswith('.nfs'):
+ # skip NFS rename files
+Index: b/Lib/distutils/command/install_lib.py
+===================================================================
+--- a/Lib/distutils/command/install_lib.py
++++ b/Lib/distutils/command/install_lib.py
+@@ -56,6 +56,7 @@ class install_lib(Command):
+ self.compile = None
+ self.optimize = None
+ self.skip_build = None
++ self.multiarch = None # if we should rename the extensions
+
+ def finalize_options(self):
+ # Get all the information we need to install pure Python modules
+@@ -68,6 +69,7 @@ class install_lib(Command):
+ ('compile', 'compile'),
+ ('optimize', 'optimize'),
+ ('skip_build', 'skip_build'),
++ ('multiarch', 'multiarch'),
+ )
+
+ if self.compile is None:
+@@ -108,6 +110,8 @@ class install_lib(Command):
+
+ def install(self):
+ if os.path.isdir(self.build_dir):
++ import distutils.dir_util
++ distutils.dir_util._multiarch = self.multiarch
+ outfiles = self.copy_tree(self.build_dir, self.install_dir)
+ else:
+ self.warn("'%s' does not exist -- no Python modules to install" %
+Index: b/Lib/distutils/command/install.py
+===================================================================
+--- a/Lib/distutils/command/install.py
++++ b/Lib/distutils/command/install.py
+@@ -192,6 +192,7 @@ class install(Command):
+
+ # enable custom installation, known values: deb
+ self.install_layout = None
++ self.multiarch = None
+
+ self.compile = None
+ self.optimize = None
+@@ -449,6 +450,8 @@ class install(Command):
+ self.install_platbase = self.exec_prefix
+ if self.install_layout:
+ if self.install_layout.lower() in ['deb']:
++ import sysconfig
++ self.multiarch = sysconfig.get_config_var('MULTIARCH')
+ self.select_scheme("deb_system")
+ elif self.install_layout.lower() in ['unix']:
+ self.select_scheme("unix_prefix")