DARWIN PORTING NOTES -------------------- Porting P4Ruby to OS X has been problematic to say the least. 10.3 and earlier versions, have a bug that means P4Ruby can only be ported there by nefarious means that I don't care to detail as we've all moved on (and if you haven't, you should). As of Mac OSX 10.4, P4Ruby builds cleanly and works correctly, so have fun!
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 5897 | Tony Smith |
Remove ugly Darwin hack from P4Ruby distribution - no longer needed now that it works properly on OS X 10.4. |
||
#1 | 4190 | Tony Smith |
Port P4Ruby to MacOSX. This is a "sausages" build - you might like the results but you won't like the way it's done. In this case, it's so ugly that I'm ashamed to submit this change. It works, but MacOSX will remain an unsupported platform for P4Ruby as long as this hack is necessary. The basic problem is that the Signaler class in the Perforce API calls signal() on initialisation to install itself as the default handler for SIGINT signals. In a standalone executable that's fine on OSX, but ruby uses Apple's dyld interface to load the module into the process address space dynamically. When signal() is called at module load time, Apple's dyld implementation goes into an infaloop. This horrible piece of code provides a replacement (broken) implementation of the Signaler class that does not initialise itself in this way thereby avoiding the problem. The fact that this is broken should not cause any problems for P4Ruby users, but would not be advisable to use it elsewhere. I refuse to integrate this into the build process for P4Ruby, so people who want this port will have to follow the instructions in README.DARWIN and do it themselves. I have made a few minor porting changes to help with compiler selection on DARWIN though. |