[oe] [meta-networking][PATCH 1/1] yp-tools: fix compile errors

Slater, Joseph joe.slater at windriver.com
Thu Aug 18 16:52:34 UTC 2016



> -----Original Message-----
> From: openembedded-devel-bounces at lists.openembedded.org [mailto:openembedded-devel-
> bounces at lists.openembedded.org] On Behalf Of Khem Raj
> Sent: Wednesday, August 17, 2016 4:20 PM
> To: openembedded-devel at lists.openembedded.org
> Subject: Re: [oe] [meta-networking][PATCH 1/1] yp-tools: fix compile errors
> 
> 
> > On Aug 17, 2016, at 1:22 PM, Joe Slater <jslater at windriver.com> wrote:
> >
> > Fix two fatal warnings.  The cast error only
> > occurs for some architectures.
> >
> > Signed-off-by: Joe Slater <jslater at windriver.com>
> > ---
> > .../nis/yp-tools/alignment-cheat.patch             |   58 ++++++++++++++++++++
> > .../recipes-support/nis/yp-tools_3.3.bb            |    3 +-
> > 2 files changed, 59 insertions(+), 2 deletions(-)
> > create mode 100644 meta-networking/recipes-support/nis/yp-tools/alignment-cheat.patch
> >
> > diff --git a/meta-networking/recipes-support/nis/yp-tools/alignment-cheat.patch b/meta-
> networking/recipes-support/nis/yp-tools/alignment-cheat.patch
> > new file mode 100644
> > index 0000000..856e42e
> > --- /dev/null
> > +++ b/meta-networking/recipes-support/nis/yp-tools/alignment-cheat.patch
> > @@ -0,0 +1,58 @@
> > +yp-tools: avoid fatal cast warning
> > +
> > +The way casting is done, we will get a fatal alignment warning on some
> > +architectures.  This patch cheats our way around this.
> > +
> 
> These changes look fine, however you should run it by the upstream.

Version 4.2 of the tools seems to bear little resemblance to 3.3.  The code and
structures patched here no longer exist.

> 
> > +We also eliminate an unused constant which causes a fatal warning.
> > +
> > +Upstream-status: Pending
> > +
> > +Signed-off-by: Joe Slater <jslater at windriver.com>
> > +
> > +
> > +--- a/lib/do_ypcall.c
> > ++++ b/lib/do_ypcall.c
> > +@@ -44,7 +44,9 @@ struct dom_binding
> > + typedef struct dom_binding dom_binding;
> > +
> > + static const struct timeval RPCTIMEOUT = {25, 0};
> > ++#if 0
> > + static const struct timeval UDPTIMEOUT = {5, 0};
> > ++#endif
> 
> perhaps its better to remove the unused code instead of making preprocessor
> work even more.

Probably.  I think RPCTIMEOUT made it to 4.2, but UDPTIMEOUT did not.

> 
> > + static int const MAXTRIES = 2;
> > + static pthread_mutex_t ypbindlist_lock = PTHREAD_MUTEX_INITIALIZER;
> > + static dom_binding *ypbindlist = NULL;
> > +@@ -381,7 +383,7 @@ __ypclnt_call (u_long prog, xdrproc_t xa
> > +
> > + int
> > + do_ypcall (const char *domain, u_long prog, xdrproc_t xargs,
> > +-	   caddr_t req, xdrproc_t xres, caddr_t resp)
> > ++	   caddr_t req, xdrproc_t xres, void *resp)
> > + {
> > +   dom_binding *ydb;
> > +   int status;
> > +@@ -450,9 +452,9 @@ do_ypcall (const char *domain, u_long pr
> > + /* Like do_ypcall, but translate the status value if necessary.  */
> > + int
> > + do_ypcall_tr (const char *domain, u_long prog, xdrproc_t xargs,
> > +-	      caddr_t req, xdrproc_t xres, caddr_t resp)
> > ++	      caddr_t req, xdrproc_t xres, void *resp)
> > + {
> > +-  int status = do_ypcall (domain, prog, xargs, req, xres, resp);
> > ++  int status = do_ypcall (domain, prog, xargs, req, xres, (void *) resp);
> 
> resp is already a void pointer why is this typecast needed ?

I put it in someplace along the line in trying to fix the problem and forgot
to take it out.

V2 or leave it?  This code does not look like it's going anywhere beyond here.

Joe


> 
> > +   if (status == YPERR_SUCCESS)
> > +     /* We cast to ypresp_val although the pointer could also be of
> > +        type ypresp_key_val or ypresp_master or ypresp_order or
> > +--- a/lib/internal.h
> > ++++ b/lib/internal.h
> > +@@ -17,8 +17,8 @@
> > + #define _INTERNAL_H_
> > +
> > + extern int do_ypcall (const char *domain, u_long prog, xdrproc_t xargs,
> > +-		      caddr_t req, xdrproc_t xres, caddr_t resp);
> > ++		      caddr_t req, xdrproc_t xres, void *resp);
> > + extern int do_ypcall_tr (const char *domain, u_long prog, xdrproc_t xargs,
> > +-			 caddr_t req, xdrproc_t xres, caddr_t resp);
> > ++			 caddr_t req, xdrproc_t xres, void *resp);
> > + extern int yp_maplist (const char *, struct ypmaplist **);
> > + #endif
> > diff --git a/meta-networking/recipes-support/nis/yp-tools_3.3.bb b/meta-
> networking/recipes-support/nis/yp-tools_3.3.bb
> > index b89f0b8..69217fa 100644
> > --- a/meta-networking/recipes-support/nis/yp-tools_3.3.bb
> > +++ b/meta-networking/recipes-support/nis/yp-tools_3.3.bb
> > @@ -11,11 +11,10 @@ ypwhich, yppasswd, domainname, nisdomainname \
> > and ypdomainname. \
> > "
> >
> > -PNBLACKLIST[yp-tools] ?= "BROKEN: fails to build for qemuarm."
> > -
> > SRC_URI = "http://www.linux-nis.org/download/yp-tools/${BP}.tar.bz2 \
> >            file://domainname.service \
> >            file://yp-tools-ipv4-ipv6-Provide-an-in-place-version-of-mapv4v6addr.patch \
> > +           file://alignment-cheat.patch \
> > "
> > SRC_URI[md5sum] = "acebeecc11a73fb8097503670344834c"
> > SRC_URI[sha256sum] = "812be817df3d4c25813552be336c6c6ad5aedaf65611b81af3ad9f98fb3c2e50"
> > --
> > 1.7.9.5
> >
> > --
> > _______________________________________________
> > Openembedded-devel mailing list
> > Openembedded-devel at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-devel




More information about the Openembedded-devel mailing list