Ticket #25040 (closed defect: fixed)
lilypond 2.12.3 FTB with Python 3 selected
|Reported by:||gale@…||Owned by:||snc@…|
The first point is that this port does not have an explicit dependency on any version of python. In fact, it works for any 2.4 <= python < 3. (I tested python27, and from the comments in the python code it appears to support at least back to 2.4.) But the port pulls in specifically python25 indirectly via at least one of its deps, mftrace. So python25 should be added as an explicit dep of lilypond to show that not only do we need python25 installed, we need it selected.
Now to the basic issue of not building when Python 3 is selected.
As has been pointed out before, this is going to be an increasingly common problem, as more and more MacPorts users make the switch to Python 3 while not all upstream sources support it yet for the snippets of Python so many ports contain.
Here is a general solution for when a port depends on a specific version of Python, not just the case of 3 vs. 2: port creates its own symlink to the required python version inside a directory it controls, then pushes that directory onto the front of PATH for the duration of the build. (Perhaps for configure also.)
Alternatively, for any particular port, we can try to create a patch that makes the port's python code compatible with Python 3. Usually, it's just a matter of de-tabifying sloppy indentation, and changing "print >> f" to "f.write". (Thankfully, the Python core devs have not yet removed support in Python 3 for the old "%" string formatting operator, as threatened.)
But in some cases the conversion could turn out to involve real work, so it should really be a job for upstream. In practice we can't wait for that to happen; it could take months or years.
So I recommend the PATH hack.