On 10/09/2009, at 1:30 AM, JiHO wrote:
On 2009-September-08 , at 06:38 , Michael Wybrow wrote:
Also, it the package no longer uses the DYLD_LIBRARY_PATH environment variable to specify where the libraries can be found. Instead they all have their internal paths rewritten at packaging time to be relative to the path of the executable. To allow enough space in the libraries and executables for this path rewriting, the packager must use a Macports installation that has been installed in a longer than normal PREFIX. I don't know what the minimum size is, but I've put a requirement in the packaging script to check that it is at least 50 characters. Thus it needs to be installed in something like /opt/local-universal-macports-in-really-long- prefix-for-inkscape-etc-etc... you get the idea. This should solve a lot of problems with our bundled libraries conflicting with system versions.
Do you know how to move a macports installation or do I have to re- install everything if I want to make it work the new way? (NB: I have read the message in osx-app.sh but I would prefer to do it the right way, so that packages that I produce might be useful to others).
Yes, the right way is to now do this path rewriting. You won't be able to move a Macports installation. You will need to install it from source into a new prefix. After installation, if you add the line "+universal" to the /etc/macports/variants.conf file then all your Macports packages will then be built universal -- which then makes it very easy to produce universal Inkscape packages.
Also, this 50 characters limit means that, inside the app bundle, no library should be in a path more that 50 characters away from the "bin" directory, right? Does it have anything to do with where the user installs Inkscape? I guess that's the reason for the "flatter" organisation of things in the app bundle (previously many things where in a "share" directory).
Something like that. The libraries are all at relative paths to the executable, and some of that space is taken up with something line "@executable_path@/../lib/...". So, no it has nothing to do with where the user installs Inkscape. The 50 characters are needed because some of the libraries are in longer paths that can't be altered, like "@executable_path@/../lib/ ImageMagick-6.5.5/modules-Q16/filters/...", etc.
Actually, the package is no flatter than it was before. There is probably a bunch of stuff that should be in Contents/Resources/share instead of the Resources directory, but that has more to do with whoever wrote the original packaging script.
Cheers, Michael