diff mbox

[V2] Fix Build w/gssapi disabled

Message ID 554BC9F3.6020005@RedHat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Steve Dickson May 7, 2015, 8:24 p.m. UTC
This version seems to work now.

I wonder if this warrants a 0.3.1 release...

How do other library deal with API breakage?   

steved.

From 6cc5a243f62fbe32fe5f24f4c549a42b1c2b4adc Mon Sep 17 00:00:00 2001
From: Thorsten Kukuk <kukuk@suse.de>
Date: Thu, 7 May 2015 16:14:04 -0400
Subject: [PATCH] Fix Build w/gssapi disabled

A regression was introduced by commit d5259e75 that
broke the --disable-gssapi configuration flag
causing numerous compile errors.

This patch fixes those errors but then the config
flag is used it breaks API with previous releases.

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 .gitignore                |  2 ++
 Makefile.am               |  4 +++-
 configure.ac              |  3 ++-
 src/svc_auth_gss.c        |  5 ++++-
 tirpc/rpc/rpc.h           |  4 +++-
 tirpc/rpc/svc_auth.h      |  8 ++++++++
 tirpc/tirpc-features.h.in | 10 ++++++++++
 7 files changed, 32 insertions(+), 4 deletions(-)
 create mode 100644 tirpc/tirpc-features.h.in

Comments

Mike Frysinger May 8, 2015, 2:03 a.m. UTC | #1
On 07 May 2015 16:24, Steve Dickson wrote:
> --- /dev/null
> +++ b/tirpc/tirpc-features.h.in
> @@ -0,0 +1,10 @@
> +#ifndef _TIRPC_FEATURES_H
> +#define _TIRPC_FEATURES_H
> +
> +/* Define to 1 if DES authentication is enabled */
> +#undef HAVE_AUTHDES
> +
> +/* Define to 1 if GSSAPI is enabled */
> +#undef HAVE_GSSAPI
> +
> +#endif /* _TIRPC_FEATURES_H */

it is dangerous to export raw HAVE_xxx defines -- it can break packages that
use autotools themselves.  they need an appropriate prefix like RPC_xxx or
TIRPC_xxx.
-mike
Steve Dickson May 8, 2015, 3:33 a.m. UTC | #2
On 05/07/2015 04:24 PM, Steve Dickson wrote:
> This version seems to work now.
> 
> I wonder if this warrants a 0.3.1 release...
> 
> How do other library deal with API breakage?   
> 
> steved.
> 
> From 6cc5a243f62fbe32fe5f24f4c549a42b1c2b4adc Mon Sep 17 00:00:00 2001
> From: Thorsten Kukuk <kukuk@suse.de>
> Date: Thu, 7 May 2015 16:14:04 -0400
> Subject: [PATCH] Fix Build w/gssapi disabled
> 
> A regression was introduced by commit d5259e75 that
> broke the --disable-gssapi configuration flag
> causing numerous compile errors.
> 
> This patch fixes those errors but then the config
> flag is used it breaks API with previous releases.
> 
> Signed-off-by: Steve Dickson <steved@redhat.com>
Committed...

steved.

> ---
>  .gitignore                |  2 ++
>  Makefile.am               |  4 +++-
>  configure.ac              |  3 ++-
>  src/svc_auth_gss.c        |  5 ++++-
>  tirpc/rpc/rpc.h           |  4 +++-
>  tirpc/rpc/svc_auth.h      |  8 ++++++++
>  tirpc/tirpc-features.h.in | 10 ++++++++++
>  7 files changed, 32 insertions(+), 4 deletions(-)
>  create mode 100644 tirpc/tirpc-features.h.in
> 
> diff --git a/.gitignore b/.gitignore
> index b7814a3..fad274f 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -34,6 +34,8 @@ libtirpc.pc
>  lib*.a
>  src/libtirpc.la
>  src/libtirpc_la-*.lo
> +tirpc/stamp-h2
> +tirpc/tirpc-features.h
>  # generic editor backup et al
>  *~
>  .stgitmail.txt
> diff --git a/Makefile.am b/Makefile.am
> index 2bf725c..2bce3b0 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -4,9 +4,11 @@ ACLOCAL_AMFLAGS = -I m4
>  noinst_HEADERS	       = tirpc/reentrant.h \
>  			 tirpc/getpeereid.h \
>  			 tirpc/libc_private.h \
> -			 tirpc/un-namespace.h
> +			 tirpc/un-namespace.h \
> +			 tirpc/tirpc-features.h.in
>  
>  nobase_include_HEADERS = tirpc/netconfig.h \
> +			 tirpc/tirpc-features.h \
>  			 tirpc/rpcsvc/crypt.x \
>  			 tirpc/rpcsvc/crypt.h \
>  			 tirpc/rpc/xdr.h \
> diff --git a/configure.ac b/configure.ac
> index 711b054..290c635 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -10,6 +10,7 @@ AC_ARG_ENABLE(gssapi,
>  AM_CONDITIONAL(GSS, test "x$enable_gssapi" = xyes)
>  
>  if test "x$enable_gssapi" = xyes; then
> +	AC_DEFINE([HAVE_GSSAPI], [1], [Define to 1 if GSSAPI is enabled])
>  	GSSAPI_CFLAGS=`krb5-config --cflags gssapi`
>  	GSSAPI_LIBS=`krb5-config --libs gssapi`
>  	AC_SUBST([GSSAPI_CFLAGS])
> @@ -41,7 +42,7 @@ AC_ARG_ENABLE(symvers,
>  AM_CONDITIONAL(SYMVERS, test "x$enable_symvers" = xyes)
>  
>  AC_PROG_CC
> -AC_CONFIG_HEADERS([config.h])
> +AC_CONFIG_HEADERS([config.h tirpc/tirpc-features.h])
>  AC_PROG_LIBTOOL
>  AC_HEADER_DIRENT
>  AC_PREFIX_DEFAULT(/usr)
> diff --git a/src/svc_auth_gss.c b/src/svc_auth_gss.c
> index d95eae1..e0a5c6a 100644
> --- a/src/svc_auth_gss.c
> +++ b/src/svc_auth_gss.c
> @@ -34,8 +34,11 @@
>  
>   */
>  
> -#include <sys/types.h>
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
>  
> +#include <sys/types.h>
>  #include <unistd.h>
>  #include <stdio.h>
>  #include <stdlib.h>
> diff --git a/tirpc/rpc/rpc.h b/tirpc/rpc/rpc.h
> index 1dbb391..8f37454 100644
> --- a/tirpc/rpc/rpc.h
> +++ b/tirpc/rpc/rpc.h
> @@ -35,6 +35,8 @@
>  #ifndef _TIRPC_RPC_H
>  #define _TIRPC_RPC_H
>  
> +#include <tirpc-features.h>
> +
>  #include <rpc/types.h>		/* some typedefs */
>  #include <sys/socket.h>
>  #include <netinet/in.h>
> @@ -60,7 +62,7 @@
>  #include <rpc/auth_des.h>	/* protocol for des style cred */
>  #endif /* HAVE_AUTHDES */
>  
> -#ifdef HAVE_RPCSEC_GSS
> +#ifdef HAVE_GSSAPI
>  #include <rpc/auth_gss.h>   /* RPCSEC_GSS */
>  #endif
>  
> diff --git a/tirpc/rpc/svc_auth.h b/tirpc/rpc/svc_auth.h
> index 44b38bf..dbd8cc9 100644
> --- a/tirpc/rpc/svc_auth.h
> +++ b/tirpc/rpc/svc_auth.h
> @@ -41,6 +41,10 @@
>  #ifndef _RPC_SVC_AUTH_H
>  #define _RPC_SVC_AUTH_H
>  
> +#include <tirpc-features.h>
> +
> +#ifdef HAVE_GSSAPI
> +
>  #include <rpc/rpcsec_gss.h>
>  
>  typedef struct {
> @@ -51,6 +55,8 @@ typedef struct {
>  	u_int			seq_num;
>  } svc_rpc_gss_parms_t;
>  
> +#endif /* HAVE_GSSAPI */
> +
>  /*
>   * Interface to server-side authentication flavors.
>   */
> @@ -63,8 +69,10 @@ typedef struct SVCAUTH {
>  		int     (*svc_ah_destroy)(struct SVCAUTH *);
>  		} *svc_ah_ops;
>  	caddr_t svc_ah_private;
> +#ifdef HAVE_GSSAPI
>  	svc_rpc_gss_parms_t svc_gss_params;
>  	rpc_gss_rawcred_t raw_cred;
> +#endif
>  } SVCAUTH;
>  
>  #define SVCAUTH_WRAP(auth, xdrs, xfunc, xwhere) \
> diff --git a/tirpc/tirpc-features.h.in b/tirpc/tirpc-features.h.in
> new file mode 100644
> index 0000000..72e18bc
> --- /dev/null
> +++ b/tirpc/tirpc-features.h.in
> @@ -0,0 +1,10 @@
> +#ifndef _TIRPC_FEATURES_H
> +#define _TIRPC_FEATURES_H
> +
> +/* Define to 1 if DES authentication is enabled */
> +#undef HAVE_AUTHDES
> +
> +/* Define to 1 if GSSAPI is enabled */
> +#undef HAVE_GSSAPI
> +
> +#endif /* _TIRPC_FEATURES_H */
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/.gitignore b/.gitignore
index b7814a3..fad274f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,8 @@  libtirpc.pc
 lib*.a
 src/libtirpc.la
 src/libtirpc_la-*.lo
+tirpc/stamp-h2
+tirpc/tirpc-features.h
 # generic editor backup et al
 *~
 .stgitmail.txt
diff --git a/Makefile.am b/Makefile.am
index 2bf725c..2bce3b0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,9 +4,11 @@  ACLOCAL_AMFLAGS = -I m4
 noinst_HEADERS	       = tirpc/reentrant.h \
 			 tirpc/getpeereid.h \
 			 tirpc/libc_private.h \
-			 tirpc/un-namespace.h
+			 tirpc/un-namespace.h \
+			 tirpc/tirpc-features.h.in
 
 nobase_include_HEADERS = tirpc/netconfig.h \
+			 tirpc/tirpc-features.h \
 			 tirpc/rpcsvc/crypt.x \
 			 tirpc/rpcsvc/crypt.h \
 			 tirpc/rpc/xdr.h \
diff --git a/configure.ac b/configure.ac
index 711b054..290c635 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,6 +10,7 @@  AC_ARG_ENABLE(gssapi,
 AM_CONDITIONAL(GSS, test "x$enable_gssapi" = xyes)
 
 if test "x$enable_gssapi" = xyes; then
+	AC_DEFINE([HAVE_GSSAPI], [1], [Define to 1 if GSSAPI is enabled])
 	GSSAPI_CFLAGS=`krb5-config --cflags gssapi`
 	GSSAPI_LIBS=`krb5-config --libs gssapi`
 	AC_SUBST([GSSAPI_CFLAGS])
@@ -41,7 +42,7 @@  AC_ARG_ENABLE(symvers,
 AM_CONDITIONAL(SYMVERS, test "x$enable_symvers" = xyes)
 
 AC_PROG_CC
-AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_HEADERS([config.h tirpc/tirpc-features.h])
 AC_PROG_LIBTOOL
 AC_HEADER_DIRENT
 AC_PREFIX_DEFAULT(/usr)
diff --git a/src/svc_auth_gss.c b/src/svc_auth_gss.c
index d95eae1..e0a5c6a 100644
--- a/src/svc_auth_gss.c
+++ b/src/svc_auth_gss.c
@@ -34,8 +34,11 @@ 
 
  */
 
-#include <sys/types.h>
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
+#include <sys/types.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/tirpc/rpc/rpc.h b/tirpc/rpc/rpc.h
index 1dbb391..8f37454 100644
--- a/tirpc/rpc/rpc.h
+++ b/tirpc/rpc/rpc.h
@@ -35,6 +35,8 @@ 
 #ifndef _TIRPC_RPC_H
 #define _TIRPC_RPC_H
 
+#include <tirpc-features.h>
+
 #include <rpc/types.h>		/* some typedefs */
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -60,7 +62,7 @@ 
 #include <rpc/auth_des.h>	/* protocol for des style cred */
 #endif /* HAVE_AUTHDES */
 
-#ifdef HAVE_RPCSEC_GSS
+#ifdef HAVE_GSSAPI
 #include <rpc/auth_gss.h>   /* RPCSEC_GSS */
 #endif
 
diff --git a/tirpc/rpc/svc_auth.h b/tirpc/rpc/svc_auth.h
index 44b38bf..dbd8cc9 100644
--- a/tirpc/rpc/svc_auth.h
+++ b/tirpc/rpc/svc_auth.h
@@ -41,6 +41,10 @@ 
 #ifndef _RPC_SVC_AUTH_H
 #define _RPC_SVC_AUTH_H
 
+#include <tirpc-features.h>
+
+#ifdef HAVE_GSSAPI
+
 #include <rpc/rpcsec_gss.h>
 
 typedef struct {
@@ -51,6 +55,8 @@  typedef struct {
 	u_int			seq_num;
 } svc_rpc_gss_parms_t;
 
+#endif /* HAVE_GSSAPI */
+
 /*
  * Interface to server-side authentication flavors.
  */
@@ -63,8 +69,10 @@  typedef struct SVCAUTH {
 		int     (*svc_ah_destroy)(struct SVCAUTH *);
 		} *svc_ah_ops;
 	caddr_t svc_ah_private;
+#ifdef HAVE_GSSAPI
 	svc_rpc_gss_parms_t svc_gss_params;
 	rpc_gss_rawcred_t raw_cred;
+#endif
 } SVCAUTH;
 
 #define SVCAUTH_WRAP(auth, xdrs, xfunc, xwhere) \
diff --git a/tirpc/tirpc-features.h.in b/tirpc/tirpc-features.h.in
new file mode 100644
index 0000000..72e18bc
--- /dev/null
+++ b/tirpc/tirpc-features.h.in
@@ -0,0 +1,10 @@ 
+#ifndef _TIRPC_FEATURES_H
+#define _TIRPC_FEATURES_H
+
+/* Define to 1 if DES authentication is enabled */
+#undef HAVE_AUTHDES
+
+/* Define to 1 if GSSAPI is enabled */
+#undef HAVE_GSSAPI
+
+#endif /* _TIRPC_FEATURES_H */