Package Details: filegdb-api 1.5.1-3

Git Clone URL: https://aur.archlinux.org/filegdb-api.git (read-only, click to copy)
Package Base: filegdb-api
Description: ESRI File Geodatabase (FileGDB) API
Upstream URL: https://github.com/Esri/file-geodatabase-api
Keywords: GIS
Licenses: Apache
Submitter: saultdon
Maintainer: saultdon
Last Packager: saultdon
Votes: 2
Popularity: 0.000000
First Submitted: 2013-09-14 01:36
Last Updated: 2019-05-06 19:14

Dependencies (3)

Required by (1)

Sources (1)

Latest Comments

« First ‹ Previous 1 2

saultdon commented on 2016-01-25 18:32

@striges1111 Good work. Would you like to be a co-maintainer to make those changes?

striges1111 commented on 2016-01-18 02:57

Hi @saultdon,

The ABI issue against gcc 5.x could be solved by adding -D_GLIBCXX_USE_CXX11_ABI=0 in `make.include`. Could you update the PKGBUILD using this patch? In addition, new Makefile in v1.4 filegdb-api seems already included /usr/include/libxml2.


diff --git a/PKGBUILD b/PKGBUILD
index afbfcb3..bb73055 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -35,6 +35,9 @@ build() {
#Setup LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$srcdir/${pkgname}/lib:$LD_LIBRARY_PATH

+ #Modify make.include to use old ABI
+ cd "$srcdir/${pkgname}/include"
+ sed -i '/-D_LARGEFILE64_SOURCE/ s/$/ -D_GLIBCXX_USE_CXX11_ABI=0/' make.include

#Building all samples
cd "$srcdir/${pkgname}/samples"
@@ -44,8 +47,8 @@ build() {
cd "$srcdir/${pkgname}/samples/ProcessTopologies"

# Insert libxml2 library path to Makefile
- sed -i '/^CXXFLAGS=/ s/$/ -I\/usr\/include\/libxml2\//' Makefile
- make
+ #sed -i '/^CXXFLAGS=/ s/$/ -I\/usr\/include\/libxml2\//' Makefile
+ #make
}

d7rk commented on 2015-12-18 08:42

@saultdon
Thanks Saultdon, compiling without the filegdb-api worked.
Have a great day,

saultdon commented on 2015-12-16 21:30

Hey @d7rk, I think this is going to be an upstream fix we have to wait for because I can't think of anything off the top of my head for a patch. I think it's related to the GCC C++ ABI change recently.

In regards to the gdal-filegdb package, I was able to compile that after removing filegdb-api from the depends array, removing --with-fgdb=/usr from the configure, and then uninstalling the gdal-grass plugin package (gdal-grass can be recompiled again once grass is re-compiled if that's installed).

But that of course leaves gdal-filegdb lacking ESRI FileGDB API driver support, but it comes with the OpenFileGDB driver by default now which at least gives you read access to file geodatabases (I can't remember if there are write limitations...).

d7rk commented on 2015-12-14 13:11

Hi Saultdon,

Building of this package fails, resulting in failure of building gdal-filegdb and thus of qgis. (or maybe it is the same error when building gdal-filegdb).

Here is the issue:
[code]
==> Starting build()...
make -C Domains
make[1]: Entering directory '/home/v/tmp/yaourt-tmp-v/aur-filegdb-api/src/filegdb-api/samples/Domains'
g++ -fPIC -O3 -m64 -W -fexceptions -D_CONSOLE -DUNICODE -D_UNICODE -DUNIX -D_REENTRANT -DFILEGDB_API -D__USE_FILE_OFFSET64 -DUNIX_FILEGDB_API -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I../../include -I. -D_FORTIFY_SOURCE=2 -Dlinux -c Domains.cpp
g++ -fPIC -O3 -m64 -W -fexceptions -D_CONSOLE -DUNICODE -D_UNICODE -DUNIX -D_REENTRANT -DFILEGDB_API -D__USE_FILE_OFFSET64 -DUNIX_FILEGDB_API -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I../../include -I. -m64 -L"../../lib" -o ../bin/Domains ./Domains.o -lFileGDBAPI
./Domains.o: In function `main':
Domains.cpp:(.text.startup+0x7b): undefined reference to `FileGDBAPI::OpenGeodatabase(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::Geodatabase&)'
Domains.cpp:(.text.startup+0xd4): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0x185): undefined reference to `FileGDBAPI::Geodatabase::DeleteDomain(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
Domains.cpp:(.text.startup+0x21d): undefined reference to `FileGDBAPI::Geodatabase::DeleteDomain(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
Domains.cpp:(.text.startup+0x533): undefined reference to `FileGDBAPI::Geodatabase::CreateDomain(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Domains.cpp:(.text.startup+0x56f): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0x684): undefined reference to `FileGDBAPI::Geodatabase::GetDomainDefinition(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
Domains.cpp:(.text.startup+0x6d8): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0x96e): undefined reference to `FileGDBAPI::Geodatabase::CreateDomain(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Domains.cpp:(.text.startup+0x9aa): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0xb87): undefined reference to `FileGDBAPI::Geodatabase::AlterDomain(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Domains.cpp:(.text.startup+0xbc0): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0xce9): undefined reference to `FileGDBAPI::Geodatabase::OpenTable(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::Table&)'
Domains.cpp:(.text.startup+0xd40): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0xec2): undefined reference to `FileGDBAPI::Table::AlterField(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Domains.cpp:(.text.startup+0xefb): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0xf7b): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorRecord(int, int&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0x1124): undefined reference to `FileGDBAPI::Table::AlterField(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Domains.cpp:(.text.startup+0x115d): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0x11dd): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorRecord(int, int&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
Domains.cpp:(.text.startup+0x12f4): undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
collect2: error: ld returned 1 exit status
Makefile:30: recipe for target '../bin/Domains' failed
make[1]: *** [../bin/Domains] Error 1
make[1]: Leaving directory '/home/v/tmp/yaourt-tmp-v/aur-filegdb-api/src/filegdb-api/samples/Domains'
Makefile:27: recipe for target 'Domains' failed
make: *** [Domains] Error 2
==> ERROR: A failure occurred in build().
Aborting...
==> ERROR: Makepkg was unable to build filegdb-api.
[/code]

Would you have any idea? Thanks!

marcelhuber commented on 2014-07-01 08:17

Just for clarification of the last comment of mine:
The -Dlinux define is needed for successful building on linux.
The following code snippet shows the relevant section:

#ifndef EXPORT_FILEGDB_API
# if defined linux || defined __APPLE__
# define EXT_FILEGDB_API
# else
# define EXT_FILEGDB_API _declspec(dllimport)
# endif
#else

marcelhuber commented on 2014-07-01 08:13

Just for clarification of the last comment of mine:
The -Dlinux define is needed for successful building on linux. Curiously the dependant package gdal-filegdb defines it.
The following code snippet shows the relevant section:

#ifndef EXPORT_FILEGDB_API
# if defined linux || defined __APPLE__
# define EXT_FILEGDB_API
# else
# define EXT_FILEGDB_API _declspec(dllimport)
# endif
#else
...

marcelhuber commented on 2014-03-18 10:01

I suggest adding the following line to the build section just after export LD_LIBRARY_PATH:

export CPPFLAGS=-Dlinux

Otherwise it did not compile on my box.

saultdon commented on 2013-09-14 16:58

I compiled this just to enable the FileGDB driver in gdal.

I think GDAL uses hardcoded paths in its source when looking for the libs and headers, so if those need to be put in other parts of the filesystem just let me know.

Libs and headers are in /usr/lib/filegdb-api/lib and /usr/lib/filegdb-api/include

Docs and licence are in /usr/share/doc/filegdb-api and /usr/share/license/filegdb-api