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

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

From
"Julia Jacobson"
Date:
The following bug has been logged online:

Bug reference:      5960
Logged by:          Julia Jacobson
Email address:      julia.jacobson@arcor.de
PostgreSQL version: 8.4.6
Operating system:   Windows 7 with Msys/MinGW
Description:        No rule to make target 'libpq.a', needed by
'all-static-lib'
Details:

Dear PostgreSQL developers,

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.

Regards,
Julia

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

From
Etienne Robillard
Date:
On 30/03/11 09:54 AM, Julia Jacobson wrote:
> The following bug has been logged online:
>
> Bug reference:      5960
> Logged by:          Julia Jacobson
> Email address:      julia.jacobson@arcor.de
> PostgreSQL version: 8.4.6
> Operating system:   Windows 7 with Msys/MinGW
> Description:        No rule to make target 'libpq.a', needed by
> 'all-static-lib'
> Details:
>
> Dear PostgreSQL developers,
>
> 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.
>
> Regards,
> Julia
>
>
hm, out of the blue, i believe you may have hitten yourself in the foot
with the --disable-shared option. If that fails. then maybe you'll have
different
results with postgresql 8.4.7..

Cheers,

--
Etienne Robillard

Company: Green Tea Hackers Club
Occupation: Software Developer (and CEO)
E-mail:     erob@gthcfoundation.org
Work phone: 450-936-2123
Website (Company):  https://gthc.org/
Website (Blog):     https://gthc.org/blog/
PGP public key fingerprint:    F2A9 32EA 8E7C 460F 1728  A1A7 649C 7F17 A086 DDEC

During times of universal deceit, telling the truth becomes a revolutionary act. -- George Orwell

If a free society cannot help the many who are poor, it cannot save the few who are rich. -- John F. Kennedy

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

From
julia.jacobson@arcor.de
Date:
Hello Etienne,

Thanks for your answer.
What do you mean by "you may have hitten yourself in the foot with the --disable-shared option"?
When I don't use this option, everything works fine.
Compiling PostgreSQL 8.4.7 doesn't work either.
The problem is that I need a static libpq. Leaving out the --disable-shared option doesn't results in some
pseudo-staticlibpq and my application still requires a dynamic libpq apart from the static one. 

Regards,
Julia


----- Original Nachricht ----
Von:     Etienne Robillard <erob@gthcfoundation.org>
An:      Julia Jacobson <julia.jacobson@arcor.de>
Datum:   30.03.2011 17:14
Betreff: Re: [BUGS] BUG #5960: No rule to make target 'libpq.a',
 needed by 'all-static-lib'

> On 30/03/11 09:54 AM, Julia Jacobson wrote:
> > The following bug has been logged online:
> >
> > Bug reference:      5960
> > Logged by:          Julia Jacobson
> > Email address:      julia.jacobson@arcor.de
> > PostgreSQL version: 8.4.6
> > Operating system:   Windows 7 with Msys/MinGW
> > Description:        No rule to make target 'libpq.a', needed by
> > 'all-static-lib'
> > Details:
> >
> > Dear PostgreSQL developers,
> >
> > 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.
> >
> > Regards,
> > Julia
> >
> >
> hm, out of the blue, i believe you may have hitten yourself in the foot
> with the --disable-shared option. If that fails. then maybe you'll have
> different
> results with postgresql 8.4.7..
>
> Cheers,
>
> --
> Etienne Robillard
>
> Company: Green Tea Hackers Club
> Occupation: Software Developer (and CEO)
> E-mail:     erob@gthcfoundation.org
> Work phone: 450-936-2123
> Website (Company):  https://gthc.org/
> Website (Blog):     https://gthc.org/blog/
> PGP public key fingerprint:    F2A9 32EA 8E7C 460F 1728  A1A7 649C 7F17 A086
> DDEC
>
> During times of universal deceit, telling the truth becomes a revolutionary
> act. -- George Orwell
>
> If a free society cannot help the many who are poor, it cannot save the few
> who are rich. -- John F. Kennedy
>
>

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

From
Julia Jacobson
Date:
On 30/03/2011 19:49, Etienne Robillard wrote:
> On 30/03/11 12:56 PM, julia.jacobson@arcor.de wrote:
>> Hello Etienne,
>>
>> Thanks for your answer.
>> What do you mean by "you may have hitten yourself in the foot with the --disable-shared option"?
>> When I don't use this option, everything works fine.
>> Compiling PostgreSQL 8.4.7 doesn't work either.
>> The problem is that I need a static libpq. Leaving out the --disable-shared option doesn't results in some
pseudo-staticlibpq and my application still requires a dynamic libpq apart from the static one. 
>>
>> Regards,
>> Julia
>>
>>
>
> have you tried with "--enable-static=libpq" ? I'm not sure but this
> issue could also be related
> to the Mingw environment.
>
> Cheers,
>
> Etienne

Well, the "--enable-static=libpq" option isn't very effective, since it
results in the following message:
configure: WARNING: option ignored: --enable-static
Therefore, I would be happy about the compilation with the
--disable-shared option finishing without errors.

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

From
Robert Haas
Date:
On Wed, Mar 30, 2011 at 9:54 AM, Julia Jacobson <julia.jacobson@arcor.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