32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
---
|
|
synopsis: Rename all the libraries nixexpr, nixstore, etc to lixexpr, lixstore, etc
|
|
credits: jade
|
|
category: Breaking Changes
|
|
---
|
|
|
|
The Lix C++ API libraries have had the following changes:
|
|
- Includes moved from `include/nix/` to `include/lix/`
|
|
- `pkg-config` files renamed from `nix-expr` to `lix-expr` and so on.
|
|
- Libraries renamed from `libnixexpr.so` to `liblixexpr.so` and so on.
|
|
|
|
There are other changes between Nix 2.18 and Lix, since these APIs are not
|
|
stable. However, this change in particular is a deliberate compatibility break
|
|
to force downstreams linking to Lix to specifically handle Lix and avoid Lix
|
|
accidentally getting ensnared in compatibility code for newer CppNix.
|
|
|
|
Migration path:
|
|
|
|
- expr.hh -> lix/libexpr/expr.hh
|
|
- nix/config.h -> lix/config.h
|
|
|
|
To apply this migration automatically, remove all `<nix/>` from includes, so `#include <nix/expr.hh>` -> `#include <expr.hh>`.
|
|
Then, the correct paths will be resolved from the tangled mess, and the clang-tidy automated fix will work.
|
|
|
|
Then run the following for out of tree projects (header filter is set to only fix instances in headers in `../src` relative to the compiler's working directory, as would be the case in nix-eval-jobs or other things built with meson, e.g.):
|
|
|
|
```console
|
|
lix_root=$HOME/lix
|
|
(cd $lix_root/clang-tidy && nix develop -c 'meson setup build && ninja -C build')
|
|
run-clang-tidy -checks='-*,lix-fixincludes' -load=$lix_root/clang-tidy/build/liblix-clang-tidy.so -p build/ -header-filter '\.\./src/.*\.h' -fix src
|
|
```
|