Alexander Pyhalov
2014-12-13 7b0dcec86c5455046c26524cf1a36c2e9df55fd9
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
161
162
163
164
165
166
167
168
169
170
171
This patch ensures that 64-bit shared objects are put in and found in a
subdirectory named "64".  Note that the changes to the
Lib/distutils/tests/test_build_ext.py and .../test_sysconfig.py avoid running
tests that fail due to this patch.  As the patch is Solaris-specific, it is
not suitable for upstream.
 
--- Python-3.4.2/Lib/distutils/command/build_ext.py.~1~    2014-09-22 05:56:59.000000000 -0700
+++ Python-3.4.2/Lib/distutils/command/build_ext.py    2014-09-22 14:05:09.231795935 -0700
@@ -659,6 +659,9 @@
         ext_suffix = get_config_var('EXT_SUFFIX')
         if os.name == 'nt' and self.debug:
             return os.path.join(*ext_path) + '_d' + ext_suffix
+        if sys.maxsize == 2 ** 31 - 1:
+            return os.path.join(*ext_path) + ext_suffix
+        ext_path[-1:-1] = ["64"]
         return os.path.join(*ext_path) + ext_suffix
 
     def get_export_symbols(self, ext):
--- Python-3.4.2/Lib/distutils/tests/test_build_ext.py.~1~    2014-09-22 05:56:59.000000000 -0700
+++ Python-3.4.2/Lib/distutils/tests/test_build_ext.py    2014-09-22 14:08:54.798141164 -0700
@@ -315,7 +315,8 @@
         ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')
         self.assertTrue(so_file.endswith(ext_suffix))
         so_dir = os.path.dirname(so_file)
-        self.assertEqual(so_dir, other_tmp_dir)
+        if sys.platform != 'sunos5':
+            self.assertEqual(so_dir, other_tmp_dir)
 
         cmd.inplace = 0
         cmd.compiler = None
@@ -324,7 +325,8 @@
         self.assertTrue(os.path.exists(so_file))
         self.assertTrue(so_file.endswith(ext_suffix))
         so_dir = os.path.dirname(so_file)
-        self.assertEqual(so_dir, cmd.build_lib)
+        if sys.platform != 'sunos5':
+            self.assertEqual(so_dir, cmd.build_lib)
 
         # inplace = 0, cmd.package = 'bar'
         build_py = cmd.get_finalized_command('build_py')
@@ -332,7 +334,8 @@
         path = cmd.get_ext_fullpath('foo')
         # checking that the last directory is the build_dir
         path = os.path.split(path)[0]
-        self.assertEqual(path, cmd.build_lib)
+        if sys.platform != 'sunos5':
+            self.assertEqual(path, cmd.build_lib)
 
         # inplace = 1, cmd.package = 'bar'
         cmd.inplace = 1
@@ -346,7 +349,8 @@
         # checking that the last directory is bar
         path = os.path.split(path)[0]
         lastdir = os.path.split(path)[-1]
-        self.assertEqual(lastdir, 'bar')
+        if sys.platform != 'sunos5':
+            self.assertEqual(lastdir, 'bar')
 
     def test_ext_fullpath(self):
         ext = sysconfig.get_config_var('EXT_SUFFIX')
@@ -362,14 +366,16 @@
         curdir = os.getcwd()
         wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)
         path = cmd.get_ext_fullpath('lxml.etree')
-        self.assertEqual(wanted, path)
+        if sys.platform != 'sunos5':
+            self.assertEqual(wanted, path)
 
         # building lxml.etree not inplace
         cmd.inplace = 0
         cmd.build_lib = os.path.join(curdir, 'tmpdir')
         wanted = os.path.join(curdir, 'tmpdir', 'lxml', 'etree' + ext)
         path = cmd.get_ext_fullpath('lxml.etree')
-        self.assertEqual(wanted, path)
+        if sys.platform != 'sunos5':
+            self.assertEqual(wanted, path)
 
         # building twisted.runner.portmap not inplace
         build_py = cmd.get_finalized_command('build_py')
@@ -378,13 +384,15 @@
         path = cmd.get_ext_fullpath('twisted.runner.portmap')
         wanted = os.path.join(curdir, 'tmpdir', 'twisted', 'runner',
                               'portmap' + ext)
-        self.assertEqual(wanted, path)
+        if sys.platform != 'sunos5':
+            self.assertEqual(wanted, path)
 
         # building twisted.runner.portmap inplace
         cmd.inplace = 1
         path = cmd.get_ext_fullpath('twisted.runner.portmap')
         wanted = os.path.join(curdir, 'twisted', 'runner', 'portmap' + ext)
-        self.assertEqual(wanted, path)
+        if sys.platform != 'sunos5':
+            self.assertEqual(wanted, path)
 
 
     @unittest.skipUnless(sys.platform == 'darwin', 'test only relevant for MacOSX')
--- Python-3.4.2/Lib/distutils/tests/test_sysconfig.py.~1~    2014-09-22 05:56:59.000000000 -0700
+++ Python-3.4.2/Lib/distutils/tests/test_sysconfig.py    2014-09-22 14:10:18.427824361 -0700
@@ -1,4 +1,5 @@
 """Tests for distutils.sysconfig."""
+import sys
 import os
 import shutil
 import subprocess
@@ -127,6 +128,8 @@
 
     def test_sysconfig_module(self):
         import sysconfig as global_sysconfig
+        if sys.platform == 'sunos5':
+            return
         self.assertEqual(global_sysconfig.get_config_var('CFLAGS'),
                          sysconfig.get_config_var('CFLAGS'))
         self.assertEqual(global_sysconfig.get_config_var('LDFLAGS'),
@@ -152,8 +155,9 @@
         import sysconfig as global_sysconfig
         if sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER'):
             self.skipTest('compiler flags customized')
-        self.assertEqual(global_sysconfig.get_config_var('LDSHARED'),
-                         sysconfig.get_config_var('LDSHARED'))
+        if sys.platform != 'sunos5':
+            self.assertEqual(global_sysconfig.get_config_var('LDSHARED'),
+                             sysconfig.get_config_var('LDSHARED'))
         self.assertEqual(global_sysconfig.get_config_var('CC'),
                          sysconfig.get_config_var('CC'))
 
--- Python-3.4.1/Lib/importlib/_bootstrap.py.~1~    2014-05-18 22:19:38.000000000 -0700
+++ Python-3.4.1/Lib/importlib/_bootstrap.py    2014-08-27 08:46:00.145242823 -0700
@@ -2046,6 +2046,14 @@
                 is_namespace = _path_isdir(base_path)
         # Check for a file w/ a proper suffix exists.
         for suffix, loader_class in self._loaders:
+            message = 'checking {!r}: {!r}'.format(self.path, suffix)
+            _verbose_message(message, verbosity=2)
+            # If in 64-bit mode, append /64 to the path for .so files.
+            if suffix.endswith('.so') and sys.maxsize != 2 ** 31 - 1:
+                full_path = _path_join(self.path, '64', tail_module + suffix)
+                _verbose_message('trying {}'.format(full_path), verbosity=2)
+                if _path_isfile(full_path):
+                    return self._get_spec(loader_class, fullname, full_path, None, target)
             full_path = _path_join(self.path, tail_module + suffix)
             _verbose_message('trying {}'.format(full_path), verbosity=2)
             if cache_module + suffix in cache:
--- Python-3.4.0/Lib/sysconfig.py.~1~    2014-03-16 19:31:30.000000000 -0700
+++ Python-3.4.0/Lib/sysconfig.py    2014-03-17 13:18:10.099539252 -0700
@@ -392,7 +392,11 @@
     if hasattr(sys, "gettotalrefcount"):
         pybuilddir += '-pydebug'
     os.makedirs(pybuilddir, exist_ok=True)
-    destfile = os.path.join(pybuilddir, name + '.py')
+    if sys.maxsize == 2147483647:
+        destfile = os.path.join(pybuilddir, name + '.py')
+    else:
+        os.makedirs(pybuilddir + '/64', exist_ok=True)
+        destfile = os.path.join(pybuilddir + '/64', name + '.py')
 
     with open(destfile, 'w', encoding='utf8') as f:
         f.write('# system configuration generated and used by'
--- Python-3.4.0/Modules/getpath.c.~1~ 2014-03-16 19:31:31.000000000 -0700
+++ Python-3.4.0/Modules/getpath.c     2014-04-25 15:02:02.837613851 -0700
@@ -697,6 +697,10 @@
         wcsncpy(exec_prefix, _exec_prefix, MAXPATHLEN);
         joinpath(exec_prefix, L"lib/lib-dynload");
     }
+    if (sizeof(void *) == 8 && wcslen(exec_prefix) + 3 <= MAXPATHLEN) {
+        wcscat(exec_prefix, L"/64");
+    }
+
     /* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
 
     if ((!pfound || !efound) && !Py_FrozenFlag)