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)


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]