hedronvision / bazel-compile-commands-extractor

Goal: Enable awesome tooling for Bazel users of the C language family.
Other
689 stars 114 forks source link

Could the maintainer please give a clear pre-condition list when this tool works? #85

Closed zsh-89 closed 1 year ago

zsh-89 commented 1 year ago

I work on centos7 + bazel5.3 release version (later changed to bazel7 newest pre-release as the post is written) + python 3.9

and trying everything I knew to make this tool work, and it took me 4+ hours and I failed.

I totally understand that is proejct is open sourced and without any guarantee, and nobody is making money from it.

This project is actively maintained, but without a clear environment specification, me and many other users may waste their life on trying to make it work on environments that it doesn't support instead of upgrading the environment with a clear guide.

Thanks.

zsh-89 commented 1 year ago

commit of this tool I used: 3bb6d78614d483ce0d0b370032b2566df8c63c14

The errors I met (it is not that important; the list I mentioned is the key)

  1. Unrecognized option: --ui_event_filters=-info

  2. --output=jsonproto 'jsonproto' not supported

Clearly I may be using the bazel version that is NOT supported by this tool or my Linux image is not correct? But I don't care any more, we can all save many hours of live by using the correct bazel version and setup correct environment.

cpsauer commented 1 year ago

Hey, @zsh-89! Thanks for trying it and writing in. Sorry it didn't work out of the box--and I totally get the frustration. I've been there. If you ever start to get that deep into frustrations again, write in! I certainly don't want to see you stuck for 4+ hours either.

cpsauer commented 1 year ago

What's surprising is that I'd have expected the setup you're describing to work. (So the pre-conditions I'd have listed wouldn't have helped :)

Those errors you're listing are from flags the tool passes to Bazel to introspect the build. What's surprising is that support for those flags was added long before the bazel versions you're listing. --output=jsonproto was added in 2.1, for example (commit that added jsonproto). I'd think centos wouldn't be any different, so is there any chance you've somehow got a much older version of bazel than you think (bazel version)? I'm able to run the tool on 5.3 and 7, though I don't have a centos machine handy. Anyway, I'd be happy to help debug further if you'd like?

cpsauer commented 1 year ago

[On intentional compatibility: The python code checks your version and explicitly asks you to upgrade if you're below 3.7, which is the oldest we support right now in response to a user's request. Bazel is tricky because there are so many changes that it's hard to know which old bazel bugs would break this, but it works quite a ways back, like maybe close to 2.1-- in any event, enough farther back than other tools that it hasn't been a big problem unless people have a really old version hanging around by accident. We should work across popular OSs, so long as python and bazel are there. The biggest compatibility problems are instead when someone uses up a new bazel toolchain that does something weird enough that we need to add patches to work around it, but most new toolchains work just fine out of the box.]

cpsauer commented 1 year ago

I'm going to close this for now, since I haven't heard from you in a bit and it seems like action/help would require us interacting around bazel version and those particular errors.

But if you're down to make this better together, just holler and I'll open this right back up.