summaryrefslogtreecommitdiffstats
path: root/package/python3/python3-000-generate-sysconfigdata-buildir.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/python3/python3-000-generate-sysconfigdata-buildir.patch')
-rw-r--r--package/python3/python3-000-generate-sysconfigdata-buildir.patch158
1 files changed, 158 insertions, 0 deletions
diff --git a/package/python3/python3-000-generate-sysconfigdata-buildir.patch b/package/python3/python3-000-generate-sysconfigdata-buildir.patch
new file mode 100644
index 000000000..a29aa0ffc
--- /dev/null
+++ b/package/python3/python3-000-generate-sysconfigdata-buildir.patch
@@ -0,0 +1,158 @@
+changeset: 79745:f85c3f4d9b98
+parent: 79743:36b2ca7dc893
+parent: 79744:24d52d3060e8
+user: Trent Nelson <trent@trent.me>
+date: Tue Oct 16 08:17:11 2012 -0400
+summary: Merge issue #15298: ensure _sysconfigdata is generated in build directory,
+
+Taken from upstream.
+
+---
+ Lib/sysconfig.py | 11 ++++++++++-
+ Makefile.pre.in | 24 +++++++++++++-----------
+ setup.py | 14 --------------
+ 3 files changed, 23 insertions(+), 26 deletions(-)
+
+Index: Python-3.3.0/Lib/sysconfig.py
+===================================================================
+--- Python-3.3.0.orig/Lib/sysconfig.py
++++ Python-3.3.0/Lib/sysconfig.py
+@@ -390,13 +390,22 @@
+ if _PYTHON_BUILD:
+ vars['LDSHARED'] = vars['BLDSHARED']
+
+- destfile = os.path.join(os.path.dirname(__file__), '_sysconfigdata.py')
++ pybuilddir = 'build/lib.%s-%s' % (get_platform(), sys.version[:3])
++ if hasattr(sys, "gettotalrefcount"):
++ pybuilddir += '-pydebug'
++ os.makedirs(pybuilddir, exist_ok=True)
++ destfile = os.path.join(pybuilddir, '_sysconfigdata.py')
++
+ with open(destfile, 'w', encoding='utf8') as f:
+ f.write('# system configuration generated and used by'
+ ' the sysconfig module\n')
+ f.write('build_time_vars = ')
+ pprint.pprint(vars, stream=f)
+
++ # Create file used for sys.path fixup -- see Modules/getpath.c
++ with open('pybuilddir.txt', 'w', encoding='ascii') as f:
++ f.write(pybuilddir)
++
+ def _init_posix(vars):
+ """Initialize the module as appropriate for POSIX systems."""
+ # _sysconfigdata is generated at build time, see _generate_posix_vars()
+Index: Python-3.3.0/Makefile.pre.in
+===================================================================
+--- Python-3.3.0.orig/Makefile.pre.in
++++ Python-3.3.0/Makefile.pre.in
+@@ -410,8 +410,6 @@
+ Objects/unicodectype.o \
+ Objects/weakrefobject.o
+
+-SYSCONFIGDATA=$(srcdir)/Lib/_sysconfigdata.py
+-
+ ##########################################################################
+ # objects that get linked into the Python library
+ LIBRARY_OBJS_OMIT_FROZEN= \
+@@ -432,7 +430,7 @@
+
+ # Default target
+ all: build_all
+-build_all: $(BUILDPYTHON) $(SYSCONFIGDATA) oldsharedmods sharedmods gdbhooks Modules/_testembed
++build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks Modules/_testembed
+
+ # Compile a binary with gcc profile guided optimization.
+ profile-opt:
+@@ -466,15 +464,17 @@
+ $(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
+ $(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
+
+-platform: $(BUILDPYTHON) $(SYSCONFIGDATA)
++platform: $(BUILDPYTHON)
+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print(get_platform()+"-"+sys.version[0:3])' >platform
+
+-# Generate the sysconfig build-time data
+-$(SYSCONFIGDATA): $(BUILDPYTHON)
++# Create build directory and generate the sysconfig build-time data there.
++# pybuilddir.txt contains the name of the build dir and is used for
++# sys.path fixup -- see Modules/getpath.c.
++pybuilddir.txt: $(BUILDPYTHON)
+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars
+
+ # Build the shared modules
+-sharedmods: $(BUILDPYTHON) $(SYSCONFIGDATA)
++sharedmods: $(BUILDPYTHON) pybuilddir.txt
+ case $$MAKEFLAGS in *s*) quiet=-q; esac; \
+ $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
+ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
+@@ -1036,7 +1036,7 @@
+ else true; \
+ fi; \
+ done
+- @for i in $(srcdir)/Lib/*.py ; \
++ @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py; \
+ do \
+ if test -x $$i; then \
+ $(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
+@@ -1196,6 +1196,8 @@
+ --install-scripts=$(BINDIR) \
+ --install-platlib=$(DESTSHARED) \
+ --root=$(DESTDIR)/
++ -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py
++ -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
+
+ # Here are a couple of targets for MacOSX again, to install a full
+ # framework-based Python. frameworkinstall installs everything, the
+@@ -1341,9 +1343,10 @@
+ find . -name '*.s[ol]' -exec rm -f {} ';'
+ find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
+ find build -name 'fficonfig.h' -exec rm -f {} ';' || true
+- find build -name 'fficonfig.py' -exec rm -f {} ';' || true
++ find build -name '*.py' -exec rm -f {} ';' || true
++ find build -name '*.py[co]' -exec rm -f {} ';' || true
++ -rm -f pybuilddir.txt
+ -rm -f Lib/lib2to3/*Grammar*.pickle
+- -rm -f $(SYSCONFIGDATA)
+ -rm -f Modules/_testembed Modules/_freeze_importlib
+
+ profile-removal:
+@@ -1367,7 +1370,6 @@
+ Modules/Setup Modules/Setup.local Modules/Setup.config \
+ Modules/ld_so_aix Modules/python.exp Misc/python.pc
+ -rm -f python*-gdb.py
+- -rm -f pybuilddir.txt
+ find $(srcdir) '(' -name '*.fdc' -o -name '*~' \
+ -o -name '[@,#]*' -o -name '*.old' \
+ -o -name '*.orig' -o -name '*.rej' \
+Index: Python-3.3.0/setup.py
+===================================================================
+--- Python-3.3.0.orig/setup.py
++++ Python-3.3.0/setup.py
+@@ -33,10 +33,6 @@
+ # This global variable is used to hold the list of modules to be disabled.
+ disabled_module_list = []
+
+-# File which contains the directory for shared mods (for sys.path fixup
+-# when running from the build dir, see Modules/getpath.c)
+-_BUILDDIR_COOKIE = "pybuilddir.txt"
+-
+ def add_dir_to_list(dirlist, dir):
+ """Add the directory 'dir' to the list 'dirlist' (after any relative
+ directories) if:
+@@ -252,16 +248,6 @@
+ args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
+ self.compiler.set_executables(**args)
+
+- # Not only do we write the builddir cookie, but we manually install
+- # the shared modules directory if it isn't already in sys.path.
+- # Otherwise trying to import the extensions after building them
+- # will fail.
+- with open(_BUILDDIR_COOKIE, "wb") as f:
+- f.write(self.build_lib.encode('utf-8', 'surrogateescape'))
+- abs_build_lib = os.path.join(os.getcwd(), self.build_lib)
+- if abs_build_lib not in sys.path:
+- sys.path.append(abs_build_lib)
+-
+ build_ext.build_extensions(self)
+
+ longest = max([len(e.name) for e in self.extensions])