I'm trying to figure out how to handle multiple GRASS versions. I see that G_gisinit() and G_no_gisinit() compare the version passed to it with GIS_H_VERSION. And this currently in 6.4RCx is set to an SVN revision number.
Since GIS_H_VERSION gets compiled into any external software that links to GRASS libraries - GDAL/GRASS plugin and QGIS - GRASS 6.4RC4 != GRASS 6.4RC5 and I have to rebuild *everything* for it all to happily coexist. Nightmare for distribution.
When GRASS 6.4 is final, will this be set to some fixed value that will not change between revisions (ie 6.4.x)? The library API shouldn't change in minor revisions, so external software shouldn't have to depend on an exact version of GRASS.
Users installing binaries may not update all (GRASS/GDAL/QGIS/other) in a timely manner. Packagers would otherwise have to rebuild software that hasn't changed just so it works with a minor GRASS update.
-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/
"We are at war with them. Neither in hatred nor revenge and with no particular pleasure I shall kill every ___ I can until the war is over. That is my duty."
"Don't you even hate 'em?"
"What good would it do if I did? If all the many millions of people of the allied nations devoted an entire year exclusively to hating the ____ it wouldn't kill one ___ nor shorten the war one day."
<Ha, ha> "And it might give 'em all stomach ulcers."
- Tarzan, on war
William Kyngesburye wrote:
I'm trying to figure out how to handle multiple GRASS versions. I see
that G_gisinit() and G_no_gisinit() compare the version passed to it
with GIS_H_VERSION. And this currently in 6.4RCx is set to an SVN
revision number.
Since GIS_H_VERSION gets compiled into any external software that
links to GRASS libraries - GDAL/GRASS plugin and QGIS - GRASS 6.4RC4 !
= GRASS 6.4RC5 and I have to rebuild *everything* for it all to
happily coexist. Nightmare for distribution.
When GRASS 6.4 is final, will this be set to some fixed value that
will not change between revisions (ie 6.4.x)? The library API
shouldn't change in minor revisions, so external software shouldn't
have to depend on an exact version of GRASS.
If gis.h doesn't change, then GIS_H_VERSION won't change
If gis.h is changed, the API and ABI have changed, so any programs
using libgis will need to be recompiled for the new ABI.
Checking GIS_H_VERSION simply causes any programs built for a
different version to produce an unambiguous error message rather than
producing obscure errors due to ABI incompatibility.
Users installing binaries may not update all (GRASS/GDAL/QGIS/other)
in a timely manner. Packagers would otherwise have to rebuild
software that hasn't changed just so it works with a minor GRASS update.
Anything which changes GIS_H_VERSION isn't a minor update.
--
Glynn Clements <glynn@gclements.plus.com>
On Jun 13, 2009, at 12:31 PM, Glynn Clements wrote:
William Kyngesburye wrote:
Users installing binaries may not update all (GRASS/GDAL/QGIS/other)
in a timely manner. Packagers would otherwise have to rebuild
software that hasn't changed just so it works with a minor GRASS update.
Anything which changes GIS_H_VERSION isn't a minor update.
So this implies that the API or ABI might change in a minor version update? Yuck. Or did this just happen in the RCs to stabilize for a final release?
-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/
The equator is so long, it could encircle the earth completely once.
William Kyngesburye wrote:
>> Users installing binaries may not update all (GRASS/GDAL/QGIS/other)
>> in a timely manner. Packagers would otherwise have to rebuild
>> software that hasn't changed just so it works with a minor GRASS
>> update.
>
> Anything which changes GIS_H_VERSION isn't a minor update.
So this implies that the API or ABI might change in a minor version
update? Yuck. Or did this just happen in the RCs to stabilize for a
final release?
Whenever someone changes gis.h, the ABI might change as a result.
It would be nice if this didn't happen without some forethought, but
past form indicates that this is an unrealistic goal.
Hopefully, once 6.4.0 is released, people will stick to the release
version when building binary packages of QGIS etc for distribution.
--
Glynn Clements <glynn@gclements.plus.com>