aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJade Lovelace <lix@jade.fyi>2024-05-16 17:04:05 -0700
committerQyriad <qyriad@qyriad.me>2024-05-23 16:45:23 -0600
commitc97e17144e0d0b666d7b79d8b4b0d581bfdf373b (patch)
tree1d1193055f45f9dcc63ae3908af8fdc01c7434df /doc
parent774c56094f3f3dcb1f25fe147c52604ad664bd5b (diff)
packaging: rename nixexpr -> lixexpr and so on
This breaks downstreams linking to us on purpose to make sure that if someone is linking to Lix they're doing it on purpose and crucially not mixing up Nix and Lix versions in compatibility code. We still need to fix the internal includes to follow the same schema so we can drop the single-level include system entirely. However, this requires a little more effort. This adds pkg-config for libfetchers and config.h. 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: ``` 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 ``` Related: https://git.lix.systems/lix-project/nix-eval-jobs/pulls/5 Fixes: https://git.lix.systems/lix-project/lix/issues/279 Change-Id: I7498e903afa6850a731ef8ce77a70da6b2b46966
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: