On Mon, Apr 30, 2018 at 5:31 PM, Alexander Aring <ar...@mojatatu.com> wrote: > Hi, > > my use-case is just... we have several application with the same metadata > file. Currently I build a wrapper around babeltrace to run something like: > > find $(TRACE_DIR}/* -maxdepth 1 -type d -exec cp > ${PATH_TO_MY_APP_DATA}/ctf/metadata '{}' \; > > which is terrible... so I try this here somehow. > As you see it has no support for fs-query and I didn't figured out yet > for what fs-query is for. > > Also I was struggle some hours how to tell popt the right argument string, > it need to be: > > --metadata-src=\"/usr/share/$APP_DIR/ctf\" > > with the ugly escape things... I saw there is a complex INI parser system > behind (never saw such complex option parser in an open source project).
A note about this: there are two ways to add component initialization parameters with `babeltrace run`: with --params 'key1="the value", key2=23, key3=simple_string' and, for string parameters, with: --key key1 --value 'the value' The --params option parses what you call a "complex INI" format. It's not so complex in reality and well-explained in the man page. The job of `babeltrace convert` (the default command) is only to create a valid `babeltrace run` command line and run it. In your first patch, you use append_implicit_component_param(): this one appends a key/value pair to the --params option's argument of a given implicit component. It's simply appending `,KEY=VAL` to the current INI-style parameter string for that component, which is why you need to pass the double quotes above, because the effective string to append is exactly: ,metadata-src="/usr/share/app-dir-expansion/ctf" What you want to do is have this instead: --key metadata-src --value /usr/share/app-dir-expansion/ctf (where `app-dir-expansion` is the expansion of $APP_DIR). You can use append_implicit_component_extra_param() for this. This is what we use for complex string values like for --begin, --end, --debug-info-dir, etc. Then you could use: --metadata-src="/usr/share/$APP_DIR/ctf" so that popt returns `/usr/share/app-dir-expansion/ctf`. Hope it helps. Phil > > It's not easy to add such use-case because the whole code things everything > which has a metadata inside is ctf trace... and so far I know that's what > the spec and man-page says [0]. > > As there is no metadata file anymore needed with this parameter, it will > assume every regular file is a ctf stream, if only there is no other subdir > inside the directory. So only "leafs" regular files will be assume as a ctf > stream. If there exists regular files not as leafs - babeltrace will fail. > > Also I think I still need to have a wrapper around babeltrace to specify the > metadata dir as metadata-src then... but better than this cp in front of it. > > - Alex > > [0] http://man7.org/linux/man-pages/man7/babeltrace-source.ctf.fs.7.html > See "trace naming". > > Alexander Aring (2): > fs-src: add argument for metadata src dir > doc: man: babeltrace-source.ctf.fs.7: add metadata-src > > cli/babeltrace-cfg-cli-args.c | 10 ++++ > doc/man/babeltrace-source.ctf.fs.7.txt | 7 +++ > plugins/ctf/fs-src/fs.c | 88 > ++++++++++++++++++++++++++++------ > plugins/ctf/fs-src/fs.h | 3 +- > plugins/ctf/fs-src/metadata.c | 8 +++- > plugins/ctf/fs-src/metadata.h | 1 + > plugins/ctf/fs-src/query.c | 2 +- > 7 files changed, 101 insertions(+), 18 deletions(-) > > -- > 2.11.0 > > _______________________________________________ > lttng-dev mailing list > lttng-dev@lists.lttng.org > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev