Re: BUG #5960: No rule to make target 'libpq.a', needed by 'all-static-lib'

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Julia Jacobson <julia(dot)jacobson(at)arcor(dot)de>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #5960: No rule to make target 'libpq.a', needed by 'all-static-lib'
Date: 2011-04-05 16:10:05
Message-ID: BANLkTikmURWoQj1nqb9nR3pgoyGtmvjn9Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Wed, Mar 30, 2011 at 9:54 AM, Julia Jacobson <julia(dot)jacobson(at)arcor(dot)de> wrote:
> When trying to compile PostgreSQL 8.4.6 on Windows 7 using MSys (MinGW) in
> order to build a static version of libpq by the commands
> ./configure --without-zlib --disable-shared
> make
> the compilation process ends with the error message
> "No rule to make target 'libpq.a', needed by 'all-static-lib'".
> This issue was already discussed here on the mailing list more than 6 years
> ago and successfully fixed with a patch:
> http://archives.postgresql.org/pgsql-hackers-win32/2004-10/msg00057.php
> However, it seems to me like there is a similar problem in version 8.4.x.
> Please corrected me if I'm wrong.

I tried this on MacOS X and got a different error:

make -C interfaces all
make -C libpq all
make[3]: *** No rule to make target `libpq.5.4.dylib', needed by
`all-shared-lib'. Stop.
make[2]: *** [all-libpq-recurse] Error 2
make[1]: *** [all-interfaces-recurse] Error 2
make: *** [all-src-recurse] Error 2

I also tried it on Linux (Fedora 12), where it completed successfully.

Unfortunately, I don't think we have any buildfarm coverage of
--disable-shared, so there is no automatic way for us to notice when
this has gotten broken.

The problem appears to be that the all-shared-lib target in
src/Makefile.shlib depends on $(shlib). The first two, generic
assignments to that variable are protected like this:

ifeq ($(enable_shared), yes)
shlib = $(NAME)$(DLSUFFIX)
endif

But the remaining, platform-specific ones are not. So my guess is
this will work on any platform that uses the default value for shlib,
and fail on any platform that has a platform-specific override,
namely: aix, darwin, freebsd, hpux, irix, cygwin, win32.

Can you see whether the following patch fixes it for you? It seems to
work on MacOS X, but I don't have a mingw environment handy.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Attachment Content-Type Size
disable-shared.patch application/octet-stream 374 bytes

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Kevin Grittner 2011-04-05 16:13:35 Re: BUG #5952: SetRWConflict assertion failure
Previous Message Kevin Grittner 2011-04-05 16:07:28 Re: BUG #5952: SetRWConflict assertion failure