osgeo / gdal-grass Goto Github PK
View Code? Open in Web Editor NEWGDAL-GRASS GIS driver (https://github.com/OSGeo/gdal-grass/blob/main/docs/grass_raster.md and https://github.com/OSGeo/gdal-grass/blob/main/docs/grass_vector.md)
GDAL-GRASS GIS driver (https://github.com/OSGeo/gdal-grass/blob/main/docs/grass_raster.md and https://github.com/OSGeo/gdal-grass/blob/main/docs/grass_vector.md)
Compiles fine against GDAL 3.5.1, but hitting undefined symbol errors with any kind of execution, which go away if I simply remove the GRASS plugins. My guess is a simple update is req to reflect changes in 3.5.1
gdalinfo --version
ERROR 1: /discover/swdev/sacs/sw/base/gcc12-3.5.1/gdal-3.5.1/lib/gdalplugins/ogr_GRASS.so: undefined symbol: _ZNK11GDALDataset19GetFieldDomainNamesB5cxx11EPKPKc
ERROR 1: /discover/swdev/sacs/sw/base/gcc12-3.5.1/gdal-3.5.1/lib/gdalplugins/ogr_GRASS.so: undefined symbol: _ZNK11GDALDataset19GetFieldDomainNamesB5cxx11EPKPKc
ERROR 1: /discover/swdev/sacs/sw/base/gcc12-3.5.1/gdal-3.5.1/lib/gdalplugins/gdal_GRASS.so: undefined symbol: _ZNK11GDALDataset19GetFieldDomainNamesB5cxx11EPKPKc
ERROR 1: /discover/swdev/sacs/sw/base/gcc12-3.5.1/gdal-3.5.1/lib/gdalplugins/gdal_GRASS.so: undefined symbol: _ZNK11GDALDataset19GetFieldDomainNamesB5cxx11EPKPKc
GDAL 3.5.1, released 2022/06/30
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
This repository currently has no open or pending branches.
.github/workflows/publish.yml
actions/checkout v4
softprops/action-gh-release v2
.github/workflows/ubuntu.yml
actions/checkout v4
actions/setup-python v5
GDAL-GRASS 1.0.0 (from release tarball)
GDAL 3.5.0 (from git release branch)
GRASS 8.2.0 (from release tarball)
QGIS 3.24.3 (from git release branch)
gdalinfo --formats
outputs:
ERROR 1: /usr/lib/gdalplugins/gdal_GRASS.so: undefined symbol: GDALRegisterMe
ERROR 1: /usr/lib/gdalplugins/gdal_GRASS.so: undefined symbol: GDALRegister_GRASS
ERROR 1: /usr/lib/gdalplugins/ogr_GRASS.so: undefined symbol: GDALRegisterMe
ERROR 1: /usr/lib/gdalplugins/ogr_GRASS.so: undefined symbol: RegisterOGRGRASS
QGIS outputs:
ERROR 1: /usr/lib/gdalplugins/gdal_GRASS.so: undefined symbol: GDALRegisterMe
ERROR 1: /usr/lib/gdalplugins/gdal_GRASS.so: undefined symbol: GDALRegister_GRASS
ERROR 1: /usr/lib/gdalplugins/ogr_GRASS.so: undefined symbol: GDALRegisterMe
ERROR 1: /usr/lib/gdalplugins/ogr_GRASS.so: undefined symbol: RegisterOGRGRASS
ERROR 1: /usr/lib/gdalplugins/gdal_GRASS.so: undefined symbol: GDALRegisterMe
ERROR 1: /usr/lib/gdalplugins/gdal_GRASS.so: undefined symbol: GDALRegister_GRASS
ERROR 1: /usr/lib/gdalplugins/ogr_GRASS.so: undefined symbol: GDALRegisterMe
ERROR 1: /usr/lib/gdalplugins/ogr_GRASS.so: undefined symbol: RegisterOGRGRASS
GRASS outputs:
ERROR 1: /usr/lib/gdalplugins/gdal_GRASS.so: undefined symbol: GDALRegisterMe
ERROR 1: /usr/lib/gdalplugins/gdal_GRASS.so: undefined symbol: GDALRegister_GRASS
ERROR 1: /usr/lib/gdalplugins/ogr_GRASS.so: undefined symbol: GDALRegisterMe
ERROR 1: /usr/lib/gdalplugins/ogr_GRASS.so: undefined symbol: RegisterOGRGRASS
I was not able to find a release package of gdal-grass
at https://download.osgeo.org/. If there is one, please ignore this suggestion to make it available there too (e.g. at https://download.osgeo.org/gdal-grass/).
Another slightly related issue: the release package here on GH is named with version only:
https://github.com/OSGeo/gdal-grass/archive/refs/tags/1.0.2.tar.gz
It would be preferable to name this "gdal-grass-1.0.2.tar.gz" in the future.
I have tried to compile the current driver version on my Fedora 38 box:
cmake .. -DAUTOLOAD_DIR=/usr/lib64/gdalplugin \
-DGDAL_CONFIG_PREFER_PATH=/usr/bin/ -DGRASS_BIN_PREFER_PATH=$HOME/bin/
-- Found GDAL: /usr/lib64/libgdal.so (3.6.4)
-- Found GRASS_GISBASE: /home/mneteler/software/grass83/dist.x86_64-pc-linux-gnu (8.3.2dev)
-- Could NOT find PROJ (missing: PROJINC)
-- Using /usr/lib64/gdalplugin as GDAL shared library autoload directory
-- Configuring done (0.5s)
-- Generating done (0.0s)
CMake Warning:
Manually-specified variables were not used by the project:
GDAL_CONFIG_PREFER_PATH
-- Build files have been written to: /home/mneteler/software/gdal-grass/build
Since I can successfully compile GRASS GIS on the same machine (start script in $HOME/bin/
) I am a bit lost...
cd ~/software/gdal-grass
ag PROJINC
CMakeLists.txt
57: ${GRASS_INCLUDE} ${PROJINC})
66: ${GRASS_INCLUDE} ${PROJINC})
cmake/FindPROJ.cmake
10:set(PROJINC "")
12:get_grass_platform_var("${GRASS_GISBASE}/include/Make/Platform.make" "PROJINC"
13: PROJINC)
15:if(NOT "${PROJINC}" STREQUAL "")
16: string(REGEX REPLACE "-I(.*)" "\\1" PROJINC "${PROJINC}")
20:find_package_handle_standard_args(PROJ REQUIRED_VARS PROJINC)
... seems to fail on my system.
Here my setup:
which grass
~/bin/grass
grass --config
x86_64-pc-linux-gnu
./configure --with-cxx --enable-largefile --with-proj-share=/usr/share/proj --with-gdal=/usr/bin/gdal-config --with-geos --with-sqlite --with-nls --with-zstd --with-pdal --with-cairo --with-cairo-ldflags=-lfontconfig --with-freetype --with-freetype-includes=/usr/include/freetype2 --with-fftw --with-postgres --with-postgres-includes=/usr/include/pgsql --with-blas --with-blas-includes=/usr/include/atlas-x86_64-base/ --with-lapack --with-lapack-includes=/usr/include/atlas-x86_64-base/ --with-openmp --with-netcdf --without-bzlib --without-mysql --without-odbc CFLAGS=-g -Wall -Wstringop-truncation -Wshadow -Wlogical-op -Werror-implicit-function-declaration -fPIC -fno-common -fno-omit-frame-pointer -fexceptions -Wextra -Wunused -Wreturn-type -Wfatal-errors -march=native -std=gnu99 -fexceptions -fstack-protector -m64 -fdiagnostics-color LDFLAGS=-Wl,--no-undefined -Wl,-z,now CXXFLAGS=-g -Wall
gcc
/home/mneteler/software/grass83/dist.x86_64-pc-linux-gnu
/home/mneteler/software/grass83/dist.x86_64-pc-linux-gnu/etc/python
08018e34b2
8.3.2dev
2023-10-25T07:54:00+00:00
Ideas welcome :-)
As reported in Debian Bug #1055602:
Your package FTBFS with GDAL 3.8.0 from experimental:
g++ -Wall -fPIC -DUSE_CPL -DGRASS_GISBASE=\"/usr/lib/grass83\" -I/usr/include/gdal -I/usr/lib/grass83/include -I/usr/include/postgresql -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/build/libgdal-grass-1.0.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o ogrgrasslayer.o ogrgrasslayer.cpp In file included from /usr/include/gdal/ogr_geometry.h:36, from /usr/include/gdal/ogr_feature.h:36, from /usr/include/gdal/ogrsf_frmts.h:35, from ogrgrass.h:33, from ogrgrassdriver.cpp:29: /usr/include/gdal/cpl_json.h:97:36: error: expected ')' before 'nVal' 97 | explicit CPLJSONObject(uint64_t nVal); | ~ ^~~~~ | ) /usr/include/gdal/cpl_json.h:119:41: error: 'uint64_t' has not been declared 119 | void Add(const std::string &osName, uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:119:10: error: 'void CPLJSONObject::Add(const std::string&, int)' cannot be overloaded with 'void CPLJSONObject::Add(const std::string&, int)' 119 | void Add(const std::string &osName, uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:117:10: note: previous declaration 'void CPLJSONObject::Add(const std::string&, int)' 117 | void Add(const std::string &osName, int nValue); | ^~~ /usr/include/gdal/cpl_json.h:131:41: error: 'uint64_t' has not been declared 131 | void Set(const std::string &osName, uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:131:10: error: 'void CPLJSONObject::Set(const std::string&, int)' cannot be overloaded with 'void CPLJSONObject::Set(const std::string&, int)' 131 | void Set(const std::string &osName, uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:129:10: note: previous declaration 'void CPLJSONObject::Set(const std::string&, int)' 129 | void Set(const std::string &osName, int nValue); | ^~~ /usr/include/gdal/cpl_json.h:245:14: error: 'uint64_t' has not been declared 245 | void Add(uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:245:10: error: 'void CPLJSONArray::Add(int)' cannot be overloaded with 'void CPLJSONArray::Add(int)' 245 | void Add(uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:243:10: note: previous declaration 'void CPLJSONArray::Add(int)' 243 | void Add(int nValue); | ^~~ In file included from /usr/include/gdal/ogr_geometry.h:36, from /usr/include/gdal/ogr_feature.h:36, from /usr/include/gdal/ogrsf_frmts.h:35, from ogrgrass.h:33, from ogrgrassdatasource.cpp:30: /usr/include/gdal/cpl_json.h:97:36: error: expected ')' before 'nVal' 97 | explicit CPLJSONObject(uint64_t nVal); | ~ ^~~~~ | ) /usr/include/gdal/cpl_json.h:119:41: error: 'uint64_t' has not been declared 119 | void Add(const std::string &osName, uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:119:10: error: 'void CPLJSONObject::Add(const std::string&, int)' cannot be overloaded with 'void CPLJSONObject::Add(const std::string&, int)' 119 | void Add(const std::string &osName, uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:117:10: note: previous declaration 'void CPLJSONObject::Add(const std::string&, int)' 117 | void Add(const std::string &osName, int nValue); | ^~~ /usr/include/gdal/cpl_json.h:131:41: error: 'uint64_t' has not been declared 131 | void Set(const std::string &osName, uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:131:10: error: 'void CPLJSONObject::Set(const std::string&, int)' cannot be overloaded with 'void CPLJSONObject::Set(const std::string&, int)' 131 | void Set(const std::string &osName, uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:129:10: note: previous declaration 'void CPLJSONObject::Set(const std::string&, int)' 129 | void Set(const std::string &osName, int nValue); | ^~~ /usr/include/gdal/cpl_json.h:245:14: error: 'uint64_t' has not been declared 245 | void Add(uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:245:10: error: 'void CPLJSONArray::Add(int)' cannot be overloaded with 'void CPLJSONArray::Add(int)' 245 | void Add(uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:243:10: note: previous declaration 'void CPLJSONArray::Add(int)' 243 | void Add(int nValue); | ^~~ In file included from /usr/include/gdal/ogr_geometry.h:36, from /usr/include/gdal/ogr_feature.h:36, from /usr/include/gdal/ogrsf_frmts.h:35, from ogrgrass.h:33, from ogrgrasslayer.cpp:31: /usr/include/gdal/cpl_json.h:97:36: error: expected ')' before 'nVal' 97 | explicit CPLJSONObject(uint64_t nVal); | ~ ^~~~~ | ) /usr/include/gdal/cpl_json.h:119:41: error: 'uint64_t' has not been declared 119 | void Add(const std::string &osName, uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:119:10: error: 'void CPLJSONObject::Add(const std::string&, int)' cannot be overloaded with 'void CPLJSONObject::Add(const std::string&, int)' 119 | void Add(const std::string &osName, uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:117:10: note: previous declaration 'void CPLJSONObject::Add(const std::string&, int)' 117 | void Add(const std::string &osName, int nValue); | ^~~ /usr/include/gdal/cpl_json.h:131:41: error: 'uint64_t' has not been declared 131 | void Set(const std::string &osName, uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:131:10: error: 'void CPLJSONObject::Set(const std::string&, int)' cannot be overloaded with 'void CPLJSONObject::Set(const std::string&, int)' 131 | void Set(const std::string &osName, uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:129:10: note: previous declaration 'void CPLJSONObject::Set(const std::string&, int)' 129 | void Set(const std::string &osName, int nValue); | ^~~ /usr/include/gdal/cpl_json.h:245:14: error: 'uint64_t' has not been declared 245 | void Add(uint64_t nValue); | ^~~~~~~~ /usr/include/gdal/cpl_json.h:245:10: error: 'void CPLJSONArray::Add(int)' cannot be overloaded with 'void CPLJSONArray::Add(int)' 245 | void Add(uint64_t nValue); | ^~~ /usr/include/gdal/cpl_json.h:243:10: note: previous declaration 'void CPLJSONArray::Add(int)' 243 | void Add(int nValue); | ^~~ ogrgrassdriver.cpp: In function 'void RegisterOGRGRASS()': ogrgrassdriver.cpp:99:39: warning: 'static OGRSFDriverRegistrar* OGRSFDriverRegistrar::GetRegistrar()' is deprecated [-Wdeprecated-declarations] 99 | OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver ); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~ /usr/include/gdal/ogrsf_frmts.h:592:34: note: declared here 592 | static OGRSFDriverRegistrar *GetRegistrar() | ^~~~~~~~~~~~ ogrgrassdriver.cpp:99:57: warning: 'void OGRSFDriverRegistrar::RegisterDriver(OGRSFDriver*)' is deprecated [-Wdeprecated-declarations] 99 | OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver ); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ /usr/include/gdal/ogrsf_frmts.h:596:10: note: declared here 596 | void RegisterDriver(OGRSFDriver *poDriver) | ^~~~~~~~~~~~~~
The full buildlog is attached.
Two pytests may be saved from the GDAL repo:
(as they will be removed from GDAL in OSGeo/gdal#5672)
and use them here in the CI.
Add CMake support for full GDAL compatibility.
For inspiration, see
https://github.com/OSGeo/gdal-extra-drivers/tree/master/cmake
A neat change log has accumulated since the 1.0.2 release: 1.0.2...main
Perhaps the biggest change is the added support of CMake.
Maybe it is time for a new release: 1.0.3?
There is a pending pull request #37, which I'm not sure if it should go to a patch release or rather to 1.1.0?
A future 1.1.0 release could possibly also be a the first release with CMake only (ie. dropping Autotools configure) โ to simplify maintenance. If this proposition is agreed upon, I'd suggest we deprecate Autotools configure with the 1.0.3 release and then create a 1.0 release branch.
gdal-grass fails to build with GDAL 3.6.0-rc1:
g++ -Wall -fPIC -DUSE_CPL -DGRASS_GISBASE=\"/usr/lib/grass82\" -I/usr/include/gdal -I/usr/lib/grass82/include -I/usr/include/postgresql -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/build/libgdal-grass-1.0.1=. -fstack-protector-strong -Wformat -Werror=format-security -c -o grass.o grass.cpp
g++ -Wall -fPIC -DUSE_CPL -DGRASS_GISBASE=\"/usr/lib/grass82\" -I/usr/include/gdal -I/usr/lib/grass82/include -I/usr/include/postgresql -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/build/libgdal-grass-1.0.1=. -fstack-protector-strong -Wformat -Werror=format-security -c -o ogrgrassdriver.o ogrgrassdriver.cpp
g++ -Wall -fPIC -DUSE_CPL -DGRASS_GISBASE=\"/usr/lib/grass82\" -I/usr/include/gdal -I/usr/lib/grass82/include -I/usr/include/postgresql -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/build/libgdal-grass-1.0.1=. -fstack-protector-strong -Wformat -Werror=format-security -c -o ogrgrassdatasource.o ogrgrassdatasource.cpp
grass.cpp:106:17: error: 'const char* GRASSDataset::_GetProjectionRef()' marked 'override', but does not override
106 | const char *_GetProjectionRef(void) override;
| ^~~~~~~~~~~~~~~~~
grass.cpp: In member function 'virtual const OGRSpatialReference* GRASSDataset::GetSpatialRef() const':
grass.cpp:108:16: error: 'GetSpatialRefFromOldGetProjectionRef' was not declared in this scope
108 | return GetSpatialRefFromOldGetProjectionRef();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ogrgrassdriver.cpp: In function 'void RegisterOGRGRASS()':
ogrgrassdriver.cpp:99:39: warning: 'static OGRSFDriverRegistrar* OGRSFDriverRegistrar::GetRegistrar()' is deprecated [-Wdeprecated-declarations]
99 | OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver );
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
In file included from ogrgrass.h:33,
from ogrgrassdriver.cpp:29:
/usr/include/gdal/ogrsf_frmts.h:491:34: note: declared here
491 | static OGRSFDriverRegistrar *GetRegistrar() OGR_DEPRECATED("Use GDALDriverManager class instead");
| ^~~~~~~~~~~~
ogrgrassdriver.cpp:99:57: warning: 'void OGRSFDriverRegistrar::RegisterDriver(OGRSFDriver*)' is deprecated [-Wdeprecated-declarations]
99 | OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver );
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/usr/include/gdal/ogrsf_frmts.h:494:17: note: declared here
494 | void RegisterDriver( OGRSFDriver * poDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead");
| ^~~~~~~~~~~~~~
Full buildlog: libgdal-grass_1.0.1-2_amd64.txt
If GRASS is compiled with PG, then it is necessary to provide PG includes and linking parameters also for gdal-grass as include/grass/config.h
then has #define HAVE_POSTGRES 1
affecting include/grass/vect/dig_structs.h
Symptom for a reference:
include/grass/vect/dig_structs.h:31:10: fatal error: libpq-fe.h: No such file or directory
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.