library versioning
Brian J. Tarricone
bjt23 at cornell.edu
Sat Jan 22 12:38:32 CET 2005
hi all,
i have an idea... not sure if it's worth the work, but i thought i'd put
it out there. in light of all the problems with people upgrading, and
trying to use parallel stable and CVS, do we perhaps want to start
versioning the filenames of our libs a bit better?
ideally, we'd be doing something like "libxfcegui-4.3.so",
"libxfceutil-4.3.so", etc. etc. note that i took the "4" out of the
library names altogether, which i guess might be a bit lame to do at
this point, so we'd stick with the lameness of "libxfcegui4-4.3.so" and
"libxfce4util-4.3.so", etc. or perhaps, since we're versioning the .pc
files as, e.g., "libxfcegui4-1.0.pc", we could just increment the minor
on that guy, and use that in the filename versioning as well. so we'd
have, for the current CVS, libxfcegui4-1.3.pc and libxfcegui4-1.3.so.
or something like that.
benefits:
1) no more complaints about "undefined: xfce_builtin_license_GPL" and
the like.
2) no more complaints from people wanting to install both in parallel
(presumably, to different prefixes: i'm not advocating putting minor
version suffixes on the binaries too).
3) easier for us devs to have 4.2 and stable on our machines for
patching and bugfixing and testing and whatnot.
annoyances:
1) we have to figure out the naming scheme. if we want to do it the
totally aesthetic way (libxfceutil-4.3), then that involves actually
changing the package name, which would probably be more trouble than
it's worth. so we could just do libxfce4util-4.3, or libxfce4util-1.3
(i prefer -4.3). looks a little confusing, but who cares, really?
2) plugins would now be required to update their dependencies when we do
a new 4.x release, since (presumably) the normal user would want to
uninstall their old libraries when they upgrade, and since the soname is
different, they'll have dangling library deps. for 4.2, all we required
was a recompile, which the user can do on their own. but updating the
required library soname requires configure.ac hacking (ok, it's only a
one-line change per library, but still). to be the most flexible, this
would require something lame-looking like:
BM_DEPEND_CHECK([LIBXFCE4UTIL], [libxfce4util-4.3], [4.2.0])
if test "x$LIBXFCE4UTIL_FOUND" != "xyes"; then
BM_DEPEND([LIBXFCE4UTIL], [libxfce4util-1.0], [4.2.0])
fi
so, thoughts? i'd be willing to make the required
makefile/configure.ac/pkgconfig changes necessary for all modules,
though 3rd-party plugin authors would have to make the changes themselves.
-b
More information about the Xfce4-dev
mailing list