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 :|