beeware / Python-Apple-support

A meta-package for building a version of Python that can be embedded into a macOS, iOS, tvOS or watchOS project.
MIT License
1.12k stars 161 forks source link

mpdecimal iOS support #218

Closed skrah closed 4 months ago

skrah commented 5 months ago

What is the problem or limitation you are having?

I am in the process of coordinating a couple of Apple-related patches for the mpdecimal library (which CPython depends upon):

https://www.bytereef.org/mpdecimal/

1) It would be great to know if this patch to config.sub is sufficient for building mpdecimal on iOS:

https://lists.gnu.org/archive/html/config-patches/2024-02/msg00001.html

mpdecimal currently uses the 2023-07-31 config.sub version with a small patch for CheriBSD, so I would not mind shipping another small patch.

2) Macports would like an absolute libdir path:

https://github.com/macports/macports-ports/pull/23767

Does this also work for iOS or should there be an option to choose between rpath and the full path?

Describe the solution you'd like

N/A

Describe alternatives you've considered

N/A

Additional context

N/A

freakboy3742 commented 4 months ago

What is the problem or limitation you are having?

I am in the process of coordinating a couple of Apple-related patches for the mpdecimal library (which CPython depends upon):

https://www.bytereef.org/mpdecimal/

  1. It would be great to know if this patch to config.sub is sufficient for building mpdecimal on iOS: https://lists.gnu.org/archive/html/config-patches/2024-02/msg00001.html

The patch you've referenced is one that I'm trying to get upstreamed into Autoconf, but their contribution process is... opaque. The current official config.sub (2024-01-01) is enough to support iOS devices; it won't support simulators, though.

As for the rest of mpdecimal - I have no idea if additional patches are required. CPython vendors libmpdec, and my only experience with that library is building what CPython provides.

  1. Macports would like an absolute libdir path: mpdecimal: Use absolute path in install names macports/macports-ports#23767

Does this also work for iOS or should there be an option to choose between rpath and the full path?

Again, CPython uses a vendored version of libmpdec; that code is statically linked, so there's no rpath to configure.

Closing this ticket as there's no underlying change required to this project; but I'm happy to answer any follow up questions on the closed ticket if I can help.

skrah commented 4 months ago

Thanks, I am referring to https://github.com/python/cpython/issues/115119 and in particular:

https://github.com/python/cpython/issues/115119#issuecomment-2094640131

I'm basically just offering to patch mpdecimal's config.sub so that it builds out of the box on iOS.

I have access to Apple hardware on a compile farm, but not root access, so I have to ask about iOS instead of testing myself.

freakboy3742 commented 4 months ago

Ah - I didn't realise this was connected to the broader de-libmpdec-ification work in CPython.

I haven't taken a close look at this problem yet, so I can't really comment on the full requirements; I suspect I will do so later this year as part of backporting the 3.13 changes to the other Python versions that we maintain. When I do, any patches that I discover will added to the beeware/cpython-apple-source-deps repo.

The bare minimum requirement will be bumping the config.sub; but it seem presumptuous to apply that patch without knowing if others will be required. The positive sign is that the version of libmpdec that is currently vendored by CPython doesn't/didn't require any iOS-specific patching.