D6754: contrib: proof of concept script to build Mac packages without system python
mharbison72 (Matt Harbison)
phabricator at mercurial-scm.org
Sun Aug 25 17:11:22 EDT 2019
mharbison72 added a comment.
mharbison72 added a subscriber: durin42.
In D6754#99255 <https://phab.mercurial-scm.org/D6754#99255>, @indygreg wrote:
> This looks promising.
> I don't want to tell you not to work on this, but my bold plan is to get Mercurial using PyOxidizer and leaning on PyOxidizer for packaging. This will require shipping a Python 3 Mercurial, however.
Thanks for the pointers.
I'm broadly aware of the plans to use PyOxidizer for py3, and hope to use it for thg too. I started this with nothing more in mind than making the installer support more than 10.14. But since it links against the system python, setting the MACOS_DEPLOYMENT_TARGET (or whatever it's called) errors out. So I tried allowing PYTHON to be overridden in the makefile, so it could be pointed to the python.org install and go back to 10.9. But @durin42 locked it into the system python in da1848f07c6a <https://phab.mercurial-scm.org/rHGda1848f07c6ac14a748e5dea826342922f686480>, and things just kinda snowballed from there. He mentioned on IRC that a pyinstaller dependency wouldn't be great, and also maybe we don't want to be completely tied to PyOxidizer. (I took it as don't preclude other methods, but maybe that needs to be clarified.)
> Until PyOxidizer is ready, you may want to look into Beeware's Briefcase tool for packaging macOS applications. It also provides its own self-contained Python distribution. I'm not sure if it works with Python 2.7, however.
There at least appears to be a package visible in pip27, but the docs talk about building a *.app, which isn't going to be useful for us.
> You may also be interested in https://github.com/indygreg/python-build-standalone for self-contained Python distributions. Only works with Python 3.7+ at the moment now, though. The pre-built distributions on GitHub having a working Python install in them. All the Python C extensions are statically linked into the `python` executable.
I'll try to find time to play with this in the next week or so. I'm not sure what it would take to support py2, but I'd rather everybody poured their effort in elsewhere at this point. @durin42 mentioned on IRC that it's long past time to get off the system python, but the only real deadline is that it won't be in 10.16 a year from now. Hopefully the codebase is still supporting py2 then, but maybe the py3 support is good enough that we don't need an official py2 installer? End of py2 support doesn't seem like a big deal, unless some horrible TLS bug is found.
I suppose a reasonable fix for supporting more OS versions is to spin up a 10.9 VM and build there. I don't have one right now, but I do have a machine that is going to be setup to host various Mac VMs, and I don't have a problem building the installer on it if there's interest.
CHANGES SINCE LAST ACTION
To: mharbison72, #hg-reviewers
Cc: durin42, indygreg, mercurial-devel
More information about the Mercurial-devel