This is the mail archive of the cygwin-apps@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: ask for delivering cygwin 1.1.8 with kde 1.1.2


Robert Collins wrote:
> 
> If libjpeg is breaking it's own ABI in a non-backward compatible fashion
> without incrementing it's major version number, then I would be going
> and talking to them with big sticks.

That is correct.  The jpeg ABI changed between 6a and 6b, therefore the
6b dll uses "cygjpeg6b.dll" as its versioned name.  Ditto readline
between 4.1 and 4.2 -- the ABI (and API) changed; since I wasn't
expecting *that*, the 4.1 readline dll was "cygreadline4.dll" but the
4.2 dll was "cygreadline4.2.dll".  However, the cygwin readline 4.2 is
still marked "test" -- it's not too late to change the name to
"cygreadline4-2.dll" if you think that's a better scheme.  I do NOT
believe that dll names should include patch numbers or release numbers. 
Preferably only major numbers -- and minor numbers if necessary due to
bonehead ABI changes...

IMO, libtool (or KDE) shouldn't try to parse dll names for versioning
information.  Instead, it should build a tiny app (just link: 
-lreadline -- without a version # -- always works); this app should just
return the version string *as the library stores is*.  Almost all
libraries have some sort of getVersion function.

Of course, jpeg is a bad example, since it doesn't.  For jpeg, you'd
have to do:
#include <stdio.h>
#include <jpeglib.h>
main(){
  printf("%s\n",JPEG_LIB_VERSION);
}
which really only checks the header version ("62" == 6b) since
JPEG_LIB_VERSION is just a #define in jpeglib.h

For readline, you'd do
#include <stdio.h>
#include <readline/readline.h>
main(){
  printf("%s\n",rl_library_version);
}
which returns "4.2" -- and really represents the dll version since
rl_library_version is a const char* DATA export from the dll.

> >From what you are saying it sounds like a program llinked to libjpeg
> 6.1.0 won't run with libjpeg 6.1.1. That's pretty unusual for
> libraries - can the version checking be made more sane? Or is that
> because of the current beta state of libjpeg?

See above.  Jpeg isn't really beta, in the sense that it will eventually
be made "stable".  6b is about two years old.  Tom Lane has mumbled
about releasing 6c "eventually" -- but don't hold your breath.  "6c"
will NOT contain any of the jpeg2000 stuff, even if 6c is ever actually
released.
 
--Chuck


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]