aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorjade <lix@jade.fyi>2024-05-23 23:19:28 +0000
committerGerrit Code Review <gerrit@lix-systems>2024-05-23 23:19:28 +0000
commit9530b7f2b2b653fc11753ce452636896350324ff (patch)
tree837593bceacff5f2760594c5a115242ec63ddca9 /doc
parent677cf75473d0dd86119c4535d8733a6a0b1100c0 (diff)
parentc97e17144e0d0b666d7b79d8b4b0d581bfdf373b (diff)
Merge "packaging: rename nixexpr -> lixexpr and so on" into main
Diffstat (limited to 'doc')
-rw-r--r--doc/manual/rl-next/rename-lixexpr.md31
-rw-r--r--doc/manual/src/contributing/hacking.md4
2 files changed, 33 insertions, 2 deletions
diff --git a/doc/manual/rl-next/rename-lixexpr.md b/doc/manual/rl-next/rename-lixexpr.md
new file mode 100644
index 000000000..698553c7f
--- /dev/null
+++ b/doc/manual/rl-next/rename-lixexpr.md
@@ -0,0 +1,31 @@
+---
+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:
+
+```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/ -fix src
+```
diff --git a/doc/manual/src/contributing/hacking.md b/doc/manual/src/contributing/hacking.md
index a8591e7ca..a73d672d4 100644
--- a/doc/manual/src/contributing/hacking.md
+++ b/doc/manual/src/contributing/hacking.md
@@ -102,14 +102,14 @@ $ meson compile -C build nixexpr
All targets may be addressed as their output, relative to the build directory, e.g.:
```bash
-$ meson compile -C build src/libexpr/libnixexpr.so
+$ meson compile -C build src/libexpr/liblixexpr.so
```
But Meson does not consider intermediate files like object files targets.
To build a specific object file, use Ninja directly and specify the output file relative to the build directory:
```bash
-$ ninja -C build src/libexpr/libnixexpr.so.p/nixexpr.cc.o
+$ ninja -C build src/libexpr/liblixexpr.so.p/nixexpr.cc.o
```
To inspect the canonical source of truth on what the state of the buildsystem configuration is, use: