From 29cfe643cbcf7826375a3d52ff1865706a35bc38 Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Fri, 28 Jun 2019 22:51:37 +0530 Subject: libglusterfs: remove dependency of rpc Goal: 'libglusterfs' files shouldn't have any dependency outside of the tree, specially the header files, shouldn't have '#include' from outside the tree. Fixes: * Had to introduce libglusterd so, methods and structures required for only mgmt/glusterd, and cli/ are separated from 'libglusterfs/' * Remove rpc/xdr/gen from build, which was used mainly so dependency for libglusterfs could be properly satisfied. * Move rpcsvc_auth_data to client_t.h, so all dependencies could be handled. Updates: bz#1636297 Change-Id: I0e80243a5a3f4615e6fac6e1b947ad08a9363fce Signed-off-by: Amar Tumballi --- rpc/rpc-lib/src/rpcsvc.h | 11 +++------- rpc/xdr/gen/Makefile.am | 54 ------------------------------------------------ rpc/xdr/src/Makefile.am | 45 ++++++++++++++++++++++++++++++++++++---- 3 files changed, 44 insertions(+), 66 deletions(-) delete mode 100644 rpc/xdr/gen/Makefile.am (limited to 'rpc') diff --git a/rpc/rpc-lib/src/rpcsvc.h b/rpc/rpc-lib/src/rpcsvc.h index d9052392d47..f6a02d6759f 100644 --- a/rpc/rpc-lib/src/rpcsvc.h +++ b/rpc/rpc-lib/src/rpcsvc.h @@ -22,6 +22,7 @@ #include #include #include +#include #ifndef MAX_IOVEC #define MAX_IOVEC 16 @@ -142,12 +143,6 @@ struct rpcsvc_config { int max_block_size; }; -typedef struct rpcsvc_auth_data { - int flavour; - int datalen; - char authdata[GF_MAX_AUTH_BYTES]; -} rpcsvc_auth_data_t; - #define rpcsvc_auth_flavour(au) ((au).flavour) typedef struct drc_client drc_client_t; @@ -228,14 +223,14 @@ struct rpcsvc_request { size_t payloadsize; /* The credentials extracted from the rpc request */ - rpcsvc_auth_data_t cred; + client_auth_data_t cred; /* The verified extracted from the rpc request. In request side * processing this contains the verifier sent by the client, on reply * side processing, it is filled with the verified that will be * sent to the client. */ - rpcsvc_auth_data_t verf; + client_auth_data_t verf; /* Container for a RPC program wanting to store a temp * request-specific item. */ diff --git a/rpc/xdr/gen/Makefile.am b/rpc/xdr/gen/Makefile.am deleted file mode 100644 index 3e799b4c644..00000000000 --- a/rpc/xdr/gen/Makefile.am +++ /dev/null @@ -1,54 +0,0 @@ -if BUILD_GNFS - NFS_XDRS = nlm4-xdr.x nsm-xdr.x acl3-xdr.x mount3udp.x -endif - -XDRGENFILES = glusterfs3-xdr.x glusterfs4-xdr.x cli1-xdr.x \ - rpc-common-xdr.x glusterd1-xdr.x portmap-xdr.x \ - changelog-xdr.x ${NFS_XDRS} - -XDRHEADERS = $(XDRGENFILES:.x=.h) -XDRSOURCES = $(XDRGENFILES:.x=.c) - -CLEANFILES = $(XDRSOURCES) $(XDRHEADERS) $(XDRGENFILES) - -# trick automake into doing BUILT_SOURCES magic -BUILT_SOURCES = $(XDRHEADERS) $(XDRSOURCES) - -xdrsrc=$(top_srcdir)/rpc/xdr/src -xdrdst=$(top_builddir)/rpc/xdr/src - -# make's dependency resolution may mean that it decides to run -# rpcgen again (unnecessarily), but as the .c file already exists, -# rpcgen will exit with an error, resulting in a build error. We -# could use a '-' (i.e. -@rpcgen ...) and suffer with noisy warnings -# in the build. Or we do this crufty thing instead. -$(XDRSOURCES): $(XDRGENFILES) - @if [ ! -e $(xdrdst)/$@ -o $(@:.c=.x) -nt $(xdrdst)/$@ ]; then \ - rpcgen -c -o $(xdrdst)/$@ $(@:.c=.x) ;\ - fi - -# d*mn sed in netbsd6 doesn't do -i (inline) -# (why are we still running smoke on netbsd6 and not netbsd7?) -$(XDRHEADERS): $(XDRGENFILES) - @if [ ! -e $(xdrdst)/$@ -o $(@:.h=.x) -nt $(xdrdst)/$@ ]; then \ - rpcgen -h -o $(@:.h=.tmp) $(@:.h=.x) && \ - sed -e '/#ifndef/ s/-/_/g' -e '/#define/ s/-/_/g' \ - -e '/#endif/ s/-/_/' -e 's/TMP_/H_/g' \ - $(@:.h=.tmp) > $(xdrdst)/$@ && \ - rm -f $(@:.h=.tmp) ; \ - fi - - -# link .x files when doing out-of-tree builds -# have to use .PHONY here to force it; all versions of make -# will think the file already exists "here" by virtue of the -# VPATH. And we have to have the .x file in $cwd in order to -# have rpcgen generate "nice" #include directives -# i.e. (nice): -# #include "acl3-xdr.h" -# versus (not nice): -# #include "../../../../foo/src/rpc/xdr/src/acl3-xdr.h" -.PHONY : $(XDRGENFILES) -$(XDRGENFILES): - @if [ ! -e $@ ]; then ln -s $(xdrsrc)/$@ . ; fi; - diff --git a/rpc/xdr/src/Makefile.am b/rpc/xdr/src/Makefile.am index 44a72cac53b..05f4167076f 100644 --- a/rpc/xdr/src/Makefile.am +++ b/rpc/xdr/src/Makefile.am @@ -36,8 +36,45 @@ nodist_libgfxdr_la_HEADERS = $(XDRHEADERS) libgfxdr_ladir = $(includedir)/glusterfs/rpc -CLEANFILES = $(XDRSOURCES) $(XDRHEADERS) +CLEANFILES = $(XDRSOURCES) $(XDRHEADERS) $(XDRGENFILES) -# Generate the .c and .h symlinks from the ../gen/*.x files -$(XDRSOURCES) $(XDRHEADERS): - $(MAKE) -C ../gen $^ +# trick automake into doing BUILT_SOURCES magic +BUILT_SOURCES = $(XDRHEADERS) $(XDRSOURCES) + +xdrsrc=$(top_srcdir)/rpc/xdr/src +xdrdst=$(top_builddir)/rpc/xdr/src + +# make's dependency resolution may mean that it decides to run +# rpcgen again (unnecessarily), but as the .c file already exists, +# rpcgen will exit with an error, resulting in a build error. We +# could use a '-' (i.e. -@rpcgen ...) and suffer with noisy warnings +# in the build. Or we do this crufty thing instead. +$(XDRSOURCES): $(XDRGENFILES) + @if [ ! -e $(xdrdst)/$@ -o $(@:.c=.x) -nt $(xdrdst)/$@ ]; then \ + rpcgen -c -o $(xdrdst)/$@ $(@:.c=.x) ;\ + fi + +# d*mn sed in netbsd6 doesn't do -i (inline) +# (why are we still running smoke on netbsd6 and not netbsd7?) +$(XDRHEADERS): $(XDRGENFILES) + @if [ ! -e $(xdrdst)/$@ -o $(@:.h=.x) -nt $(xdrdst)/$@ ]; then \ + rpcgen -h -o $(@:.h=.tmp) $(@:.h=.x) && \ + sed -e '/#ifndef/ s/-/_/g' -e '/#define/ s/-/_/g' \ + -e '/#endif/ s/-/_/' -e 's/TMP_/H_/g' \ + $(@:.h=.tmp) > $(xdrdst)/$@ && \ + rm -f $(@:.h=.tmp) ; \ + fi + + +# link .x files when doing out-of-tree builds +# have to use .PHONY here to force it; all versions of make +# will think the file already exists "here" by virtue of the +# VPATH. And we have to have the .x file in $cwd in order to +# have rpcgen generate "nice" #include directives +# i.e. (nice): +# #include "acl3-xdr.h" +# versus (not nice): +# #include "../../../../foo/src/rpc/xdr/src/acl3-xdr.h" +.PHONY : $(XDRGENFILES) +$(XDRGENFILES): + @if [ ! -e $@ ]; then ln -s $(xdrsrc)/$@ . ; fi; -- cgit