Re: [PATCH 10/16] rpcgen: define entrypoint for running new rpcgen impl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 09, 2023 at 03:25:38PM +0100, Ján Tomko wrote:
> On a Wednesday in 2023, Daniel P. Berrangé wrote:
> > The new program takes the form
> > 
> >  rpcgen [--mode source|header|repr] \
> >         [--header include] \
> >         xdr-file output-file
> > 
> > If '--mode' is not given it parses the XDR file but does not
> > generate anything, which is useful as a syntax check. The
> > 'source' mode gives the '.c' file content, while 'header'
> > gives the '.h' file content. 'repr' gives a representation
> > of the abstract syntax tree, mostly useful for debugging
> > the parser.
> > 
> > If '--header' is given, it is added as a local #include ".."
> > statement in the output and is valid for either 'header'
> > or 'source' modes.
> > 
> > Either 'xdr-file' or 'output-file' can be omitted in which
> > case they default to stdin/stdout respectively.
> > 
> > This rpcgen program will directly include the 'config.h'
> > header in its output.
> > 
> > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>
> > ---
> > scripts/rpcgen/main.py | 86 ++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 86 insertions(+)
> > create mode 100755 scripts/rpcgen/main.py
> > 
> > diff --git a/scripts/rpcgen/main.py b/scripts/rpcgen/main.py
> > new file mode 100755
> > index 0000000000..bf4ef38ede
> > --- /dev/null
> > +++ b/scripts/rpcgen/main.py
> > @@ -0,0 +1,86 @@
> > +#!/usr/bin/python
> 
> #!/usr/bin/env python
> 
> > +
> > +    if args.mode == "header":
> > +        print("/* This file is auto-generated from %s */\n" % args.input, file=outfp)
> > +        print("#include <rpc/rpc.h>", file=outfp)
> > +        for h in args.header:
> > +            print('#include "%s"' % h, file=outfp)
> > +        print("", file=outfp)
> > +        print("#pragma once\n", file=outfp)
> > +        generator = XDRTypeDeclarationGenerator(spec)
> > +        print(generator.visit(), file=outfp)
> > +        generator = XDRMarshallDeclarationGenerator(spec)
> > +        print(generator.visit(), file=outfp)
> > +    elif args.mode == "source":
> > +        print("/* This file is auto-generated from %s */\n" % args.input, file=outfp)
> > +        print("#include <config.h>", file=outfp)
> 
> > +        if args.input.endswith(".x"):
> > +            print('#include "%s.h"' % args.input[:-2], file=outfp)
> 
> The .x file is in the source dir, while the .h file is in the build dir.
> 
> Unless I remove the two lines above, I'm getting an error:
> 
> src/remote/lxc_protocol.c:4:10: fatal error: '../../git/libvirt/src/remote/lxc_protocol.h' file not found
> #include "../../git/libvirt/src/remote/lxc_protocol.h"
>          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> And thanks to the --header option, there already is an include of
> lxc_protocol.h in the file:
> 
> #include <config.h>
> #include "../../git/libvirt/src/remote/lxc_protocol.h"
> #include "lxc_protocol.h"
> 
> 
> If I use a builddir under libvirt.git, it somehow works:
> 
> #include <config.h>
> #include "../src/remote/lxc_protocol.h"
> #include "lxc_protocol.h"

Yes, that's what I used. Wierd.

Anyway, as you say, it is redundant and I meant to remove it because
it is saner to just pass the --header arg.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux