Re: net/yafc fails to build on Leopard
On 29/10/2007, Ryan Schmidt <ryandesign@...> wrote:
You should submit a bug for this problem in Trac. Unfortunately the port has no maintainer so someone will have to come up with a solution for this.
I looked into it. Some of the header files are throwing yafc into thinking Leopard's using the Heimdal version of Kerberos which has a different location for one of its headers. This patch takes care of that problem (even if it is a little heavy-handed): --- lib/gssapi.c.orig.c 2002-12-05 17:12:36.000000000 -0500 +++ lib/gssapi.c 2007-11-07 21:40:14.000000000 -0500 @@ -35,25 +35,8 @@ #include "ftp.h" #include "base64.h" -#if defined(HAVE_GSSAPI_H) -# include <gssapi.h> - /* if we have gssapi.h (not gssapi/gssapi.h) we assume we link - * against Heimdal, which needs krb5_err.h to define * - * KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN - */ -# include <krb5_err.h> -#elif defined(HAVE_GSSAPI_GSSAPI_H) -# include <gssapi/gssapi.h> - /* if we have gssapi/gssapi.h it might be safe to assume we have the - * other two that are part of MIT's krb5 as well, but this will work - * even if they one day do away with one of those two header files. - */ -# if defined(HAVE_GSSAPI_GSSAPI_KRB5_H) -# include <gssapi/gssapi_krb5.h> -# endif -#else -# error "Need gssapi.h from either Heimdal or MIT krb5" -#endif +#include <gssapi/gssapi.h> +#include <gssapi/gssapi_krb5.h> Once that's taken care of, there's an issue with some newfangled password routine checking a non-existent macro and as a result trying to use the non-existent termio.h. This patch handles that (and I submitted a bug upstream): --- src/input.c.orig 2005-10-05 15:31:25.000000000 -0400 +++ src/input.c 2007-11-07 21:59:37.000000000 -0500 @@ -56,7 +56,7 @@ #if 0 char *getpass_hook(const char *prompt) { -#ifdef KERBEROS +#ifdef HAVE_KERBEROS char tmp[80]; des_read_pw_string(tmp, sizeof(tmp), (char *)prompt, 0); tmp[79] = 0; @@ -74,13 +74,15 @@ /* this compiles ok now, fixes ctrl+c and doesn't use obsolete getpass() */ +#ifndef HAVE_KERBEROS # include <fcntl.h> # include <sys/ioctl.h> # include <termio.h> +#endif char *getpass_hook(const char *prompt) { -#ifdef KERBEROS +#ifdef HAVE_KERBEROS char tmp[80]; des_read_pw_string(tmp, sizeof(tmp), (char *)prompt, 0); I don't really know how to roll this all up into a portfile to test it, but it's compiling for me manually now.
On 07/11/2007, Tim Clem <tim.clem@gmail.com> wrote: Thanks for looking into this!
I looked into it. Some of the header files are throwing yafc into thinking Leopard's using the Heimdal version of Kerberos which has a different location for one of its headers. This patch takes care of that problem (even if it is a little heavy-handed):
--- lib/gssapi.c.orig.c 2002-12-05 17:12:36.000000000 -0500 +++ lib/gssapi.c 2007-11-07 21:40:14.000000000 -0500 @@ -35,25 +35,8 @@ #include "ftp.h" #include "base64.h"
-#if defined(HAVE_GSSAPI_H) -# include <gssapi.h> - /* if we have gssapi.h (not gssapi/gssapi.h) we assume we link - * against Heimdal, which needs krb5_err.h to define * - * KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN - */ -# include <krb5_err.h> -#elif defined(HAVE_GSSAPI_GSSAPI_H) -# include <gssapi/gssapi.h> - /* if we have gssapi/gssapi.h it might be safe to assume we have the - * other two that are part of MIT's krb5 as well, but this will work - * even if they one day do away with one of those two header files. - */ -# if defined(HAVE_GSSAPI_GSSAPI_KRB5_H) -# include <gssapi/gssapi_krb5.h> -# endif -#else -# error "Need gssapi.h from either Heimdal or MIT krb5" -#endif +#include <gssapi/gssapi.h> +#include <gssapi/gssapi_krb5.h>
Applying this patch enables me to build yafc in Leopard, thanks!
Once that's taken care of, there's an issue with some newfangled password routine checking a non-existent macro and as a result trying to use the non-existent termio.h. This patch handles that (and I submitted a bug upstream):
--- src/input.c.orig 2005-10-05 15:31:25.000000000 -0400 +++ src/input.c 2007-11-07 21:59:37.000000000 -0500 @@ -56,7 +56,7 @@ #if 0 char *getpass_hook(const char *prompt) { -#ifdef KERBEROS +#ifdef HAVE_KERBEROS char tmp[80]; des_read_pw_string(tmp, sizeof(tmp), (char *)prompt, 0); tmp[79] = 0; @@ -74,13 +74,15 @@
/* this compiles ok now, fixes ctrl+c and doesn't use obsolete getpass() */
+#ifndef HAVE_KERBEROS # include <fcntl.h> # include <sys/ioctl.h> # include <termio.h> +#endif
char *getpass_hook(const char *prompt) { -#ifdef KERBEROS +#ifdef HAVE_KERBEROS char tmp[80]; des_read_pw_string(tmp, sizeof(tmp), (char *)prompt, 0);
I didn't need to apply this patch to get yafc to build, what error were you seeing to warrant needing this patch?
I don't really know how to roll this all up into a portfile to test it, but it's compiling for me manually now.
I'm working on this, hopefully I get it committed tomorrow. Cheers Adam
On 15/11/2007, Adam Mercer <ram@macports.org> wrote:
--- src/input.c.orig 2005-10-05 15:31:25.000000000 -0400 +++ src/input.c 2007-11-07 21:59:37.000000000 -0500 @@ -56,7 +56,7 @@ #if 0 char *getpass_hook(const char *prompt) { -#ifdef KERBEROS +#ifdef HAVE_KERBEROS char tmp[80]; des_read_pw_string(tmp, sizeof(tmp), (char *)prompt, 0); tmp[79] = 0; @@ -74,13 +74,15 @@
/* this compiles ok now, fixes ctrl+c and doesn't use obsolete getpass() */
+#ifndef HAVE_KERBEROS # include <fcntl.h> # include <sys/ioctl.h> # include <termio.h> +#endif
char *getpass_hook(const char *prompt) { -#ifdef KERBEROS +#ifdef HAVE_KERBEROS char tmp[80]; des_read_pw_string(tmp, sizeof(tmp), (char *)prompt, 0);
I didn't need to apply this patch to get yafc to build, what error were you seeing to warrant needing this patch?
I see this patch is need for yafc-1.1.1 Cheers Adam
participants (2)
-
Adam Mercer
-
Tim Clem