libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: darwin library_names_spec


From: Peter O'Gorman
Subject: Re: darwin library_names_spec
Date: Wed, 03 Dec 2003 23:55:06 +0900
User-agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5b) Gecko/20030902 Thunderbird/0.2

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Gary V. Vaughan wrote:
| Removing the long versioned flavour will break the libtool versioning
| paradigm.  Maybe you could make libfoo.dylib the symlink, and
| libfoo.x.dylib
| the target?

Okay, to better explain why this isn't broken :)

Given we have libfoo.la linked with version 3:12:1 , currently this will
create 3 files
libfoo.dylib -> libfoo.2.1.12.dylib
libfoo.2.dylib -> libfoo.2.1.12.dylib
libfoo.2.1.12.dylib
The encoded information will be "install_name libfoo.2.dylib" (this is
the file the dynamic linker will look for) and compatibility_version 4
current_version 4.12.

Now, with my proposed change we would only get two files
libfoo.dylib -> libfoo.2.dylib
libfoo.2.dylib
The encoded information would be the same (CURRENT + 1 for the
compatibility version).

Now lets release a new libfoo 4:0:2
Current system:
libfoo.dylib -> libfoo.2.2.0.dylib
libfoo.2.dylib -> libfoo.2.2.0.dylib
libfoo.2.2.0.dylib
install_name libfoo.2.dylib compatibility_version 5 current_version 5.0
Proposed :
libfoo.dylib -> libfoo.2.dylib
libfoo.2.dylib
same encoded information.

If we link an application against libfoo 3:12:1, it will continue to run
~ with libfoo 4:0:2 (it will not work the other way around, an app linked
against libfoo 4:0:2 will not run with libfoo 3:12:1 installed). Current
and proposed systems are the same.

Let's update libfoo again 5:0:0
Current:
libfoo.dylib -> libfoo.5.0.0.dylib
libfoo.5.dylib -> libfoo.5.0.0.dylib
libfoo.5.0.0.dylib
install_name libfoo.5.dylib compatibility_version 6 current_version 6.0
Proposed:
libfoo.dylib -> libfoo.5.dylib
libfoo.5.dylib

link to this lib and it will refuse to run for libfoo.2.dylib (the
dynamic linker will not look for libfoo.2.dylib) link to an older lib
and the dynamic liner will not find the new one.

Now, I'm tired of updating libfoo, hard work all these updates :-)
The proposed patch affects nothing much except that there is one less
symlink and the encoded library name is the same as the real library.

Is this clear? (I often make sense only to myself)

Peter
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (Darwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iQCVAwUBP835R7iDAg3OZTLPAQJ3/wP/WdO6krQ2HykX+zZHkUa6k6jMcets0cLz
u1fkFLl7CfC5ewGouqvhWErkzM2okf2QTw2+2H34RqAWHjvEae9n1LU3g9D2a0eD
QqJyMh60UgzrHRUJYxCY5FrMQ0KeQiaksJcbbTCf9BJd+Wvt7GB9Zd/q0cH1qdFN
vAvhWWCbvk0=
=ER/c
-----END PGP SIGNATURE-----





reply via email to

[Prev in Thread] Current Thread [Next in Thread]