Comments (5)
On 3/20/14, 6:27 AM, Nico Schlömer wrote:
This is more of a request for clarification.
In a typical unix project, versioning works such that the major
revision number indicates the A{B,P}I level of the library, and
consequently works as SOVERSION. When looking into |/usr/lib/|, you
will find almost exclusively the scheme|$ ls -l /usr/lib/libpathplan.*
/usr/lib/libpathplan.so.4 -> libpathplan.so.4.0.0
/usr/lib/libpathplan.so.4.0.0
|(I have no idea what "pathplan" is, it merely serves as an example here.)
For netCDF, things appear to work a little differently. The software
version will soon be 4.3.2, and the SOVERSION is set to 7.2.0. Is that
by mistake, for historical reasons, and are there plans to go with the
mainstream flow?—
Reply to this email directly or view it on GitHub
#42.Russ will correct me if I'm wrong, but I don't believe there will be any
move to sync VERSION and SOVERSION.
SOVERSION typically acts to indicate API compatibility; if a software
version is incremented but no change to the API is made, it would be
inappropriate to modify the SOVERSION. This makes it easier to
determine binary compatibility between libraries. I won't contest that
there exist many projects that use the VERSION and SOVERSION
interchangeably, but I would argue that they are using the SOVERSION
property incorrectly :).
That said, I'm not sure why the SOVERSION is 7.x while the netcdf
version is only 4.x. Perhaps Russ can clarify.
-Ward
from netcdf-c.
Indeed!
I'll try to clarify what I stated above: I believe that the vast majority of unix projects go one step further and bump their major revision number whenever the API changes. This makes is possible for dependent projects to say "Our software works with WhateverLib 4.*". If the version is x.y.z, the SOVERSION would be x.
In netCDF, the major revision number seems to be entirely decoupled from the SOVERSION. Also, unusually, the SOVERSION has a major, a minor, and a patch version ("7.2.0"). These are the two things that make it look a little weird.
from netcdf-c.
There's no need to keep the shared-object version and the package version in sync. We try to follow the guidelines here: http://www.gnu.org/s/libtool/manual/html_node/Updating-version-info.html
In particular, note this excerpt:
Never try to set the interface numbers so that they correspond to the release number of your package. This is an abuse that only fosters misunderstanding of the purpose of library versions. Instead, use the -release flag (see Release numbers), but be warned that every release of your package will not be binary compatible with any other release.
I think the reason our major soversion is 7 is due to adding and fixing several interfaces in the C API early in the development of netCDF-4.
from netcdf-c.
There's no need to keep the shared-object version and the package version in sync.
There is no need of course, the current state is absolutely lega; it wiykd just make things more obvious. After all, a user of netCDF is not so much interested if the release version is 3.6 or 4.1, it's really the A{B,P}I version (aka the "interface number") that is important (currently 7.2.0). Without a connection between them, the release version is really just a vague indicator of "progress" (which may or may not be the case for netCDF right now).
Anyways, this just struck me as an oddity of netCDF.
from netcdf-c.
I'm going to close this out but am leaving a bookmark to it as an issue to consider in the future. There is no immediate move to the change Nico has suggested, but it is something to keep in mind as we move forward.
from netcdf-c.
Related Issues (20)
- Unable to disable CURL library HOT 13
- Macro named '_FillValue' conflicts with libc++ headers HOT 12
- ncjson.h and dreg.c do not use right export decoration macros
- NetCDF4: Size difference between single write and iterative writes HOT 5
- documentation should clearly state that start/index/count/stride/map arrays must be the same size as the associated variable
- nczarr_test_run_interop failes with static build
- tst_specific_filters.sh fails from "Testing processing of filter blosc for map nc 10c10" for 4.9.2
- netCDFTargets.cmake and pkgconfig netcdf.pc have wrong hdf5 libraries HOT 1
- pnetcdf.h not found during installation HOT 3
- pnetcdf (still) not found during installation HOT 4
- Documentation on reading unkown dimensions in netCDF-4 misleading HOT 1
- Could not find HDF5 library during install
- build netcdf 4.9.3 with hdf5-1.14.3 in windows using MSVC 2022 using cmake
- Cannot link with libraries: /usr/bin/ld: cannot find -lhwloc /usr/bin/ld: cannot find -levent_core /usr/bin/ld: cannot find -levent_pthreads HOT 2
- Errors relate to HDF5 during 'make check' process: hdf5open.c:873:6: error: use of undeclared identifier 'H5FD_ros3_fapl_t' HOT 11
- ”make check“ Fails at ”nf03_test“ in NetCDF-Fortran Version 4.5.2
- Error compiling `h5_test/tst_h_files4` on MacOS HOT 1
- ConfigPackageLocation needs to be absolute path HOT 4
- netcdf-c 4.9.2 on spack not building
- Add timing info to netcdf-4 logging HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from netcdf-c.