Thanks Ronald, On Wed, May 22, 2013 at 2:53 PM, Ronald Oussoren <ronaldousso...@mac.com> wrote:
> To move back onto topic, not relying on unix-level libraries in OSX is in a > good thing as it makes it easier to support multiple OSX versions with a > single set of binaries. hmm -- I figured if it was a system lib, it should work on whatever system It's running on. For example, I'm working right now on the netcdf4 lib -- it required hdr5, which requires zlib. I"m using the system zlib -- is that a bad idea? Should I build it too, to make sure it matches the rest of it? (I do want the binaries to run anywhere the binary Python I'm using runs) > Except for a number of more complicated libraries (such as PIL/Pillow) when > using universal binaries (when using 'pip install', homebrew/macports/... > have their own mechanisms for building). right -- Universal libs are not well supported by those systems -- but that's the power users problem! >> 2) folks that want to use a Mac like a Mac, and people that develop >> for those folks -- these people need binary installers, and may want >> to be able to use and deploy either packages or applications (Py2app) >> that will run on systems older than the one developed on, or want >> universal builds, or ??? >> - These are the folks I'd like to support, but I'm still unsure as >> to how best to do that. > > It would be nice to have a set of binary "packages", based on a reproducable > build system. Exactly what I'd like to build! >> Way back when Bob Ippolito maintained a repository of binary packages >> for the mac -- it was a great resource, but he's long since moved on >> to other things. > > The binary packages that Bob maintained had IMHO two major problems: > > 1) The largest problem is that the packages were AFAIK created ad-hoc (Bob or > some other contributor did the magic incantations to build library > dependencies) Yeah, and he never gave anyone else permission to push to it... > 2) The packages were Installer.app packages. The current state of the art for > development/project environments is to use virtualenv or buildout to create > separated python installations and install all project depedencies there > instead of the global site-packages directory. That's not something that's > easily supported with Installer.app packages. It was the way to go at the time, but I agree a binary format that supports virtualenv would be great. >> do I really want linked into my single instance of Python at run time? > > As long as the libpng state isn't shared static linking isn't really a > problem. good to know, but somehow it still offends my sensibilities > Dynamic linking has at least two disadvantages: > > 1) Relocation of the installation prefix is harder due to the way the dynamic > linker on OSX looks for libraries: yeah -- that is a pain. > The header is easily updated using macholib, but that makes installation > harder and isn't supported by the standard packaging tools (easy_install > and pip) But if we put the shared libs in amore central location, then all your virtual-ens could use the same ones, yes? > 2) The primary use case for dynamic linking is to share dylibs between > extensions, and when those extensions are in different PyPI packages the > packaging story gets more complicated. The easiest workaround is to ignore > sharing dylibs and still bundle multipe copies of libpng if two different > PyPI packages both link with libpng. when you say bundle, do you mean static link? Or just package up the dylib with the bundle, which is what i was thinking -- each package installs the libs it needs, which may or may not already have been installed by another package -- but so what? And I expect the number of folks building packages will be fairly small, so one builder would one have to build one set of dylibs. >> But if dynamic, where do you put them? We'll still want to ship them > A new framework isn't necessary. There are three locations that could easily > be used: > > 1) A directory in Python.framework, for example > /Library/Frameworks/Python.framework/Frameworks That makes sense to me. > 2) A directory in /Library/Python, for example /Library/Python/Externals that feels a bit lke Apple's turf, but what do I know? > 3) As 2), but in the users home directory (~/Library/Python/Externals) > The latter is the only one where you can install without admin privileges. But we put the python binaries in /LIbrary/Frameworks -- it seems we should do the same with libs... > The folks over on distutils-sig are working towards support for wheels (PEP > 427, <http://www.python.org/dev/peps/pep-0427/>) at least in pip and > distribute/setuptools and possibly in the stdlib as well (for 3.4). It would > be nice if the OSX package collection would be in wheel format, that would > make it relatively easy to install the packages using the defacto standard > tools. Any idea what the time scale is on this? > What I haven't looked into yet is how easy it would be to configure pip to > look for packages on PyPI and then look for binaries (wheels) in some other > location. Have the pip folks made any commitment at all to supporting binary installs? That's a big missing feature. >> Note that I've used the term "we" here ;-) I'm hoping that others >> will join me in following a convention and getting stuff out there, >> but even if not, I'd love feedback on how best to do it. > > Good luck :-). This is fairly boring low-level packaging work, and that > tends to put off people. At least it is a lot easier than trying to fix or > replace distutils, that has burned out at least 3 generations of developers > ;-/ Well, I'm an optimist -- and recently at least you and Ned and Russel Owen have bee known to contribute. >> By the way, the other goal is to build scripts that do the builds the >> way we need for various libs, packages, etc, so that it's easy to do >> it all when new builds are required... >> (maybe use gattai? -- http://sourceforge.net/projects/gattai/) > > I haven't used gattai before, but at least it is Python code. Building tools > for this from scratch would also not be very hard, I already done so a number > of times (such as the build-installer.py script in the CPython repository). yup -- me too, though I find myself wanting to add various make-like features, and it dawns on me that I am re-inventing the wheel! So I want to give Gattai a shot. Also Kevin is likely to be helpful. > The hard part should be setting up the build infrastructure and build > scripts, once couple of relatively hard packages like PIL or wx have been > processed adding more packages and new versions of packages should be easy. Exactly. But I don't know about wx -- that is a bear, and Robin's been doing a fine job! Thanks for you ideas, -Chris -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception chris.bar...@noaa.gov _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG