A little while back some users started complaining that the contrib module I develop (MADlib) was failing to build with the following error:
------ /usr/include/postgresql/9.2/server/port.h:480:32: error: declaration of 'char* mkdtemp(char*)' has a different exception specifier /usr/include/stdlib.h:663:14: error: from previous declaration 'char* mkdtemp(char*) throw ()' ------ After some research I've tracked this down to the following commit from ~4 months ago: ------ https://github.com/postgres/postgres/commit/a919937f112eb2f548d5f9bd1b3a7298375e6380 ------ Which added a definition of mkdtemp into port.h that conflicts with the definition in the system header files. The following is a simple program that demonstrates the issue: ------ bash$ cat /tmp/foo.cpp #include "postgres.h" int main() { return 0; } bash$ gcc -o foo foo.cpp -I`pg_config --includedir-server` -pedantic In file included from /usr/pgsql-9.2/include/server/c.h:860, from /usr/pgsql-9.2/include/server/postgres.h:47, from foo.cpp:1: /usr/pgsql-9.2/include/server/port.h:479: error: declaration of ‘char* mkdtemp(char*)’ throws different exceptions /usr/include/stdlib.h:663: error: from previous declaration ‘char* mkdtemp(char*) throw ()’ ------ Reproducible on ubuntu 14.04, centos6, and likely others. Regards, Caleb