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

Started by Julia Jacobsonabout 15 years ago5 messagesbugs
Jump to latest
#1Julia Jacobson
julia.jacobson@arcor.de

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

#2Etienne Robillard
erob@gthcfoundation.org
In reply to: Julia Jacobson (#1)
Re: 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

#3Julia Jacobson
julia.jacobson@arcor.de
In reply to: Etienne Robillard (#2)
Re: BUG #5960: No rule to make target 'libpq.a', needed by 'all-static-lib'

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-static libpq 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'

Show quoted text

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

#4Julia Jacobson
julia.jacobson@arcor.de
In reply to: Etienne Robillard (#2)
Re: BUG #5960: No rule to make target 'libpq.a', needed by 'all-static-lib'

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-static libpq 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.

#5Robert Haas
robertmhaas@gmail.com
In reply to: Julia Jacobson (#1)
Re: BUG #5960: No rule to make target 'libpq.a', needed by 'all-static-lib'

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

Attachments:

disable-shared.patchapplication/octet-stream; name=disable-shared.patchDownload+2-0