This is the mail archive of the cygwin-apps 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]
Other format: [Raw text]

Re: ITP: plotutils-2.4.2 (trial Packaging too)



--- Charles Wilson <cygwin@cwilson.fastmail.fm> wrote:

> James R. Phillips wrote:
> 
> > The plotutils source package builds three cygwin packages:
>  >  2) plotutils-doc - extra documentation for plotutils
> 
> okay...
> 
> >  3) libplot       - link libraries and headers for using libplot
> 
>    This should be libplot-devel or plotutils-devel.
> 
> >  1) plotutils     - executable plot utilities and dll's
> 
> Do you expect any other package to use the runtime libraries?  If so, 
> then they should be removed from the 'plotutils' package and given their 
> own package -- preferably numbered, and preferably one package for each 
> DLL.  Why?  Simple:
> 
> package 'foo' relies on cygplot-2.dll.
> package 'bar' relies on cygplotter-2.dll.
> 
> And then you release plotutils-2.4.3 which has an interface change, and 
> therefore provides not cygplot-2.dll but cygplot-3.dll.
> 
> now foo is broken.  Q.E.D.
> 
> Now, why should the various DLLs have their own packages, rather than 
> all together in 'libplot2'?  Here's one reason: suppose there are NO 
> interface changes in plotutils, but you release a new version using 
> g++-4.0 (which may or may not use a different ABI than g++-3.4.4).  Now, 
> the new C++ DLL, cygplotter-3.dll is not ABI compatible with 
> cygplotter-2.dll, but as there were no actual interface changes, the C 
> DLL is perfectly compatible and remains 'cygplot-2.dll'.  foo is happy 
> -- but bar is broken:
> 
> 'bar' used cygplotter-2.dll and can't use cygplotter-3.dll -- even if 
> you didn't bump the DLLNUM and named it -2.dll you'd get a runtime 
> failure because of the g++4.0 ABI mismatch.
> 
> (Now, I'm not saying that g++-4.0 is or will be ABI incomp; I'm just 
> demonstrating that external factors can cause issues, which is why 
> multiple DLLs from a single source package should each get their own 
> "binary" package.)
> 
> --
> Chuck
> 


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