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

Re: netcdf packages



Hi Warren,

Warren Turkal wrote:

> On Wednesday 13 December 2006 10:55, Warren Turkal wrote:
>> I think that we should just go for it. W00T!

OK, you've convinced me that compiling with gfortran shouldn't be a
problem.  (But please try to make sure that maintainers of any new
packages introduced depending on the FORTRAN bindings of netcdf are
aware of the issue.)

> KST can actually plot netcdf graphs after the upgrade in library. It just 
> crashed on all my netcdf files before. This is another reason to upgrade the 
> library.
> 
> Unfortunately, it lookes like kst will have to be relinked with the new 
> library to work without crashing. It uses the c++ binding. I suspect anything 
> using that binding would need to be recompiled as well. Did the netcdf lib 
> ever go through the C++ ABI change?

I think it must have at least been built with the new g++:

benjo (sid)[2]:~% apt-cache show libnetcdf++3| grep Depends
Depends: [...], libstdc++6 (>= 4.1.0)
                ^^^^^^^^^^

According to packages.qa.debian.org, the version of kst in Sid/Etch was
built in November '06, long after the current version of netcdf was
uploaded (in July '06).  So any problems with kst's use of netcdf in
Sid/Etch are not likely to be due to the C++ ABI transition.


I don't quite understand the exact problem you are facing, though.  If
I have read your email correctly, you see the following:

a) libnetcdf++3 package from Sid, kst-plugins package from Sid ==> Crash
b) libnetcdf++3 package from your new .debs, kst-plugins package from
Sid ==> Crash
c) libnetcdf++3 package from your new .debs, kst-plugins package rebuilt
against your new .debs ==> Works OK

This is weird: if you install your new packages of netcdf, the existing
kst-plugins package (from Sid) on your system should automatically pick
up the new libnetcdf_c++.so.3 library and function properly, fixing the
crash.  I can only think of two reasons why this would not work:

*) the soname of libnetcdf_c++.so has changed since the version in Sid
(in which case the binary package name must be changed and indeed kst
must then be rebuilt against the new library),

*) OR, the soname was not changed even though it should have been.
(This is not an uncommon situation since C++ is hard to maintain a
stable ABI in.)  Actually, I seem to remember you saying that shared lib
support was hacked into the Debian packages, meaning you will need to
care for the soname yourself.


Here are some other comments regarding your -beta4-1~pre3 .debs, now
that I've taken the time to look at them.  (Note, I have only looked at
the .debs, not at the source package.)

1) Why did you make the libnetcdf++3 package into a dummy package and
move the C++ bindings into the libnetcdf3 package?  If the soname of the
C++ package needs to evolve faster than that of the C/FORTRAN bindings,
as I speculated above, this would be a really good reason to keep the
C++ bindings in a separate package.

2) I don't think there should be info files in libnetcdf++3 (regardless
of whether it is a dummy package or a shared library package).  I see
you do ship the info files in libnetcdf-dev as well (where they should
be), but they should be in /usr/share/info, not under
/usr/share/doc/libnetcdf-dev where info won't look for them.

(On second look, you already have noticed this problem.)

3) The static libraries (lib*.a) must be shipped in the libnetcdf-dev
package, not in the runtime library (libnetcdf3) package.  Please do not
ship libtool *.la files at all, as has been requested many times by the
release team.  See for instance the discussion at bug #400140.

4) Your libnetcdf-dev package is missing a Depends line.  It should
Depend at least upon the netcdf shared library package(s), upon any
*-dev packages that ship files #included by its header files, and upon
any *-dev packages that ship static libs depended upon by netcdf static
libs.  (The last is slightly controversial, since there are people who
hate static libraries; for that you might be able to use a Recommends
instead of Depends.)

5) Wherever you Conflict against an old package (such as libnetcdf-dev's
Conflicts: netcdf-dev, netcdfg-dev (<< 3.6.2)) because of file
conflicts, you also need a Replaces line with similar contents.  This is
because under some circumstances, dpkg will try to unpack a new package
before completely removing an old package that is conflicted against.

Some of these issues could have been caught by comparing the contents of
the netcdf binary packages in Sid and your new packages.  I find that
debdiff is a really useful tool for such comparisons, though of course YMMV.

best regards,

-- 
Kevin B. McCarty <kmccarty@princeton.edu>   Physics Department
WWW: http://www.princeton.edu/~kmccarty/    Princeton University
GPG: public key ID 4F83C751                 Princeton, NJ 08544

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: