Thread: How to declare PG version for compiling extensions.

How to declare PG version for compiling extensions.

From
GPT
Date:
Hi,

Both PG versions 10.5 and 11 are installed.

I have been trying to compile extensions for PG11 by using:

PATH=/.../11/bin:PATH make USE_...

but unfortunately PG10 is always being used (the `make` output always
shows PG10 and refers to `pg_config`).

1) Does it have to do with pg_config?
2) How can I declare which PG version to be used in real time?
3) How can I change which PG version to be used permanently?

Tia


Re: How to declare PG version for compiling extensions.

From
GPT
Date:
Unfortunately, I had not installed the following package:

"postgresql-server-dev-11"

By the way, shouldn't a warning message appear while trying to run:

`PATH=/usr/lib/postgresql/11/bin:$PATH make USE_PGXS=1`

warning the user that some files are missing.

Tia


On 10/22/18, GPT <gptmailinglists@gmail.com> wrote:
> Hi,
>
> Both PG versions 10.5 and 11 are installed.
>
> I have been trying to compile extensions for PG11 by using:
>
> PATH=/.../11/bin:PATH make USE_...
>
> but unfortunately PG10 is always being used (the `make` output always
> shows PG10 and refers to `pg_config`).
>
> 1) Does it have to do with pg_config?
> 2) How can I declare which PG version to be used in real time?
> 3) How can I change which PG version to be used permanently?
>
> Tia
>


Re: How to declare PG version for compiling extensions.

From
Adrian Klaver
Date:
On 10/22/18 6:53 AM, GPT wrote:
> Unfortunately, I had not installed the following package:
> 
> "postgresql-server-dev-11"
> 
> By the way, shouldn't a warning message appear while trying to run:
> 
> `PATH=/usr/lib/postgresql/11/bin:$PATH make USE_PGXS=1`
> 
> warning the user that some files are missing.

Except there weren't. In $PATH there where the PG 10 files that could be 
used. Now they where not the ones you wanted, but make did not 'know' that.

> 
> Tia
> 
> 
> On 10/22/18, GPT <gptmailinglists@gmail.com> wrote:
>> Hi,
>>
>> Both PG versions 10.5 and 11 are installed.
>>
>> I have been trying to compile extensions for PG11 by using:
>>
>> PATH=/.../11/bin:PATH make USE_...
>>
>> but unfortunately PG10 is always being used (the `make` output always
>> shows PG10 and refers to `pg_config`).
>>
>> 1) Does it have to do with pg_config?
>> 2) How can I declare which PG version to be used in real time?
>> 3) How can I change which PG version to be used permanently?
>>
>> Tia
>>
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com


Re: How to declare PG version for compiling extensions.

From
Tom Lane
Date:
GPT <gptmailinglists@gmail.com> writes:
> Both PG versions 10.5 and 11 are installed.
> I have been trying to compile extensions for PG11 by using:
> PATH=/.../11/bin:PATH make USE_...
> but unfortunately PG10 is always being used (the `make` output always
> shows PG10 and refers to `pg_config`).

> 1) Does it have to do with pg_config?

If you're using PGXS, then yes, your makefile should be querying
pg_config to find out where Postgres' headers etc are installed.
You might want to check whether "pg_config --pgxs" points to the
correct place.  Also make sure your makefile is indeed doing
something like

PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

and not just hard-wiring where to look.

            regards, tom lane


Re: How to declare PG version for compiling extensions.

From
Andrew Gierth
Date:
>>>>> "GPT" == GPT  <gptmailinglists@gmail.com> writes:

 GPT> Unfortunately, I had not installed the following package:
 GPT> "postgresql-server-dev-11"

 GPT> By the way, shouldn't a warning message appear while trying to run:

 GPT> `PATH=/usr/lib/postgresql/11/bin:$PATH make USE_PGXS=1`

 GPT> warning the user that some files are missing.

It's more reliable to do (if the makefile is correctly written):

make USE_PGXS=1 PG_CONFIG=/usr/lib/postgresql/11/bin/pg_config

By specifying the pg_config binary explicitly rather than relying on the
PATH, you avoid the chance of picking up an incorrect copy by mistake.
This is why the standard form for pgxs makefiles has an assignment for
PG_CONFIG before the PGXS assignment line; the command-line option
overrides it.

-- 
Andrew (irc:RhodiumToad)