BUG #3983: pgxs files missing from binary installation
The following bug has been logged online:
Bug reference: 3983
Logged by: Mike Leahy
Email address: mgleahy@alumni.uwaterloo.ca
PostgreSQL version: 8.3.0
Operating system: Win32
Description: pgxs files missing from binary installation
Details:
I've tried to compile the PL/R module, which I have been doing with 8.2.x
versions. PL/R requires the pgxs.mk file, and determines its location from
pg_config. The location of pgxs.mk reported by pg_config in my case (from
windows binary installer) is "C:/Program
Files/PostgreSQL/8.3/lib/pgxs/src/makefiles/pgxs.mk". However, there is no
such pgxs folder located in the /lib directory...nor is there any other
instance of pgxs.mk anywhere in the PostgreSQL install location.
There also seem to be no pgxs files in any of the other distributed 8.3
binaries for win32. Tom Lane's suggestion in the pgsql-general mailing list
is that this is a bug with the installer. At this time, I'm unable to
compile PL/R for PostgreSQL, which I think has a growing user base that
relies on the installer normally posted at http://www.joeconway.com/plr.
Has this been addressed?
---------------------------------------------------------------------------
Mike Leahy wrote:
The following bug has been logged online:
Bug reference: 3983
Logged by: Mike Leahy
Email address: mgleahy@alumni.uwaterloo.ca
PostgreSQL version: 8.3.0
Operating system: Win32
Description: pgxs files missing from binary installation
Details:I've tried to compile the PL/R module, which I have been doing with 8.2.x
versions. PL/R requires the pgxs.mk file, and determines its location from
pg_config. The location of pgxs.mk reported by pg_config in my case (from
windows binary installer) is "C:/Program
Files/PostgreSQL/8.3/lib/pgxs/src/makefiles/pgxs.mk". However, there is no
such pgxs folder located in the /lib directory...nor is there any other
instance of pgxs.mk anywhere in the PostgreSQL install location.There also seem to be no pgxs files in any of the other distributed 8.3
binaries for win32. Tom Lane's suggestion in the pgsql-general mailing list
is that this is a bug with the installer. At this time, I'm unable to
compile PL/R for PostgreSQL, which I think has a growing user base that
relies on the installer normally posted at http://www.joeconway.com/plr.---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://postgres.enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +
Not that I know of...the win32 binaries on the PostgreSQL website haven't
been updated, and I haven't seen any other mention of this issue in either
pgsql-general or on this list.
On Tue, Mar 4, 2008 at 4:24 PM, Bruce Momjian <bruce@momjian.us> wrote:
Show quoted text
Has this been addressed?
---------------------------------------------------------------------------
Mike Leahy wrote:
The following bug has been logged online:
Bug reference: 3983
Logged by: Mike Leahy
Email address: mgleahy@alumni.uwaterloo.ca
PostgreSQL version: 8.3.0
Operating system: Win32
Description: pgxs files missing from binary installation
Details:I've tried to compile the PL/R module, which I have been doing with
8.2.x
versions. PL/R requires the pgxs.mk file, and determines its location
from
pg_config. The location of pgxs.mk reported by pg_config in my case
(from
windows binary installer) is "C:/Program
Files/PostgreSQL/8.3/lib/pgxs/src/makefiles/pgxs.mk". However, there isno
such pgxs folder located in the /lib directory...nor is there any other
instance of pgxs.mk anywhere in the PostgreSQL install location.There also seem to be no pgxs files in any of the other distributed 8.3
binaries for win32. Tom Lane's suggestion in the pgsql-general mailinglist
is that this is a bug with the installer. At this time, I'm unable to
compile PL/R for PostgreSQL, which I think has a growing user base that
relies on the installer normally posted at http://www.joeconway.com/plr.---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://postgres.enterprisedb.com+ If your life is a hard drive, Christ can be your backup. +
Is this actually a bug, or is there a specific reason that the pgxs
files omitted in the windows installer? I noticed the 8.3.1 installer
has been posted (as the updates had appeared on my linux machines).
From what I can tell, the 8.3.1 version of the win32 installer is still
missing pgxs.mk and any related files.
Mike
Mike Leahy wrote:
Is this actually a bug, or is there a specific reason that the pgxs
files omitted in the windows installer? I noticed the 8.3.1 installer
has been posted (as the updates had appeared on my linux machines). From
what I can tell, the 8.3.1 version of the win32 installer is still
missing pgxs.mk and any related files.
It is a bug in the Win32 installer. Please report it on the Win32
installer project, http://pgfoundry.org/projects/pginstaller/
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
On Tue, Mar 18, 2008 at 12:47 AM, Alvaro Herrera
<alvherre@commandprompt.com> wrote:
Mike Leahy wrote:
Is this actually a bug, or is there a specific reason that the pgxs
files omitted in the windows installer? I noticed the 8.3.1 installer
has been posted (as the updates had appeared on my linux machines). From
what I can tell, the 8.3.1 version of the win32 installer is still
missing pgxs.mk and any related files.It is a bug in the Win32 installer. Please report it on the Win32
installer project, http://pgfoundry.org/projects/pginstaller/
It's not an installer bug - pgxs doesn't make sense to the VC++
PostgreSLQ build because we don't use (or configure) any of the build
system on which it relies.
I wonder if we can either build whatever is needed to make pgxs work
(I'm guessing Makefile.global and more) when we run the perl scripts
that generate the project files, or come up with a VC++ alternative to
pgxs.
--
Dave Page
EnterpriseDB UK Ltd: http://www.enterprisedb.com
PostgreSQL UK 2008 Conference: http://www.postgresql.org.uk
Added to Win32 TODO:
o Support pgxs
---------------------------------------------------------------------------
Mike Leahy wrote:
The following bug has been logged online:
Bug reference: 3983
Logged by: Mike Leahy
Email address: mgleahy@alumni.uwaterloo.ca
PostgreSQL version: 8.3.0
Operating system: Win32
Description: pgxs files missing from binary installation
Details:I've tried to compile the PL/R module, which I have been doing with 8.2.x
versions. PL/R requires the pgxs.mk file, and determines its location from
pg_config. The location of pgxs.mk reported by pg_config in my case (from
windows binary installer) is "C:/Program
Files/PostgreSQL/8.3/lib/pgxs/src/makefiles/pgxs.mk". However, there is no
such pgxs folder located in the /lib directory...nor is there any other
instance of pgxs.mk anywhere in the PostgreSQL install location.There also seem to be no pgxs files in any of the other distributed 8.3
binaries for win32. Tom Lane's suggestion in the pgsql-general mailing list
is that this is a bug with the installer. At this time, I'm unable to
compile PL/R for PostgreSQL, which I think has a growing user base that
relies on the installer normally posted at http://www.joeconway.com/plr.---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://postgres.enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +
Dave Page wrote:
On Tue, Mar 18, 2008 at 12:47 AM, Alvaro Herrera
<alvherre@commandprompt.com> wrote:Mike Leahy wrote:
Is this actually a bug, or is there a specific reason that the pgxs
files omitted in the windows installer? I noticed the 8.3.1 installer
has been posted (as the updates had appeared on my linux machines). From
what I can tell, the 8.3.1 version of the win32 installer is still
missing pgxs.mk and any related files.It is a bug in the Win32 installer. Please report it on the Win32
installer project, http://pgfoundry.org/projects/pginstaller/It's not an installer bug - pgxs doesn't make sense to the VC++
PostgreSLQ build because we don't use (or configure) any of the build
system on which it relies.I wonder if we can either build whatever is needed to make pgxs work
(I'm guessing Makefile.global and more) when we run the perl scripts
that generate the project files, or come up with a VC++ alternative to
pgxs.
I'm finally getting back to this, and finding that plr.dll built against
a MinGW compiled postgres will not load in running cluster built with
VC++ (i.e. the standard binary install). Is that to be expected? If so,
can you give me pointers (either direct guidance or literal URLs) on how
to build postgres and related extensions with VC++?
Thanks,
Joe
Joe Conway wrote:
Dave Page wrote:
On Tue, Mar 18, 2008 at 12:47 AM, Alvaro Herrera
<alvherre@commandprompt.com> wrote:Mike Leahy wrote:
Is this actually a bug, or is there a specific reason that the
pgxs files omitted in the windows installer? I noticed the
8.3.1 installer has been posted (as the updates had appeared on
my linux machines). From what I can tell, the 8.3.1 version of
the win32 installer is still missing pgxs.mk and any related
files.It is a bug in the Win32 installer. Please report it on the Win32
installer project, http://pgfoundry.org/projects/pginstaller/It's not an installer bug - pgxs doesn't make sense to the VC++
PostgreSLQ build because we don't use (or configure) any of the
build system on which it relies.I wonder if we can either build whatever is needed to make pgxs work
(I'm guessing Makefile.global and more) when we run the perl scripts
that generate the project files, or come up with a VC++ alternative
to pgxs.I'm finally getting back to this, and finding that plr.dll built
against a MinGW compiled postgres will not load in running cluster
built with VC++ (i.e. the standard binary install). Is that to be
expected? If so, can you give me pointers (either direct guidance or
literal URLs) on how to build postgres and related extensions with
VC++?
In general, mingw built modules should load just fine in msvc built
postgres. AFAIK, that's how PostGIS does it for 8.3 (though I know Mark
is working on getting MSVC build support for them). Debugging may be a
bit harder (since they use different kinds of debug symbols - postgres
uses Windows style and mingw uses mingw style), but it should certainly
load.
What trouble exactly are you seeing?
//Magnus
Magnus Hagander wrote:
In general, mingw built modules should load just fine in msvc built
postgres. AFAIK, that's how PostGIS does it for 8.3 (though I know Mark
is working on getting MSVC build support for them). Debugging may be a
bit harder (since they use different kinds of debug symbols - postgres
uses Windows style and mingw uses mingw style), but it should certainly
load.What trouble exactly are you seeing?
Basically, "Procedure not found", even though it is there. Also note
that the same R.dll is being used from the MinGW Postgres installation
(where plr loads successfully) and the MSVC Postgres.
Joe
p.s. actual output below
8<------------------------------
Welcome to psql 8.3.1, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
Warning: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
postgres=# load '$libdir/dblink';
LOAD
postgres=# load '$libdir/plr';
ERROR: could not load library "C:/Program
Files/PostgreSQL/8.3/lib/plr.dll": The specified procedure could not be
found.
postgres=# CREATE TYPE plr_environ_type AS (name text, value text);
CREATE TYPE
postgres=# CREATE OR REPLACE FUNCTION plr_environ ()
postgres-# RETURNS SETOF plr_environ_type
postgres-# AS '$libdir/plr','plr_environ'
postgres-# LANGUAGE 'C';
ERROR: could not load library "C:/Program
Files/PostgreSQL/8.3/lib/plr.dll": The specified procedure could not be
found.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\jconway>dir "C:\Program Files\PostgreSQL\8.3\lib"
Volume in drive C has no label.
Volume Serial Number is A006-8372
Directory of C:\Program Files\PostgreSQL\8.3\lib
[...]
03/17/2008 03:49 AM 57,344 dblink.dll
[...]
03/17/2008 03:47 AM 28,264 libpq.lib
[...]
04/06/2008 12:50 PM 686,579 plr.dll
Joe Conway wrote:
Magnus Hagander wrote:
In general, mingw built modules should load just fine in msvc built
postgres. AFAIK, that's how PostGIS does it for 8.3 (though I know Mark
is working on getting MSVC build support for them). Debugging may be a
bit harder (since they use different kinds of debug symbols - postgres
uses Windows style and mingw uses mingw style), but it should certainly
load.What trouble exactly are you seeing?
Basically, "Procedure not found", even though it is there. Also note
that the same R.dll is being used from the MinGW Postgres installation
(where plr loads successfully) and the MSVC Postgres.
Could this be somethingl ike missing PGDLLIMPORT specifications in your
addon module or something like that? Try checking the names of the
functions that are actually exported using "depends" or a similar tool.
postgres=# load '$libdir/dblink';
LOAD
postgres=# load '$libdir/plr';
ERROR: could not load library "C:/Program
Files/PostgreSQL/8.3/lib/plr.dll": The specified procedure could not be
found.
Actually, this looks like perhaps the backend is unable to load a DLL
that plr.dll depends on. Again, the "depends" tool can hopefully show
you what's missing there.
//Magnus
Magnus Hagander wrote:
Could this be somethingl ike missing PGDLLIMPORT specifications in your
addon module or something like that? Try checking the names of the
functions that are actually exported using "depends" or a similar tool.
Ah, that sounds likely, since I have never had to worry about explicit
exports with PL/R before. Can you point me to an example or cheat sheet
on what I need to do?
ERROR: could not load library "C:/Program
Files/PostgreSQL/8.3/lib/plr.dll": The specified procedure could not
be found.Actually, this looks like perhaps the backend is unable to load a DLL
that plr.dll depends on. Again, the "depends" tool can hopefully show
you what's missing there.
That's what I was originally thinking (R.dll), but now I suspect the
exported functions is probably the issue. I'll check this out when I get
home tonight.
Thanks,
Joe
Joe Conway wrote:
Magnus Hagander wrote:
Could this be somethingl ike missing PGDLLIMPORT specifications in
your addon module or something like that? Try checking the names of
the functions that are actually exported using "depends" or a
similar tool.Ah, that sounds likely, since I have never had to worry about
explicit exports with PL/R before. Can you point me to an example or
cheat sheet on what I need to do?
Stick a PGDLLIMPORT where needed :-)
Though now that I think of it, you only need that for variables. We use
the (broken, really, but that's what we do) method of exporting every
single function we can find in the binaries... You should have the same
issue with pl/pgsql, and it doesn't add PGDLLIMPORT so you should be
good there.
So it shouldn't be that problem, really.
ERROR: could not load library "C:/Program
Files/PostgreSQL/8.3/lib/plr.dll": The specified procedure could
not be found.Actually, this looks like perhaps the backend is unable to load a
DLL that plr.dll depends on. Again, the "depends" tool can
hopefully show you what's missing there.That's what I was originally thinking (R.dll), but now I suspect the
exported functions is probably the issue. I'll check this out when I
get home tonight.
I hold this much more likely. It may be R.dll, it may be something that
R.dll depends on, or another direct dependency.
//Magnus