Problematic dependency in plpython Makefile [Windows]

Started by Noah Mischabout 13 years ago5 messages
#1Noah Misch
noah@leadboat.com
1 attachment(s)

On Windows, src/pl/plpython/Makefile has a rule whose target line expands to
something like "python33.def: C:/Windows/system32/python33.dll". When doing a
MinGW build with Cygwin's make-3.81, that line elicits an error:

Makefile:69: *** target pattern contains no `%'. Stop.

Seeing a second colon, make treats the line as a static pattern rule. Perhaps
the MinGW project ships a make patched to avoid this, or perhaps folks
building PostgreSQL override WINDIR. In any event, that dependency is not
useful: we can't build the named file if it's absent, and an error from
pexports is a good as an error from make. Let's drop the dependency.

Note that this affects --without-python builds during "make clean".

Thanks,
nm

Attachments:

plpython-bad-dependency-v1.patchtext/plain; charset=us-asciiDownload
*** a/src/pl/plpython/Makefile
--- b/src/pl/plpython/Makefile
***************
*** 66,72 **** OBJS += libpython${pytverstr}.a
  libpython${pytverstr}.a: python${pytverstr}.def
  	dlltool --dllname python${pytverstr}.dll --def python${pytverstr}.def --output-lib  libpython${pytverstr}.a
  WD=$(subst \,/,$(WINDIR))
! python${pytverstr}.def: $(WD)/system32/python${pytverstr}.dll
  	pexports $(WD)/system32/python${pytverstr}.dll > python${pytverstr}.def
  endif
  
--- 66,72 ----
  libpython${pytverstr}.a: python${pytverstr}.def
  	dlltool --dllname python${pytverstr}.dll --def python${pytverstr}.def --output-lib  libpython${pytverstr}.a
  WD=$(subst \,/,$(WINDIR))
! python${pytverstr}.def:
  	pexports $(WD)/system32/python${pytverstr}.dll > python${pytverstr}.def
  endif
  
#2Craig Ringer
craig@2ndQuadrant.com
In reply to: Noah Misch (#1)
Re: Problematic dependency in plpython Makefile [Windows]

On 01/03/2013 11:13 AM, Noah Misch wrote:

On Windows, src/pl/plpython/Makefile has a rule whose target line expands to
something like "python33.def: C:/Windows/system32/python33.dll". When doing a
MinGW build with Cygwin's make-3.81, that line elicits an error:

Shouldn't you generally be using msys make from mingw?

I'm a bit puzzled as to why you'd be using cygwin make.

--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#3Noah Misch
noah@leadboat.com
In reply to: Craig Ringer (#2)
Re: Problematic dependency in plpython Makefile [Windows]

On Thu, Jan 03, 2013 at 11:52:58AM +0800, Craig Ringer wrote:

On 01/03/2013 11:13 AM, Noah Misch wrote:

On Windows, src/pl/plpython/Makefile has a rule whose target line expands to
something like "python33.def: C:/Windows/system32/python33.dll". When doing a
MinGW build with Cygwin's make-3.81, that line elicits an error:

Shouldn't you generally be using msys make from mingw?

I'm a bit puzzled as to why you'd be using cygwin make.

I don't normally use MSYS at all. I wouldn't furnish widespread Makefile
changes to avoid doing so, but this is the only change I have needed.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#4Andrew Dunstan
andrew@dunslane.net
In reply to: Noah Misch (#1)
Re: Problematic dependency in plpython Makefile [Windows]

On 01/02/2013 10:13 PM, Noah Misch wrote:

On Windows, src/pl/plpython/Makefile has a rule whose target line expands to
something like "python33.def: C:/Windows/system32/python33.dll". When doing a
MinGW build with Cygwin's make-3.81, that line elicits an error:

Makefile:69: *** target pattern contains no `%'. Stop.

Seeing a second colon, make treats the line as a static pattern rule. Perhaps
the MinGW project ships a make patched to avoid this, or perhaps folks
building PostgreSQL override WINDIR. In any event, that dependency is not
useful: we can't build the named file if it's absent, and an error from
pexports is a good as an error from make. Let's drop the dependency.

Note that this affects --without-python builds during "make clean".

I suspect under Msys the path seen won't contain a colon - it will be an
Msys virtualized path like /c/Windows/system32/....

Frankly, this is an unsupported toolchain. The supported toolchains
under Windows are Msys/Mingw and the Microsoft toolsets.

OTOH, I don't object to dropping a dependency that is truly useless.

cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#5Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#4)
Re: Problematic dependency in plpython Makefile [Windows]

On 01/02/2013 11:34 PM, Andrew Dunstan wrote:

On 01/02/2013 10:13 PM, Noah Misch wrote:

On Windows, src/pl/plpython/Makefile has a rule whose target line
expands to
something like "python33.def: C:/Windows/system32/python33.dll".
When doing a
MinGW build with Cygwin's make-3.81, that line elicits an error:

Makefile:69: *** target pattern contains no `%'. Stop.

Seeing a second colon, make treats the line as a static pattern
rule. Perhaps
the MinGW project ships a make patched to avoid this, or perhaps folks
building PostgreSQL override WINDIR. In any event, that dependency
is not
useful: we can't build the named file if it's absent, and an error from
pexports is a good as an error from make. Let's drop the dependency.

Note that this affects --without-python builds during "make clean".

I suspect under Msys the path seen won't contain a colon - it will be
an Msys virtualized path like /c/Windows/system32/....

Apparently not, from testing. Maybe the make is patched after all.

cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers