On Dec 29, 2003, at 2:57 PM, Zach Lipton wrote:

After much searching and grumbling, I found Thilo Planz's post on building CamelBones 0.2 under Panther (http://www.nntp.perl.org/group/perl.macosx/6383). After getting this to work, I thought I would type up more complete directions that work with Xcode and post a new archive for people to use.

Honestly, folks - if it was as easy as a few checkboxes in XCode, I'd have released it already.


These instructions will result in a framework that is not thread-safe. What is described here is the *first* thing I tried this summer, when Apple graciously provided me with a beta seed of Panther. The result compiled cleanly and *seemed* to work for some trivial test cases, but sizable apps like ShuX crashed often and at random.

is useful if you want to include CamelBones in your own application bundle.

Please don't do that. If you do, you'll be creating an application that will work with either Jaguar or Panther - but not both. Additionally, it won't work with any system where the standard Apple Perl has been replaced. Essentially, it will work *only* on systems where the libperl configuration *exactly* matches the system on which the app was built.


A nice touch if someone with better skills than I came across this would be to build a combined framework that worked under both Jaguar and Panther (it looks like this should be possible).

I hesitate to use the word "impossible" - but I haven't found a way to make it work, and believe me I've tried. The problem is basically that libperl is not binary compatible from one major version to the next. In other words, a framework that's linked against the 5.6 libperl that's included with Jaguar won't work on Panther, and vice versa. And a framework that's linked against someone's custom home-brewed Perl won't work with anything that Apple's released.


The solution to this dilemma is simple: Don't embed the framework in your app. The external interface of the framework - the one that apps depend on - isn't dependent upon the version of Perl in use. An app that uses the shared framework will continue to work, regardless of the version of libperl the framework uses. When a user upgrades their Perl - either with a home-brewed upgrade or via an OS upgrade - all they'll need is a matching update to the shared framework. Apps that have their own embedded frameworks will have to be individually updated.

Another extension from here would be to get this working with CamelBones 0.3-pre.

The 0.3 pre-releases have been in testing on Panther from square one. The original plan was to have 0.3 ready in time for Panther, so I made the necessary code changes there first. Health problems derailed the original plan, so most of the work involved with a Panther-compatible 0.2 has been back-porting the changes.


The next extension from here is... a surprise. And there isn't much longer to wait. A few hours if the Code Gods smile on me, or a day or two at most. ;-)

sherm--

Reply via email to