3.6.4 Release
Greg Troxel
gdt at lexort.com
Mon Jun 8 11:04:42 PDT 2026
Thanks. I updated from git and still have
gmake[1]: Entering directory '/n0/gdt/SOFTWARE/GEO/POSTGIS/postgis/BUILD/postgis'
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -Dz_off_t=long -I/usr/include -I/usr/pkg/include/libxml2 -I/usr/include/readline -I/usr/pkg/include -fPIC -DPIC -fvisibility=hidden -I../../liblwgeom -I../liblwgeom -std=gnu11 -g -O2 -fno-math-errno -fno-signed-zeros -Wall -O2 -I../../libpgcommon -I../../deps/flatgeobuf -I../../deps/wagyu -I../../deps/uthash/include -I/usr/pkg/include -I/usr/pkg/include -I/usr/pkg/include -I/usr/pkg/include/libxml2 -I/usr/pkg/include -I/usr/pkg/include/json-c -I/usr/pkg/include -DNDEBUG -fPIC -DPIC -I. -I./ -I/usr/pkg/include/postgresql/server -I/usr/pkg/include/postgresql/internal -Dz_off_t=long -I/usr/include -I/usr/pkg/include/libxml2 -I/usr/include/readline -I/usr/pkg/include -I/usr/pkg/include/libxml2 -I/usr/pkg/include -I/usr/pkg/include -c -o mvt.o ../../postgis/mvt.c
In file included from /usr/pkg/include/postgresql/server/storage/shmem.h:24,
from /usr/pkg/include/postgresql/server/storage/lock.h:25,
from /usr/pkg/include/postgresql/server/catalog/namespace.h:18,
from ../../postgis/mvt.h:35,
from ../../postgis/mvt.c:30:
../../postgis/mvt.c: In function ‘get_key_index_with_size’:
/usr/pkg/include/postgresql/server/utils/hsearch.h:98:23: error: called object is not a function or function pointer
98 | #define HASH_FUNCTION 0x0040 /* Set user defined hash function */
| ^~~~~~
/usr/pkg/include/uthash.h:151:3: note: in expansion of macro ‘HASH_FUNCTION’
151 | HASH_FUNCTION(keyptr, keylen, hashv); \
| ^~~~~~~~~~~~~
so it looks like pgsql itself -- or at least my build -- exposes all of
utils/hsearch.h, when someone includes catalog/namespace.h. I traced
the include chain and code reading matches the error message.
I see now that the problem is that postgis has a vendored copy of
uthash, and it's been modified rename HASH_FUNCTION to UTHASH_FUNCTION
(or something like that), but that hasn't been pushed upstream to
uthash, or they rejected it. Really, both uthash and pgsql using
HASH_FUNCTION in a public header is a namespace pollution issues -- both
should be prefixed/etc. somehow.
The postgis package does not depend on uthash, so the compiler doesn't
see those files when building.
I suspect I just didn't have uthash installed the times I previously
built postgis from git.
I removed the uthash package, and then the build went ok (with ctype UB
warnings).
So there's nothing to be done for 3.6.4 -- I'm now confident this is not
new.
More information about the postgis-devel
mailing list