fe-connect build failure (Solaris 9, PGSQL 7.3.3, OpenSSL 0.9.7b)

Lists: Postg배트맨 토토SQL : Postg배트맨 토토SQL 메일 링리스트 : 2003-06-12 이후 PGSQL-BUGS 23:01
From: "Paul Eggert" <eggert(at)twinsun(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: fe-connect build failure (Solaris 9, PGSQL 7.3.3, OpenSSL 0.9.7b)
Date: 2003-06-12 23:01:06
Message-ID: 200306122301.h5CN16er008764@ken.twinsun.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg배트맨 토토SQL : Postg배트맨 토토SQL 메일 링리스트 : 2003-06-12 이후 PGSQL-BUGS 23:01

I ran into the following problem building PostgreSQL 7.3.3 on Solaris
9 (sparc) using GCC 3.3 and OpenSSL 0.9.7b.

gcc -g -Wall -Wmissing-prototypes -Wmissing-declarations -fPIC -I. -I../../../src/include -I/opt/reb/include -I/opt/sfw/include -DFRONTEND -DSYSCONFDIR='"/opt/reb/etc/postgresql"' -c -o fe-connect.o fe-connect.c
In file included from fe-connect.c:46:
/usr/include/crypt.h:22: error: parse error before '(' token
/usr/include/crypt.h:22: error: parse error before "const"
gmake[4]: *** [fe-connect.o] Error 1
gmake[4]: Leaving directory `/net/cog/project/reb/src/base/postgresql/src/interfaces/libpq'

This is the OpenSSH-versus-crypt.h compatibility issue that is discussed
in doc/FAQ_Solaris thusly:

2) Why do I get problems when building with OpenSSL support?

When you build PostgreSQL with OpenSSL support you might get
compilation errors in the following files:

src/backend/libpq/crypt.c
src/backend/libpq/password.c
src/interfaces/libpq/fe-auth.c
src/interfaces/libpq/fe-connect.c

This is because of a namespace conflict between the standard
/usr/include/crypt.h header and the header files provided by OpenSSL.

Upgrading your OpenSSL installation to version 0.9.6a fixes this
problem.

Apparently the problem has come back (in limited form) in OpenSSL 0.9.7b,
the current version of OpenSSL.

I worked around the problem as follows. However, I don't offhand see
why fe-connect.c has to include <crypt.h> at all, so perhaps a simpler
fix is to remove the #include on all platforms.

===================================================================
RCS file: src/interfaces/libpq/fe-connect.c,v
retrieving revision 7.3.3.0
retrieving revision 7.3.3.1
diff -pu -r7.3.3.0 -r7.3.3.1
--- src/interfaces/libpq/fe-connect.c 2003/01/30 19:50:07 7.3.3.0
+++ src/interfaces/libpq/fe-connect.c 2003/06/12 21:06:06 7.3.3.1
@@ -42,7 +42,7 @@
#ifndef HAVE_STRDUP
#include "strdup.h"
#endif
-#ifdef HAVE_CRYPT_H
+#if defined(HAVE_CRYPT_H) && !defined(des_crypt)
#include <crypt.h>
#endif


From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Paul Eggert <eggert(at)twinsun(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: fe-connect build failure (Solaris 9, PGSQL 7.3.3, OpenSSL
Date: 2003-06-23 17:03:55
Message-ID: 200306231703.h5NH3tN15495@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs


OK, I removed #include crypt.h from fe-connect.c, because as you stated,
it didn't seem needed, and was causing problems. This fix will be in 7.4.

---------------------------------------------------------------------------

Paul Eggert wrote:
> I ran into the following problem building PostgreSQL 7.3.3 on Solaris
> 9 (sparc) using GCC 3.3 and OpenSSL 0.9.7b.
>
> gcc -g -Wall -Wmissing-prototypes -Wmissing-declarations -fPIC -I. -I../../../src/include -I/opt/reb/include -I/opt/sfw/include -DFRONTEND -DSYSCONFDIR='"/opt/reb/etc/postgresql"' -c -o fe-connect.o fe-connect.c
> In file included from fe-connect.c:46:
> /usr/include/crypt.h:22: error: parse error before '(' token
> /usr/include/crypt.h:22: error: parse error before "const"
> gmake[4]: *** [fe-connect.o] Error 1
> gmake[4]: Leaving directory `/net/cog/project/reb/src/base/postgresql/src/interfaces/libpq'
>
> This is the OpenSSH-versus-crypt.h compatibility issue that is discussed
> in doc/FAQ_Solaris thusly:
>
> 2) Why do I get problems when building with OpenSSL support?
>
> When you build PostgreSQL with OpenSSL support you might get
> compilation errors in the following files:
>
> src/backend/libpq/crypt.c
> src/backend/libpq/password.c
> src/interfaces/libpq/fe-auth.c
> src/interfaces/libpq/fe-connect.c
>
> This is because of a namespace conflict between the standard
> /usr/include/crypt.h header and the header files provided by OpenSSL.
>
> Upgrading your OpenSSL installation to version 0.9.6a fixes this
> problem.
>
> Apparently the problem has come back (in limited form) in OpenSSL 0.9.7b,
> the current version of OpenSSL.
>
> I worked around the problem as follows. However, I don't offhand see
> why fe-connect.c has to include <crypt.h> at all, so perhaps a simpler
> fix is to remove the #include on all platforms.
>
> ===================================================================
> RCS file: src/interfaces/libpq/fe-connect.c,v
> retrieving revision 7.3.3.0
> retrieving revision 7.3.3.1
> diff -pu -r7.3.3.0 -r7.3.3.1
> --- src/interfaces/libpq/fe-connect.c 2003/01/30 19:50:07 7.3.3.0
> +++ src/interfaces/libpq/fe-connect.c 2003/06/12 21:06:06 7.3.3.1
> @@ -42,7 +42,7 @@
> #ifndef HAVE_STRDUP
> #include "strdup.h"
> #endif
> -#ifdef HAVE_CRYPT_H
> +#if defined(HAVE_CRYPT_H) && !defined(des_crypt)
> #include <crypt.h>
> #endif
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073