Thread: Compiling C Extension Functions against PostgreSQL 12

Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
I'm trying to upgrade from PostgreSQL 10 to 12 and I need to compile all my
manually created C extension functions against PostrgreSQL 12 before
starting the upgrade process. I have this Makefile that compiles perfectly
the seal_diff_cpp.cpp C extension function against PostgreSQL 10:

MODULES = seal_diff_cpp
PG_CONFIG = /usr/pgsql-10/bin/pg_config
PGXS = $(shell $(PG_CONFIG) --pgxs)
INCLUDEDIR = $(shell $(PG_CONFIG) --includedir-server)
INCLUDE_SEAL = /usr/local/include
INCLUDE_SEAL_LIB = /usr/local/lib
INCLUDE_CPPCODEC = /usr/local/include/cppcodec
CXX = g++
CXXFLAGS = -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread \
           -I$(INCLUDEDIR) -I$(INCLUDE_SEAL) -I$(INCLUDE_CPPCODEC)
SEAL_LDFLAGS = -L$(INCLUDE_SEAL_LIB) -lseal -pthread
include $(PGXS)
seal_diff_cpp.so: seal_diff_cpp.o
#       $(CXX) -Wl,--no-undefined -shared -o seal_diff_cpp.so
seal_diff_cpp.o $(LDFLAGS) $(SEAL_LDFLAGS)
        $(CXX) -shared -o seal_diff_cpp.so seal_diff_cpp.o $(LDFLAGS)
$(SEAL_LDFLAGS)
seal_diff_cpp.o: seal_diff_cpp.cpp
         $(CXX) $(CXXFLAGS) -o seal_diff_cpp.o -c seal_diff_cpp.cpp

When I execute it the output looks like this:

g++ -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread
-I/usr/pgsql-10/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-10/lib  
-L/usr/lib64 -Wl,--as-needed
-Wl,-rpath,'/usr/pgsql-10/lib',--enable-new-dtags -L/usr/local/lib -lseal
-pthread

And the seal_diff_cpp.so gets created without any problems. But when I use
PG_CONFIG = /usr/pgsql-12/bin/pg_config I get:

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>
      |          ^~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:19: seal_diff_cpp.o] Error 1

The Makefile has all the needed information to compile the seal_diff_cpp.so
against PostgreSQL 12:
/usr/pgsql-10/bin/pg_config --pgxs --->
/usr/pgsql-10/lib/pgxs/src/makefiles/pgxs.mk
/usr/pgsql-12/bin/pg_config --pgxs --->
/usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk

/usr/pgsql-10/bin/pg_config --includedir-server --->
/usr/pgsql-10/include/server
/usr/pgsql-12/bin/pg_config --includedir-server --->
/usr/pgsql-12/include/server (postgres.h is there)

I can't understand why it doesn't work.

TalGloz



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



Re: Compiling C Extension Functions against PostgreSQL 12

From
Adrian Klaver
Date:
On 5/2/20 12:28 PM, TalGloz wrote:
> I'm trying to upgrade from PostgreSQL 10 to 12 and I need to compile all my
> manually created C extension functions against PostrgreSQL 12 before
> starting the upgrade process. I have this Makefile that compiles perfectly
> the seal_diff_cpp.cpp C extension function against PostgreSQL 10:
> 
> MODULES = seal_diff_cpp
> PG_CONFIG = /usr/pgsql-10/bin/pg_config
> PGXS = $(shell $(PG_CONFIG) --pgxs)
> INCLUDEDIR = $(shell $(PG_CONFIG) --includedir-server)
> INCLUDE_SEAL = /usr/local/include
> INCLUDE_SEAL_LIB = /usr/local/lib
> INCLUDE_CPPCODEC = /usr/local/include/cppcodec
> CXX = g++
> CXXFLAGS = -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread \
>             -I$(INCLUDEDIR) -I$(INCLUDE_SEAL) -I$(INCLUDE_CPPCODEC)
> SEAL_LDFLAGS = -L$(INCLUDE_SEAL_LIB) -lseal -pthread
> include $(PGXS)
> seal_diff_cpp.so: seal_diff_cpp.o
> #       $(CXX) -Wl,--no-undefined -shared -o seal_diff_cpp.so
> seal_diff_cpp.o $(LDFLAGS) $(SEAL_LDFLAGS)
>          $(CXX) -shared -o seal_diff_cpp.so seal_diff_cpp.o $(LDFLAGS)
> $(SEAL_LDFLAGS)
> seal_diff_cpp.o: seal_diff_cpp.cpp
>           $(CXX) $(CXXFLAGS) -o seal_diff_cpp.o -c seal_diff_cpp.cpp
> 
> When I execute it the output looks like this:
> 
> g++ -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread
> -I/usr/pgsql-10/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-10/lib
> -L/usr/lib64 -Wl,--as-needed
> -Wl,-rpath,'/usr/pgsql-10/lib',--enable-new-dtags -L/usr/local/lib -lseal
> -pthread
> 
> And the seal_diff_cpp.so gets created without any problems. But when I use
> PG_CONFIG = /usr/pgsql-12/bin/pg_config I get:
> 
> 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>
>        |          ^~~~~~~~~~~~
> compilation terminated.
> make: *** [Makefile:19: seal_diff_cpp.o] Error 1
> 
> The Makefile has all the needed information to compile the seal_diff_cpp.so
> against PostgreSQL 12:
> /usr/pgsql-10/bin/pg_config --pgxs --->
> /usr/pgsql-10/lib/pgxs/src/makefiles/pgxs.mk
> /usr/pgsql-12/bin/pg_config --pgxs --->
> /usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk
> 
> /usr/pgsql-10/bin/pg_config --includedir-server --->
> /usr/pgsql-10/include/server
> /usr/pgsql-12/bin/pg_config --includedir-server --->
> /usr/pgsql-12/include/server (postgres.h is there)
> 
> I can't understand why it doesn't work.

Do you have Postgres 12 -dev package installed?

> 
> TalGloz
> 
> 
> 
> --
> Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
Adrian Klaver-4 wrote
> On 5/2/20 12:28 PM, TalGloz wrote:
>> I'm trying to upgrade from PostgreSQL 10 to 12 and I need to compile all
>> my
>> manually created C extension functions against PostrgreSQL 12 before
>> starting the upgrade process. I have this Makefile that compiles
>> perfectly
>> the seal_diff_cpp.cpp C extension function against PostgreSQL 10:
>> 
>> MODULES = seal_diff_cpp
>> PG_CONFIG = /usr/pgsql-10/bin/pg_config
>> PGXS = $(shell $(PG_CONFIG) --pgxs)
>> INCLUDEDIR = $(shell $(PG_CONFIG) --includedir-server)
>> INCLUDE_SEAL = /usr/local/include
>> INCLUDE_SEAL_LIB = /usr/local/lib
>> INCLUDE_CPPCODEC = /usr/local/include/cppcodec
>> CXX = g++
>> CXXFLAGS = -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread \
>>             -I$(INCLUDEDIR) -I$(INCLUDE_SEAL) -I$(INCLUDE_CPPCODEC)
>> SEAL_LDFLAGS = -L$(INCLUDE_SEAL_LIB) -lseal -pthread
>> include $(PGXS)
>> seal_diff_cpp.so: seal_diff_cpp.o
>> #       $(CXX) -Wl,--no-undefined -shared -o seal_diff_cpp.so
>> seal_diff_cpp.o $(LDFLAGS) $(SEAL_LDFLAGS)
>>          $(CXX) -shared -o seal_diff_cpp.so seal_diff_cpp.o $(LDFLAGS)
>> $(SEAL_LDFLAGS)
>> seal_diff_cpp.o: seal_diff_cpp.cpp
>>           $(CXX) $(CXXFLAGS) -o seal_diff_cpp.o -c seal_diff_cpp.cpp
>> 
>> When I execute it the output looks like this:
>> 
>> g++ -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread
>> -I/usr/pgsql-10/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-10/lib
>> -L/usr/lib64 -Wl,--as-needed
>> -Wl,-rpath,'/usr/pgsql-10/lib',--enable-new-dtags -L/usr/local/lib -lseal
>> -pthread
>> 
>> And the seal_diff_cpp.so gets created without any problems. But when I
>> use
>> PG_CONFIG = /usr/pgsql-12/bin/pg_config I get:
>> 
>> 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>
>>        |          ^~~~~~~~~~~~
>> compilation terminated.
>> make: *** [Makefile:19: seal_diff_cpp.o] Error 1
>> 
>> The Makefile has all the needed information to compile the
>> seal_diff_cpp.so
>> against PostgreSQL 12:
>> /usr/pgsql-10/bin/pg_config --pgxs --->
>> /usr/pgsql-10/lib/pgxs/src/makefiles/pgxs.mk
>> /usr/pgsql-12/bin/pg_config --pgxs --->
>> /usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk
>> 
>> /usr/pgsql-10/bin/pg_config --includedir-server --->
>> /usr/pgsql-10/include/server
>> /usr/pgsql-12/bin/pg_config --includedir-server --->
>> /usr/pgsql-12/include/server (postgres.h is there)
>> 
>> I can't understand why it doesn't work.
> 
> Do you have Postgres 12 -dev package installed?
> 
>> 
>> TalGloz
>> 
>> 
>> 
>> --
>> Sent from:
>> https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
>> 
>> 
> 
> 
> -- 
> Adrian Klaver

> adrian.klaver@

Yes, I've installed everything PostgreSQL 12 has to offer:

dnf list installed | grep "postgresql12"
postgresql12.x86_64                                12.2-2PGDG.f31                     
@pgdg12
postgresql12-contrib.x86_64                     12.2-2PGDG.f31                     
@pgdg12
postgresql12-devel.x86_64                       12.2-2PGDG.f31                     
@pgdg12
postgresql12-docs.x86_64                        12.2-2PGDG.f31                     
@pgdg12
postgresql12-libs.x86_64                          12.2-2PGDG.f31                     
@pgdg12
postgresql12-llvmjit.x86_64                       12.2-2PGDG.f31                     
@pgdg12
postgresql12-odbc.x86_64                        12.01.0000-1PGDG.f31            
@pgdg12
postgresql12-plperl.x86_64                       12.2-2PGDG.f31                     
@pgdg12
postgresql12-plpython.x86_64                   12.2-2PGDG.f31                     
@pgdg12
postgresql12-plpython3.x86_64                  12.2-2PGDG.f31                     
@pgdg12
postgresql12-pltcl.x86_64                         12.2-2PGDG.f31                     
@pgdg12
postgresql12-server.x86_64                       12.2-2PGDG.f31                     
@pgdg12
postgresql12-tcl.x86_64                           2.4.0-2.f31.2                        
@pgdg12
postgresql12-test.x86_64                         12.2-2PGDG.f31                     
@pgdg12



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



Re: Compiling C Extension Functions against PostgreSQL 12

From
Adrian Klaver
Date:
On 5/2/20 12:39 PM, TalGloz wrote:
> Adrian Klaver-4 wrote
>> On 5/2/20 12:28 PM, TalGloz wrote:
>>> I'm trying to upgrade from PostgreSQL 10 to 12 and I need to compile all
>>> my
>>> manually created C extension functions against PostrgreSQL 12 before
>>> starting the upgrade process. I have this Makefile that compiles
>>> perfectly
>>> the seal_diff_cpp.cpp C extension function against PostgreSQL 10:
>>>

> 
> Yes, I've installed everything PostgreSQL 12 has to offer:
> 
> dnf list installed | grep "postgresql12"
> postgresql12.x86_64                                12.2-2PGDG.f31
> @pgdg12
> postgresql12-contrib.x86_64                     12.2-2PGDG.f31
> @pgdg12
> postgresql12-devel.x86_64                       12.2-2PGDG.f31
> @pgdg12

Yeah, I missed part in your OP where said postgres.h was there. So:

1) Did you do both makes in the same directory?

2) If so did you do a make clean between builds?



-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
Adrian Klaver-4 wrote
> On 5/2/20 12:39 PM, TalGloz wrote:
>> Adrian Klaver-4 wrote
>>> On 5/2/20 12:28 PM, TalGloz wrote:
>>>> I'm trying to upgrade from PostgreSQL 10 to 12 and I need to compile
>>>> all
>>>> my
>>>> manually created C extension functions against PostrgreSQL 12 before
>>>> starting the upgrade process. I have this Makefile that compiles
>>>> perfectly
>>>> the seal_diff_cpp.cpp C extension function against PostgreSQL 10:
>>>>
> 
>> 
>> Yes, I've installed everything PostgreSQL 12 has to offer:
>> 
>> dnf list installed | grep "postgresql12"
>> postgresql12.x86_64                                12.2-2PGDG.f31
>> @pgdg12
>> postgresql12-contrib.x86_64                     12.2-2PGDG.f31
>> @pgdg12
>> postgresql12-devel.x86_64                       12.2-2PGDG.f31
>> @pgdg12
> 
> Yeah, I missed part in your OP where said postgres.h was there. So:
> 
> 1) Did you do both makes in the same directory?
> 
> 2) If so did you do a make clean between builds?
> 
> 
> 
> -- 
> Adrian Klaver

> adrian.klaver@

1) Yes I did.
2) Yes I did, though no .o .bc or .so files get created because of the error
when using PostgreSQL 12 settings.



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



Re: Compiling C Extension Functions against PostgreSQL 12

From
Adrian Klaver
Date:
On 5/2/20 1:03 PM, TalGloz wrote:
> Adrian Klaver-4 wrote
>> On 5/2/20 12:39 PM, TalGloz wrote:
>>> Adrian Klaver-4 wrote
>>>> On 5/2/20 12:28 PM, TalGloz wrote:
>>>>> I'm trying to upgrade from PostgreSQL 10 to 12 and I need to compile
>>>>> all
>>>>> my
>>>>> manually created C extension functions against PostrgreSQL 12 before
>>>>> starting the upgrade process. I have this Makefile that compiles
>>>>> perfectly
>>>>> the seal_diff_cpp.cpp C extension function against PostgreSQL 10:
>>>>>
>>
>>>
>>> Yes, I've installed everything PostgreSQL 12 has to offer:
>>>
>>> dnf list installed | grep "postgresql12"
>>> postgresql12.x86_64                                12.2-2PGDG.f31
>>> @pgdg12
>>> postgresql12-contrib.x86_64                     12.2-2PGDG.f31
>>> @pgdg12
>>> postgresql12-devel.x86_64                       12.2-2PGDG.f31
>>> @pgdg12
>>
>> Yeah, I missed part in your OP where said postgres.h was there. So:
>>
>> 1) Did you do both makes in the same directory?
>>
>> 2) If so did you do a make clean between builds?
>>
>>
>>
>> -- 
>> Adrian Klaver
> 
>> adrian.klaver@
> 
> 1) Yes I did.
> 2) Yes I did, though no .o .bc or .so files get created because of the error
> when using PostgreSQL 12 settings.

But they where created when you did the make against Postgres 10, correct?
So where those cleaned up?
> 
> 
> 
> --
> Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
Adrian Klaver-4 wrote
> On 5/2/20 1:03 PM, TalGloz wrote:
>> Adrian Klaver-4 wrote
>>> On 5/2/20 12:39 PM, TalGloz wrote:
>>>> Adrian Klaver-4 wrote
>>>>> On 5/2/20 12:28 PM, TalGloz wrote:
>>>>>> I'm trying to upgrade from PostgreSQL 10 to 12 and I need to compile
>>>>>> all
>>>>>> my
>>>>>> manually created C extension functions against PostrgreSQL 12 before
>>>>>> starting the upgrade process. I have this Makefile that compiles
>>>>>> perfectly
>>>>>> the seal_diff_cpp.cpp C extension function against PostgreSQL 10:
>>>>>>
>>>
>>>>
>>>> Yes, I've installed everything PostgreSQL 12 has to offer:
>>>>
>>>> dnf list installed | grep "postgresql12"
>>>> postgresql12.x86_64                                12.2-2PGDG.f31
>>>> @pgdg12
>>>> postgresql12-contrib.x86_64                     12.2-2PGDG.f31
>>>> @pgdg12
>>>> postgresql12-devel.x86_64                       12.2-2PGDG.f31
>>>> @pgdg12
>>>
>>> Yeah, I missed part in your OP where said postgres.h was there. So:
>>>
>>> 1) Did you do both makes in the same directory?
>>>
>>> 2) If so did you do a make clean between builds?
>>>
>>>
>>>
>>> -- 
>>> Adrian Klaver
>> 
>>> adrian.klaver@
>> 
>> 1) Yes I did.
>> 2) Yes I did, though no .o .bc or .so files get created because of the
>> error
>> when using PostgreSQL 12 settings.
> 
> But they where created when you did the make against Postgres 10, correct?
> So where those cleaned up?
>> 
>> 
>> 
>> --
>> Sent from:
>> https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
>> 
>> 
> 
> 
> -- 
> Adrian Klaver

> adrian.klaver@


Yes, they were created when using make against Postgres 10 and I clean them
every time when I try a different version of Postgres.

TalGloz



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



Re: Compiling C Extension Functions against PostgreSQL 12

From
Adrian Klaver
Date:
On 5/2/20 1:09 PM, TalGloz wrote:
> Adrian Klaver-4 wrote

> 
> Yes, they were created when using make against Postgres 10 and I clean them
> every time when I try a different version of Postgres.

Well I'm reaching the end of what I can do. All I have left is that the 
examples I have seen use:

#include "postgres.h"

not

#include <postgres.h>

> 
> TalGloz



-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
Adrian Klaver-4 wrote
> On 5/2/20 1:09 PM, TalGloz wrote:
>> Adrian Klaver-4 wrote
> 
>> 
>> Yes, they were created when using make against Postgres 10 and I clean
>> them
>> every time when I try a different version of Postgres.
> 
> Well I'm reaching the end of what I can do. All I have left is that the 
> examples I have seen use:
> 
> #include "postgres.h"
> 
> not
> 
> #include 
> <postgres.h>
>> 
>> TalGloz
> 
> 
> 
> -- 
> Adrian Klaver

> adrian.klaver@

If it works for Postgres 10 it should also work for 12. I've changed from
#include <postgres.h> to #include "postgres.h" and I still get the same
error with Postgres 12 and it complies without any problem with Postgres 10

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
g++ -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread
-I/usr/pgsql-10/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 -Wl,--as-needed
-Wl,-rpath,'/usr/pgsql-12/lib',--enable-new-dtags -L/usr/local/lib -lseal
-pthread

All the includes with "-I" and "-std=c++17 -fPIC" are from the first line
gone. I even tried to use fixed paths in my Makefiles: "PGXS =
/usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk" and "INCLUDEDIR =
/usr/pgsql-12/include/server".

TalGloz



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



Re: Compiling C Extension Functions against PostgreSQL 12

From
Tom Lane
Date:
TalGloz <glozmantal@gmail.com> 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'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



Re: Compiling C Extension Functions against PostgreSQL 12

From
Adrian Klaver
Date:
On 5/2/20 2:18 PM, Tom Lane wrote:
> TalGloz <glozmantal@gmail.com> 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@aklaver.com



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
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



Re: Compiling C Extension Functions against PostgreSQL 12

From
Adrian Klaver
Date:
On 5/2/20 2:44 PM, TalGloz wrote:
> Adrian Klaver-4 wrote
>> On 5/2/20 2:18 PM, Tom Lane wrote:
>>> TalGloz <
> 

> 
>> adrian.klaver@
> 
> The "include $(PGXS)" is defined in the Makefile. After changig the CXXFLAGS

Hmm, time to clean my glasses.

Have no idea what the below means.

> 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>
>            ^



-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
Tom Lane-2 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'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

I've added some output to a different module Makefile that uses the same
libraries and Changed "CXXFLAGS" to "PG_CXXFLAGS" and "LDFLAGS" to
"PG_LDFLAGS":

# This file crates the seal_mean_cxx_v2.so library for the PostgreSQL
# Usage:
# make             # compiles all
# make clean    # clean all binaries and objects

MODULES = seal_mean_cxx_v2

# Location of PostgreSQL pg_config file
PG_CONFIG = /usr/pgsql-10/bin/pg_config
# PostgreSQL path to PGXS
PGXS = $(shell $(PG_CONFIG) --pgxs)
# PostgreSQL path to server header files
INCLUDEDIR = $(shell $(PG_CONFIG) --includedir-server)
# PostgreSQL path to executable shared libraries
POSGRESLIBINSTALL = $(shell $(PG_CONFIG) --pkglibdir)

# Location of the installed seal library
INCLUDE_SEAL = /usr/local/include
# Location of the compiled seal lib library
INCLUDE_SEAL_LIB = /usr/local/lib
# Location of the installed cppcodec library
INCLUDE_CPPCODEC = /usr/local/include/cppcodec

# Compiler to use
CXX = g++
# Compiler flags
PG_CXXFLAGS = -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread \
       -I$(INCLUDEDIR) -I$(INCLUDE_SEAL) -I$(INCLUDE_CPPCODEC)
#PG_LDFLAGS= -L$(INCLUDE_SEAL_LIB) -lseal -pthread
# Seal linker flags
SEAL_LDFLAGS = -L$(INCLUDE_SEAL_LIB) -lseal -pthread
include $(PGXS)

seal_mean_cxx_v2.so: seal_mean_cxx_v2.o    # Create the .so file
    @echo ""
    @echo "Cereating .so file."
# Needed when checking the linker errors against the external SEAL library
and must be commented when creating .so file
#    $(CXX) -Wl,--no-undefined -shared -o seal_mean_cxx.so seal_mean_cxx.o
$(PG_LDFLAGS) $(SEAL_LDFLAGS)
# Creates the .so file
    $(CXX) -shared -o seal_mean_cxx_v2.so seal_mean_cxx_v2.o $(PG_LDFLAGS)
$(SEAL_LDFLAGS)
    @echo "Done."
    @echo ""
    @echo "Copying the created .so library to \"${POSGRESLIBINSTALL}\"."
# Copies the .so file to PostgreSQL shared libraries
    cp seal_mean_cxx_v2.so $(POSGRESLIBINSTALL)
    @echo "Done."
    @echo ""

seal_mean_cxx_v2.o: seal_mean_cxx_v2.cpp # Create the .o file
    @echo ""
    @echo "Creating .o file."
    $(CXX) $(PG_CXXFLAGS) -o seal_mean_cxx_v2.o -c seal_mean_cxx_v2.cpp
    @echo "Done."

.PHONY = clean
clean: # Clean .so and .o files
    @echo ""
    @echo "Cleaning the .so and .o files"
    rm -f seal_mean_cxx_v2.so rm seal_mean_cxx_v2.o
    @echo "Done."
    @echo ""
 
I get this part for my code in the Makefile:

Makefile:57: warning: overriding recipe for target 'clean'
/usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk:342: warning: ignoring old
recipe for target 'clean'

Cleaning the .so and .o files
rm -f seal_mean_cxx_v2.so rm seal_mean_cxx_v2.o
Done.

[root@www seal_mean]# make
Makefile:57: warning: overriding recipe for target 'clean'
/usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk:342: warning: ignoring old
recipe for target 'clean'

Creating .o file.
g++ -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute
-Wformat-security -fno-strict-aliasing -fwrapv -O2 -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_mean_cxx_v2.o -c seal_mean_cxx_v2.cpp
Done.

Cereating .so file.
g++ -shared -o seal_mean_cxx_v2.so seal_mean_cxx_v2.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
Done.

Copying the created .so library to "/usr/pgsql-12/lib".
cp seal_mean_cxx_v2.so /usr/pgsql-12/lib
Done.


Which is good, my seal_mean_cxx_v2.so being created and copied to
/usr/pgsql-12/lib/. But right after that I get this and it doesn't seem to
effect my seal_mean_cxx_v2.so library:
/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_mean_cxx_v2.bc
seal_mean_cxx_v2.cpp
In file included from seal_mean_cxx_v2.cpp:25:
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_mean_cxx_v2.cpp:25:
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_mean_cxx_v2.cpp:25:
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_mean_cxx_v2.cpp:25:
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_mean_cxx_v2.cpp:25:
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_mean_cxx_v2.cpp:25:
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_mean_cxx_v2.cpp:25:
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_mean_cxx_v2.bc] Error 1

Why does it start executing the following after it did what it was supposed
to do?
/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_mean_cxx_v2.bc
seal_mean_cxx_v2.cpp


Best regards,
TalGloz



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



Re: Compiling C Extension Functions against PostgreSQL 12

From
Adrian Klaver
Date:
On 5/2/20 4:03 PM, TalGloz wrote:
> Tom Lane-2 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'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
> 
> I've added some output to a different module Makefile that uses the same
> libraries and Changed "CXXFLAGS" to "PG_CXXFLAGS" and "LDFLAGS" to
> "PG_LDFLAGS":

Did you?

In Makefile below I see:

#PG_LDFLAGS= -L$(INCLUDE_SEAL_LIB) -lseal -pthread
# Seal linker flags
SEAL_LDFLAGS = -L$(INCLUDE_SEAL_LIB) -lseal -pthread

> 
> # This file crates the seal_mean_cxx_v2.so library for the PostgreSQL
> # Usage:
> # make             # compiles all
> # make clean    # clean all binaries and objects
> 
> MODULES = seal_mean_cxx_v2
> 
> # Location of PostgreSQL pg_config file
> PG_CONFIG = /usr/pgsql-10/bin/pg_config
> # PostgreSQL path to PGXS
> PGXS = $(shell $(PG_CONFIG) --pgxs)
> # PostgreSQL path to server header files
> INCLUDEDIR = $(shell $(PG_CONFIG) --includedir-server)
> # PostgreSQL path to executable shared libraries
> POSGRESLIBINSTALL = $(shell $(PG_CONFIG) --pkglibdir)
> 
> # Location of the installed seal library
> INCLUDE_SEAL = /usr/local/include
> # Location of the compiled seal lib library
> INCLUDE_SEAL_LIB = /usr/local/lib
> # Location of the installed cppcodec library
> INCLUDE_CPPCODEC = /usr/local/include/cppcodec
> 
> # Compiler to use
> CXX = g++
> # Compiler flags
> PG_CXXFLAGS = -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread \
>        -I$(INCLUDEDIR) -I$(INCLUDE_SEAL) -I$(INCLUDE_CPPCODEC)
> #PG_LDFLAGS= -L$(INCLUDE_SEAL_LIB) -lseal -pthread
> # Seal linker flags
> SEAL_LDFLAGS = -L$(INCLUDE_SEAL_LIB) -lseal -pthread
> include $(PGXS)
> 
> seal_mean_cxx_v2.so: seal_mean_cxx_v2.o    # Create the .so file
>     @echo ""
>     @echo "Cereating .so file."
> # Needed when checking the linker errors against the external SEAL library
> and must be commented when creating .so file
> #    $(CXX) -Wl,--no-undefined -shared -o seal_mean_cxx.so seal_mean_cxx.o
> $(PG_LDFLAGS) $(SEAL_LDFLAGS)
> # Creates the .so file
>     $(CXX) -shared -o seal_mean_cxx_v2.so seal_mean_cxx_v2.o $(PG_LDFLAGS)
> $(SEAL_LDFLAGS)
>     @echo "Done."
>     @echo ""
>     @echo "Copying the created .so library to \"${POSGRESLIBINSTALL}\"."
> # Copies the .so file to PostgreSQL shared libraries
>     cp seal_mean_cxx_v2.so $(POSGRESLIBINSTALL)
>     @echo "Done."
>     @echo ""
> 
> seal_mean_cxx_v2.o: seal_mean_cxx_v2.cpp # Create the .o file
>     @echo ""
>     @echo "Creating .o file."
>     $(CXX) $(PG_CXXFLAGS) -o seal_mean_cxx_v2.o -c seal_mean_cxx_v2.cpp
>     @echo "Done."
> 
> .PHONY = clean
> clean: # Clean .so and .o files
>     @echo ""
>     @echo "Cleaning the .so and .o files"
>     rm -f seal_mean_cxx_v2.so rm seal_mean_cxx_v2.o
>     @echo "Done."
>     @echo ""
>   
> I get this part for my code in the Makefile:
> 
> Makefile:57: warning: overriding recipe for target 'clean'
> /usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk:342: warning: ignoring old
> recipe for target 'clean'
> 
> Cleaning the .so and .o files
> rm -f seal_mean_cxx_v2.so rm seal_mean_cxx_v2.o
> Done.
> 
> [root@www seal_mean]# make
> Makefile:57: warning: overriding recipe for target 'clean'
> /usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk:342: warning: ignoring old
> recipe for target 'clean'
> 
> Creating .o file.
> g++ -Wall -Wpointer-arith -Wendif-labels -Wmissing-format-attribute
> -Wformat-security -fno-strict-aliasing -fwrapv -O2 -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_mean_cxx_v2.o -c seal_mean_cxx_v2.cpp
> Done.
> 
> Cereating .so file.
> g++ -shared -o seal_mean_cxx_v2.so seal_mean_cxx_v2.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
> Done.
> 
> Copying the created .so library to "/usr/pgsql-12/lib".
> cp seal_mean_cxx_v2.so /usr/pgsql-12/lib
> Done.
> 
> 
> Which is good, my seal_mean_cxx_v2.so being created and copied to
> /usr/pgsql-12/lib/. But right after that I get this and it doesn't seem to
> effect my seal_mean_cxx_v2.so library:
> /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_mean_cxx_v2.bc
> seal_mean_cxx_v2.cpp
> In file included from seal_mean_cxx_v2.cpp:25:
> 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_mean_cxx_v2.cpp:25:
> 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_mean_cxx_v2.cpp:25:
> 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_mean_cxx_v2.cpp:25:
> 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_mean_cxx_v2.cpp:25:
> 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_mean_cxx_v2.cpp:25:
> 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_mean_cxx_v2.cpp:25:
> 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_mean_cxx_v2.bc] Error 1
> 
> Why does it start executing the following after it did what it was supposed
> to do?
> /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_mean_cxx_v2.bc
> seal_mean_cxx_v2.cpp
> 
> 
> Best regards,
> TalGloz
> 
> 
> 
> --
> Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
Adrian Klaver-4 wrote
> On 5/2/20 4:03 PM, TalGloz wrote:
> 
> Did you?
> 
> In Makefile below I see:
> 
> #PG_LDFLAGS= -L$(INCLUDE_SEAL_LIB) -lseal -pthread
> # Seal linker flags
> SEAL_LDFLAGS = -L$(INCLUDE_SEAL_LIB) -lseal -pthread
> 
> -- 
> Adrian Klaver

> adrian.klaver@


It actually didn't change a thing but since they are the same I've removed
the "SEAL_LDFLAGS" and used "PG_LDFLAGS" instead.

The maigor breakthrough was changing "CXXFLAGS" to "PG_CXXFLAGS" this has
removed the error:

 seal_diff_cpp.cpp:2:10: fatal error: postgres.h: No such file or directory
      2 | #include <postgres.h>
        |          ^~~~~~~~~~~~ 

All the Makefile steps and their outputs get generated as should. My only
concern is regarding the last part below that comes after
"seal_mean_cxx_v2.so" was generated and copied to "/usr/pgsql-12/lib" and
generates all the errors regarding the seal library I've listed in previous
posts. I don't know what triggers it in my Makefile and it not supposed to
be executed.

/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/us /include -flto=thin -emit-llvm -c -o seal_mean_cxx_v2.bc
seal_mean_cxx_v2.cpp

Maybe it is being triggered by the "pgxs.mk" because as of Postgres 12 it
has "with_llvm" parts e.g.:

ifeq ($(with_llvm), yes)
all: $(addsuffix .bc, $(MODULES)) $(patsubst %.o,%.bc, $(OBJS))
endif




--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



Re: Compiling C Extension Functions against PostgreSQL 12

From
Andrew Gierth
Date:
>>>>> "TalGloz" == TalGloz  <glozmantal@gmail.com> writes:

 TalGloz> Which is good, my seal_mean_cxx_v2.so being created and copied
 TalGloz> to /usr/pgsql-12/lib/. But right after that I get this and it
 TalGloz> doesn't seem to effect my seal_mean_cxx_v2.so library:

What's happening here is that it's attempting to build LLVM bitcode
files for your library for the benefit of the JIT compiler that exists
in recent postgres versions - without these files, your extension
functions cannot be inlined into generated code.

This requires that your code be compilable using clang (as well as gcc
if that's what was used to build PG itself), and there's clearly some
disagreement going on between clang and your system header files that's
causing the failure.

I didn't see an easy way of disabling bitcode emission for a module,
though I think that has been discussed before.

-- 
Andrew (irc:RhodiumToad)



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
Andrew Gierth wrote
>>>>>> "TalGloz" == TalGloz  <

> glozmantal@

> > writes:
> 
>  TalGloz> Which is good, my seal_mean_cxx_v2.so being created and copied
>  TalGloz> to /usr/pgsql-12/lib/. But right after that I get this and it
>  TalGloz> doesn't seem to effect my seal_mean_cxx_v2.so library:
> 
> What's happening here is that it's attempting to build LLVM bitcode
> files for your library for the benefit of the JIT compiler that exists
> in recent postgres versions - without these files, your extension
> functions cannot be inlined into generated code.
> 
> This requires that your code be compilable using clang (as well as gcc
> if that's what was used to build PG itself), and there's clearly some
> disagreement going on between clang and your system header files that's
> causing the failure.
> 
> I didn't see an easy way of disabling bitcode emission for a module,
> though I think that has been discussed before.
> 
> -- 
> Andrew (irc:RhodiumToad)

Will the absence of LLVM bit-code files effect the functionality of my
"seal_mean_cxx_v2.so" library in Postgresql12 or I just won't benefit from
Postgres JIT compiler (postgresql12-llvmjit package)? The
"seal_mean_cxx_v2.so" was enough to use with Postgres 10. 

All the errors occurring for the llvm compilation part relate to the 
Microsoft SEAL <https://github.com/microsoft/SEAL>   library that my
seal_mean_cxx_v2.cpp uses. Since it is a third party library then maybe I
should post the errors output there and see what they have to say about
it...

Best regerds,
TalGloz



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html



Re: Compiling C Extension Functions against PostgreSQL 12

From
Tom Lane
Date:
TalGloz <glozmantal@gmail.com> writes:
> Andrew Gierth wrote
>> I didn't see an easy way of disabling bitcode emission for a module,
>> though I think that has been discussed before.

After taking a quick look through pgxs.mk, it looks like you might
be able to do something like
    override with_llvm := no
in your Makefile before including the PG parts.

> Will the absence of LLVM bit-code files effect the functionality of my
> "seal_mean_cxx_v2.so" library in Postgresql12 or I just won't benefit from
> Postgres JIT compiler (postgresql12-llvmjit package)?

Should just prevent the possibility of "inline"-ing your functions
in JIT compilation.

> All the errors occurring for the llvm compilation part relate to the 
> Microsoft SEAL <https://github.com/microsoft/SEAL>   library that my
> seal_mean_cxx_v2.cpp uses. Since it is a third party library then maybe I
> should post the errors output there and see what they have to say about
> it...

Yeah, the ultimate solution is clearly over on that side.  These
last errors you've posted don't seem particularly Postgres-related.

            regards, tom lane



Re: Compiling C Extension Functions against PostgreSQL 12

From
TalGloz
Date:
Tom Lane-2 wrote
> TalGloz <

> glozmantal@

> > writes:
>> Andrew Gierth wrote
>>> I didn't see an easy way of disabling bitcode emission for a module,
>>> though I think that has been discussed before.
> 
> After taking a quick look through pgxs.mk, it looks like you might
> be able to do something like
>     override with_llvm := no
> in your Makefile before including the PG parts.
> 
>> Will the absence of LLVM bit-code files effect the functionality of my
>> "seal_mean_cxx_v2.so" library in Postgresql12 or I just won't benefit
>> from
>> Postgres JIT compiler (postgresql12-llvmjit package)?
> 
> Should just prevent the possibility of "inline"-ing your functions
> in JIT compilation.
> 
>> All the errors occurring for the llvm compilation part relate to the 
>> Microsoft SEAL <https://github.com/microsoft/SEAL>   library that
>> my
>> seal_mean_cxx_v2.cpp uses. Since it is a third party library then maybe I
>> should post the errors output there and see what they have to say about
>> it...
> 
> Yeah, the ultimate solution is clearly over on that side.  These
> last errors you've posted don't seem particularly Postgres-related.
> 
>             regards, tom lane

Setting "override with_llvm := no" did make the compilation step with llvm
go away. I'm using an older version of SEAL and I wanted to maintain my code
functionality after upgrading to Postgres 12. I'll be posting the llvm
related errors on the SEAL project page for more clarification, maybe the
usage of the old SEAL version is the problem. Anyways, after retaining the
original functionality with Postgres 12 I'll be focusing on updating my code
to comply with the latest SEAL version.

Thanks to all of you for helping me with this "issue".

Best regards,
TalGloz



--
Sent from: https://www.postgresql-archive.org/PostgreSQL-general-f1843780.html