1.5 KiB
synopsis | credits | category |
---|---|---|
Rename all the libraries nixexpr, nixstore, etc to lixexpr, lixstore, etc | jade | Breaking Changes |
The Lix C++ API libraries have had the following changes:
- Includes moved from
include/nix/
toinclude/lix/
pkg-config
files renamed fromnix-expr
tolix-expr
and so on.- Libraries renamed from
libnixexpr.so
toliblixexpr.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.):
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