Opened 12 years ago

Closed 12 years ago

Last modified 11 years ago

#13777 closed defect (invalid)

py25-numpy correction for Darwin 9 and Python Framework

Reported by: mdickens@… Owned by: skymoo (Adam Mercer)
Priority: Normal Milestone:
Component: ports Version: 1.6.0
Keywords: py25-numpy, Framework, Darwin 9 Cc: mdickens@…
Port:

Description

If, somehow, one uses a Framework install of Python, then the PYTHONPATH isn't correct for the MacPorts site-packages ( /opt/local/lib/python2.5/site-packages/ ) required to compile numpy. This patch adds the correct PYTHONPATH to the build and destroot environment.

This will not be an issue if using the MacPorts non-Framework install of Python 2.5. But there are folks who need the Framework version (see, e.g. ticket:12817), and thus this correction is needed.

Attachments (1)

patch-Portfile.diff (539 bytes) - added by mdickens@… 12 years ago.
Patch for the py25-numpy portfile, allows for installation in Darwin 9 when using Python Framework

Download all attachments as: .zip

Change History (11)

Changed 12 years ago by mdickens@…

Attachment: patch-Portfile.diff added

Patch for the py25-numpy portfile, allows for installation in Darwin 9 when using Python Framework

comment:1 Changed 12 years ago by skymoo (Adam Mercer)

Owner: changed from macports-tickets@… to ram@…
Status: newassigned

comment:2 Changed 12 years ago by skymoo (Adam Mercer)

what is the error if this is not present for a framework python build?

comment:3 Changed 12 years ago by mdickens@…

I don't have the exact text in front of me (in 10.4 right now), but the gist of the backtrace is:

import md5
> from hashlib import md5
>> tries to import _hashlib, but fails with
>>> except: import _md5

This last command fails with an error that _md5 module cannot be found; this is not a "try:", but just a direct import.

To explain why this happens, just a bit; I don't know why these scripts work on Darwin 8 and not 9, except that the PYTHONPATH must be set correctly on the former but not the latter:

In python25's "setup.py" script (lines 570:587), if openssl version is > 0x00907000, then the _hashlib shared library will be built (if desired). If openssl version is <= 0x00907000, then the _md5 shared library will be built. As MacPorts has installed openssl "0.9.8g_0", hashlib is selected and md5 will not even be installed. The patch-setup.py for MacPorts Portfile disables the compilation of hashlib, but this is installed as a requisite for py25-numpy as py25-hashlib. By default (of the python25 group script), all of the py25-YYY ports will be installed into ${prefix}/lib/python25/site-packages .

The non-framework install of Python populates ${prefix}/lib/python25 and related sub-directories with the standard python scripts (text, compiled, and shared libraries). Under this version of Python, the PYTHONPATH will by default include ${prefix}/lib/python25/site-packages, and thus adding this directory to the PYTHONPATH environment will not hurt but also won't change anything.

The framework install of Python populates ${prefix}/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 and related sub-directories with the standard python scripts (text, compiled, and shared libraries). Under this version of Python, the PYTHONPATH will by default include ${prefix}/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages, but not ${prefix}/lib/python25/site-packages, and thus adding this directory to the PYTHONPATH environment is required to access any packages installed by MacPorts. The .py files for hashlib and such will be installed in ${prefix}/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5, while the shared library will be in ${prefix}/lib/python25/site-packages. Thus the need for setting the PYTHONPATH, both internal to MacPorts Portfiles as well as in the user's environment (which, of course, is up to the user).

Another possible solution would be to modify the python25 group settings to install py25-YYY packages into ${prefix}/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 for the framework, and ${prefix}/lib/python25/site-packages for the non-framework version ... I haven't looked into this, but it should be possible.

comment:4 Changed 12 years ago by skymoo (Adam Mercer)

This issue has been brought up in #11267, one of the many tickets tracking the request for python25 to be a framework build...

comment:5 Changed 12 years ago by mdickens@…

This ticket is not a request for a Python framework build, though that would be nice; yes I know about ticket #11267 and others ... I'm the submitter of the tarball on ticket #11267 that, at least for me, works for both framework and non-framework Python installs on both Darwin 8 and 9. I, for one, need framework Python install, and hope that whatever changes are needed to get that Port functional are made ASAP.

This ticket is explaining why py25-numpy doesn't install correctly when using a Python framework under Darwin 9, and a patch to correct the issue. The changes in this patch do not affect Darwin 8 or prior, and won't change anything on Darwin 9 with a non-framework Python. All this patch does is, under Darwin 9, add ${prefix}/lib/python25/site-packages to the PYTHONPATH for both build and destroot.

Maybe I'm jumping the gun here, since maybe the eventual Python framework install's PYTHONPATH will be correct without any further additions. We won't know until a framework install is available.

comment:6 Changed 12 years ago by skymoo (Adam Mercer)

Yes I know, I was just commenting that someone else has reported this very same issue, i.e. _md5 etc... not being found, in one of the comments for #11267

comment:7 Changed 12 years ago by skymoo (Adam Mercer)

I take it from http://trac.macosforge.org/projects/macports/ticket/11267#comment:17 that this change is no longer needed for the framework build of python25?

comment:8 Changed 12 years ago by mdickens@…

Yes, that is correct. I was going to enter such a comment later tonight on this ticket, when I had more time; you beat me to it! Please go ahead and close out this ticket. Thanks for keeping on top of things!

comment:9 Changed 12 years ago by skymoo (Adam Mercer)

Resolution: invalid
Status: assignedclosed

closing as invalid as this problem is now fixed in the Framework build patch

comment:10 Changed 11 years ago by (none)

Milestone: Port Bugs

Milestone Port Bugs deleted

Note: See TracTickets for help on using tickets.