justincady wrote:

@ArcsinX I updated the PR to:

- Take a more general path mapping approach
- Validate that specifying multiple mappings works as expected
- Apply path mapping to the serialized compile commands

And, I retested your original failed scenario by once again starting with a 
fresh zlib...

- Copy and extract the archive into two separate directories
- In each:
    - `$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release 
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON`
    - `$ cmake --build build/`
    - `$ mv build/compile_commands.json .`
- Open Client A in VSCode with this clangd config (_no mapping flag_):
    - `--log=verbose`
    - `--background-index=true`
- Observe `.cache` is created and populated in Client A
    - `Enqueueing 17 commands for indexing`
- Copy `.cache` into Client B
    - `$ cp -R /path/to/zlib-one/zlib-1.3.1/.cache .`
- Open Client B in VSCode with this additional clangd config:
    - 
`--background-index-path-mappings=${workspaceFolder}=/path/to/zlib-one/zlib-1.3.1`
- Observe index is loaded and duplicate files are not created (both cache 
directories contain 29 files):

```
$ diff -bur .cache/ /path/to/zlib-one/zlib-1.3.1/.cache/`
$
```

- Now modify one file (adding an empty static function):

```
$ diff -bur .cache/ /path/to/zlib-one/zlib-1.3.1/.cache/
Binary files .cache/clangd/index/gzclose.c.74002F0CA97FAD13.idx and 
/path/to/zlib-one/zlib-1.3.1/.cache/clangd/index/gzclose.c.74002F0CA97FAD13.idx 
differ
$
```

- Validate that the updated shard still uses `zlib-one` paths (using `dexp`)

The major difference here is true path remapping, as you originally expected. 
Everything in memory is mapped to `zlib-two`; everything on-disk remains 
`zlib-one` (including compile commands).

https://github.com/llvm/llvm-project/pull/180285
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to