This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: _sysconfigdata.py is installed in an arch-independent directory
Type: Stage: resolved
Components: Installation Versions: Python 3.3
process
Status: closed Resolution: duplicate
Dependencies: 23968 Superseder: rename the platform directory from plat-$(MACHDEP) to plat-$(PLATFORM_TRIPLET)
View: 23968
Assigned To: Nosy List: Arfrever, automatthias, dmalcolm, doko, ncoghlan
Priority: normal Keywords:

Created on 2013-05-28 16:34 by automatthias, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (3)
msg190225 - (view) Author: Maciej Bliziński (automatthias) Date: 2013-05-28 16:34
_sysconfigdata.py is installed into ${prefix}/lib/pythonX.Y/_sysconfigdata.py which is an architecture-independent directory, as opposed to a path starting with e.g. ${libdir}, which is architecture-dependent. But _sysconfigdata.py contains architecture-dependent information, which breaks some installation, specifically Solaris multi-arch.

A fix would be to move it to an architecture-dependent directory, but this probably requires some discussion.

-----------------------------------------------------------------------

Original question on the mailing list:
http://mail.python.org/pipermail/python-list/2013-May/647197.html

I'm looking into creating a 32/64-bit Python (2.x and/or 3.x) package
for Solaris. The specificity of that package is that I need to include
both 32-bit and 64-bit binaries in it. The exact way in which the
32/64 support is done is described at [1].

There currently is a Python package that I maintain, which is 32-bit only[2].

I have made an attempt to build a 64-bit package, and my findings are
that the ${prefix}/lib/pythonX.Y/_sysconfigdata.py file contains
system-specific information. Note that it's not ${libdir}/pythonX.Y -
that would have worked, because I'm specifying different ${libdir}
directories when running the 32-bit and 64-bit builds. The Python
installer specifically uses ${prefix}/lib/pythonX.Y. For the most part
is fine, because most of files in there are not architecture-specific,
and it would be quite good to share them among the 32-bit and 64-bit
binaries at runtime. The problem is that some files differ. I've
described it some more at [3].

Ideally, I'd make _sysconfigdata.py return/set different values
depending on the Python runtime that reads it. Something like:

if we're 64-bit:
  set values for the 64-bit platform
else:
  set values for the 32-bit platform

It's a similar approach to how we currently handle C header files. See
the 'Development packages' section in [1] for more information.

The problem is that it would involve somewhat intrusive patching of
the Python source code, and in long term that means maintainability
issues.
msg190256 - (view) Author: Matthias Klose (doko) * (Python committer) Date: 2013-05-28 23:02
Did Solaris adopt MultiArch? ;-P  Nice!

So what I did for the Debian and Ubuntu builds is:

 - to rename plat-linux to plat-<multiarch-tuple>
   (or plat-<gnu triplet>)

 - and install it there.

Note that IN.py is another architecture dependent file which differs at least on several linux architectures.
msg267351 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2016-06-05 00:00
Issue 23968 moves _sysconfigdata.py to an arch dependent directory
History
Date User Action Args
2022-04-11 14:57:46adminsetgithub: 62283
2021-10-20 10:27:14iritkatrielsetstatus: open -> closed
superseder: rename the platform directory from plat-$(MACHDEP) to plat-$(PLATFORM_TRIPLET)
resolution: duplicate
stage: resolved
2016-06-05 00:00:15ncoghlansetnosy: + ncoghlan
dependencies: + rename the platform directory from plat-$(MACHDEP) to plat-$(PLATFORM_TRIPLET)
messages: + msg267351
2013-05-30 15:49:46Arfreversetnosy: + Arfrever
2013-05-28 23:02:28dokosetmessages: + msg190256
2013-05-28 21:10:19pitrousetnosy: + doko, dmalcolm
2013-05-28 16:34:53automatthiascreate