Re: Compiling C Extension Functions against PostgreSQL 12 - Mailing list pgsql-general
From | TalGloz |
---|---|
Subject | Re: Compiling C Extension Functions against PostgreSQL 12 |
Date | |
Msg-id | 1588455846755-0.post@n3.nabble.com Whole thread Raw |
In response to | Re: Compiling C Extension Functions against PostgreSQL 12 (Adrian Klaver <adrian.klaver@aklaver.com>) |
Responses |
Re: Compiling C Extension Functions against PostgreSQL 12
|
List | pgsql-general |
Adrian Klaver-4 wrote > On 5/2/20 2:18 PM, Tom Lane wrote: >> TalGloz < > glozmantal@ > > writes: >>> I dont understand why the output for Postgres 12 >>> g++ -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute >>> -Wformat-security -fno-strict-aliasing -fwrapv -O2 -o seal_diff_cpp.o -c >>> seal_diff_cpp.cpp >>> seal_diff_cpp.cpp:2:10: fatal error: postgres.h: No such file or >>> directory >>> 2 | #include "postgres.h" >>> | ^~~~~~~~~~~~ >> >>> looks different form the ones of Postgres 10 >> >> Looking at your Makefile, it seems to be expecting that CXXFLAGS will >> be honored in the build, and it isn't being. >> >> As far as I can see from pgxs.mk, you're supposed to spell that >> PG_CXXFLAGS. Probably, it accidentally worked to do it the other >> way in v10, but no longer does, likely as a result of the fact that >> there's now some minimal amount of C++ code in core PG. > > I was looking at that and was trying to figure out this from pgxs.mk: > > # PG_CXXFLAGS -- will be appended to CXXFLAGS > > ... > > ifdef PG_CXXFLAGS > override CXXFLAGS := $(CXXFLAGS) $(PG_CXXFLAGS) > > Was wondering if this might be culprit(from example in pgxs.mk): > > # include $(PGXS) > > The OP does not have that in their make file. > >> >> I'm a little dubious about whether overriding CXX is a good idea now, >> too. >> (Likely the core setting is the same, but if it were pointing at a >> different compiler that could cause trouble.) >> >> regards, tom lane >> >> > > > -- > Adrian Klaver > adrian.klaver@ The "include $(PGXS)" is defined in the Makefile. After changig the CXXFLAGS to PG_CXXFLAGS I get: *g++ -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread -I/usr/pgsql-12/include/server -I/usr/local/include -I/usr/local/include/cppcodec -o seal_diff_cpp.o -c seal_diff_cpp.cpp g++ -shared -o seal_diff_cpp.so seal_diff_cpp.o -L/usr/pgsql-12/lib -L/usr/lib64 -L/usr/lib64 -Wl,--as-needed -Wl,-rpath,'/usr/pgsql-12/lib',--enable-new-dtags -L/usr/local/lib -lseal -pthread /usr/lib64/ccache/clang -xc++ -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -O2 -I. -I./ -I/usr/pgsql-12/include/server -I/usr/pgsql-12/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include -flto=thin -emit-llvm -c -o seal_diff_cpp.bc seal_diff_cpp.cpp* In file included from seal_diff_cpp.cpp:23: In file included from /usr/local/include/seal/seal.h:3: In file included from /usr/local/include/seal/bigpoly.h:9: In file included from /usr/local/include/seal/biguint.h:6: In file included from /usr/local/include/seal/memorypoolhandle.h:6: In file included from /usr/local/include/seal/util/mempool.h:12: /usr/local/include/seal/util/locks.h:12:50: error: no template named 'shared_mutex' in namespace 'std'; did you mean 'shared_ptr'? using ReaderLock = std::shared_lock<std::shared_mutex>; ~~~~~^ /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/shared_ptr.h:103:11: note: 'shared_ptr' declared here class shared_ptr : public __shared_ptr<_Tp> ^ In file included from seal_diff_cpp.cpp:23: In file included from /usr/local/include/seal/seal.h:3: In file included from /usr/local/include/seal/bigpoly.h:9: In file included from /usr/local/include/seal/biguint.h:6: In file included from /usr/local/include/seal/memorypoolhandle.h:6: In file included from /usr/local/include/seal/util/mempool.h:12: /usr/local/include/seal/util/locks.h:12:50: error: use of class template 'std::shared_ptr' requires template arguments using ReaderLock = std::shared_lock<std::shared_mutex>; ^ /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/shared_ptr.h:103:11: note: template is declared here class shared_ptr : public __shared_ptr<_Tp> ^ In file included from seal_diff_cpp.cpp:23: In file included from /usr/local/include/seal/seal.h:3: In file included from /usr/local/include/seal/bigpoly.h:9: In file included from /usr/local/include/seal/biguint.h:6: In file included from /usr/local/include/seal/memorypoolhandle.h:6: In file included from /usr/local/include/seal/util/mempool.h:12: /usr/local/include/seal/util/locks.h:14:50: error: no template named 'shared_mutex' in namespace 'std'; did you mean 'shared_ptr'? using WriterLock = std::unique_lock<std::shared_mutex>; ~~~~~^ /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/shared_ptr.h:103:11: note: 'shared_ptr' declared here class shared_ptr : public __shared_ptr<_Tp> ^ In file included from seal_diff_cpp.cpp:23: In file included from /usr/local/include/seal/seal.h:3: In file included from /usr/local/include/seal/bigpoly.h:9: In file included from /usr/local/include/seal/biguint.h:6: In file included from /usr/local/include/seal/memorypoolhandle.h:6: In file included from /usr/local/include/seal/util/mempool.h:12: /usr/local/include/seal/util/locks.h:14:50: error: use of class template 'std::shared_ptr' requires template arguments using WriterLock = std::unique_lock<std::shared_mutex>; ^ /usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/shared_ptr.h:103:11: note: template is declared here class shared_ptr : public __shared_ptr<_Tp> ^ In file included from seal_diff_cpp.cpp:23: In file included from /usr/local/include/seal/seal.h:3: In file included from /usr/local/include/seal/bigpoly.h:9: In file included from /usr/local/include/seal/biguint.h:6: In file included from /usr/local/include/seal/memorypoolhandle.h:6: In file included from /usr/local/include/seal/util/mempool.h:12: /usr/local/include/seal/util/locks.h:21:20: error: unknown type name 'ReaderLock' inline ReaderLock acquire_read() ^ /usr/local/include/seal/util/locks.h:26:20: error: unknown type name 'WriterLock' inline WriterLock acquire_write() ^ /usr/local/include/seal/util/locks.h:31:20: error: unknown type name 'ReaderLock' inline ReaderLock try_acquire_read() ^ /usr/local/include/seal/util/locks.h:36:20: error: unknown type name 'WriterLock' inline WriterLock try_acquire_write() ^ /usr/local/include/seal/util/locks.h:46:18: error: no type named 'shared_mutex' in namespace 'std' std::shared_mutex rw_lock_mutex_; ~~~~~^ In file included from seal_diff_cpp.cpp:23: In file included from /usr/local/include/seal/seal.h:3: In file included from /usr/local/include/seal/bigpoly.h:9: In file included from /usr/local/include/seal/biguint.h:6: In file included from /usr/local/include/seal/memorypoolhandle.h:6: /usr/local/include/seal/util/mempool.h:561:17: error: unknown type name 'ReaderLock' ReaderLock lock(pools_locker_.acquire_read()); ^ In file included from seal_diff_cpp.cpp:23: In file included from /usr/local/include/seal/seal.h:3: In file included from /usr/local/include/seal/bigpoly.h:9: In file included from /usr/local/include/seal/biguint.h:6: /usr/local/include/seal/memorypoolhandle.h:144:20: error: no matching conversion for functional-style cast from 'shared_ptr<seal::util::MemoryPoolMT>' to 'seal::MemoryPoolHandle' return MemoryPoolHandle(std::make_shared<util::MemoryPoolMT>()); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/local/include/seal/memorypoolhandle.h:70:9: note: candidate constructor not viable: no known conversion from 'shared_ptr<seal::util::MemoryPoolMT>' to 'const seal::MemoryPoolHandle' for 1st argument MemoryPoolHandle(const MemoryPoolHandle ©) ^ /usr/local/include/seal/memorypoolhandle.h:81:9: note: candidate constructor not viable: no known conversion from 'shared_ptr<seal::util::MemoryPoolMT>' to 'seal::MemoryPoolHandle' for 1st argument MemoryPoolHandle(MemoryPoolHandle &&source) noexcept ^ /usr/local/include/seal/memorypoolhandle.h:243:9: note: candidate constructor not viable: no known conversion from 'shared_ptr<seal::util::MemoryPoolMT>' to 'shared_ptr<util::MemoryPool>' for 1st argument MemoryPoolHandle(std::shared_ptr<util::MemoryPool> pool) noexcept : ^ /usr/local/include/seal/memorypoolhandle.h:61:9: note: candidate constructor not viable: requires 0 arguments, but 1 was provided MemoryPoolHandle() = default; ^ 11 errors generated. make: *** [/usr/pgsql-12/lib/pgxs/src/makefiles/../../src/Makefile.global:1047: seal_diff_cpp.bc] Error 1 Does it try to comply the seal related code using the llvm compiler? If yes, can I force it to se the GNU compiler instead? In my knolage the seal library doesn't work with llvm. Best regards, TalGloz -- Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
pgsql-general by date: