Hi everyone, Another way of providing commands list to rtags is to provide plain-text commands list. I tried changing the patched main.c so that it does exactly that, but then the problem is to substitute input file names to absolute file paths. If we go the JSON way, we need to provide input files list — the problem in both ways is exactly the same: getting raw input file names from a graph node. Does anyone knows a way to do it? I'm about to dive into the code to find it out...
For now, I solved the problem this way: tup dump prints two types of entries for me: - C command [args...] - F /path/to/file Then, using a Python script, I make a set of all the input files and for each argument of each command I check if that argument is in the file list. If it is the case, then I replace it with a full path. Clumsy. And prone to collisions. суббота, 30 января 2016 г., 9:24:18 UTC+3 пользователь maK написал: > > Hi again, > Looks like I've did some dumb thing and used not patched version of tup > last time. > > With current format I've found some issues: > > - whole dump is not enclosed with '[' and ']' braces, so this is not a > valid json file - this is a minor > - all the commands that contains double quotation chars should be > escaped by \" as those are messing up json format This also forces to to > specially treat all the escaped quotations \" as escaping already escaped > quotation results in \\" and this also mess the json format > > And regarding the missing "file" line. Followed by suggestion I was able > to re-parse "tup dump" output and obtain a valid json file with (probably) > correct "file" entry. But solution is really ugly and heavily depends on > compilation command syntax. > Moreover playing a while with my solution shows that it is not convenient > as on every dependency change I must run "tup dump" again. This requires > launching command by hand (same applies to rtags) or wrapping tup in a > Makefile for example (which I happily stopped using after found tup). So I > think that best solution would be to introduce new Tupfile command like: > > dump_to "path to json file" > > that would instruct tup to also dump commands while parsing. I am not sure > if it would be good idea to do this on whole tup hierarchy level or create > a new ^-flag to instruct tup, that this command should be dumped into json. > > What do you think? > > W dniu sobota, 23 stycznia 2016 07:28:45 UTC+1 użytkownik maK napisał: >> >> Hi Mike, >> Today I tried command dumper again, but it is not working. >> It prints: >> tup: Unable to find tupid for 'dump' >> in couple of my projects. Where should I look to find the cause? >> >> W dniu czwartek, 7 stycznia 2016 20:33:59 UTC+1 użytkownik maK napisał: >>> >>> Hi Mike, >>> As a start it looks good on my project. >>> Today I don't have much time, but I'll try to integrate this solution >>> with rtags and YCM soon and share my results. >>> Thanks for the patch. >>> >>> Regarding "file" line - generally I agree with Ben. >>> >>> W dniu poniedziałek, 4 stycznia 2016 23:27:03 UTC+1 użytkownik Ben >>> Boeckel napisał: >>>> >>>> On Mon, Jan 04, 2016 at 16:47:38 -0500, Mike Shal wrote: >>>> > Attached is a patch that might provide a good start for this - it >>>> uses a >>>> > trimmed down version of the 'tup graph' logic. However, it dumps >>>> every >>>> > command, not just compilation commands. I'm not sure if that would >>>> mess up >>>> > the compilation database. Also, I'm not sure how to generate the >>>> "file" >>>> > line - is that required? Maybe it could just pull it out of the >>>> command >>>> > string. >>>> >>>> It is described as "the translation unit’s main file", so I'd say it >>>> should be the %f argument of the command. It also says that it is used >>>> by tools for searching the database, so I'd say it's fairly important. >>>> For any command without a %f (whether used literally in the command or >>>> not), it might be best to just skip those (i.e., any tool using this >>>> file would probably not care about Python script commands). >>>> >>>> --Ben >>>> >>> -- -- tup-users mailing list email: [email protected] unsubscribe: [email protected] options: http://groups.google.com/group/tup-users?hl=en --- You received this message because you are subscribed to the Google Groups "tup-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
