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 `` from includes, so `#include ` -> `#include `.
+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:
diff --git a/meson.build b/meson.build
index 5885905c5..0d59ff751 100644
--- a/meson.build
+++ b/meson.build
@@ -395,7 +395,21 @@ config_h = configure_file(
output : 'config.h',
)
-install_headers(config_h, subdir : 'nix')
+install_headers(config_h, subdir : 'lix')
+
+# FIXME: not using the pkg-config module because it creates way too many deps
+# while meson migration is in progress, and we want to not include boost here
+configure_file(
+ input : 'src/lix-base.pc.in',
+ output : 'lix-base.pc',
+ install_dir : libdir / 'pkgconfig',
+ configuration : {
+ 'prefix' : prefix,
+ 'libdir' : libdir,
+ 'includedir' : includedir,
+ 'PACKAGE_VERSION' : meson.project_version(),
+ },
+)
add_project_arguments(
# TODO(Qyriad): Yes this is how the autoconf+Make system did it.
diff --git a/meson/cleanup-install.bash b/meson/cleanup-install.bash
index 3e229cbc6..928edc74a 100755
--- a/meson/cleanup-install.bash
+++ b/meson/cleanup-install.bash
@@ -47,4 +47,4 @@ fi
# Intentionally not using -f.
# If these files don't exist then our assumptions have been violated and we should fail.
-rm -v "$includedir/nix/parser-tab.cc" "$includedir/nix/lexer-tab.cc"
+rm -v "$includedir/lix/libexpr/parser-tab.cc" "$includedir/lix/libexpr/lexer-tab.cc"
diff --git a/package.nix b/package.nix
index be3bcfb35..ebafa9420 100644
--- a/package.nix
+++ b/package.nix
@@ -49,7 +49,7 @@
# internal fork of nix-doc providing :doc in the repl
lix-doc ? __forDefaults.lix-doc,
- pname ? "nix",
+ pname ? "lix",
versionSuffix ? "",
officialRelease ? false,
# Set to true to build the release notes for the next release.
@@ -333,7 +333,7 @@ stdenv.mkDerivation (finalAttrs: {
echo "file binary-dist $out/bin/nix" >> $out/nix-support/hydra-build-products
''
+ lib.optionalString stdenv.isDarwin ''
- for lib in libnixutil.dylib libnixexpr.dylib; do
+ for lib in liblixutil.dylib liblixexpr.dylib; do
install_name_tool \
-change "${lib.getLib boost}/lib/libboost_context.dylib" \
"$out/lib/libboost_context.dylib" \
diff --git a/perl/lib/Nix/meson.build b/perl/lib/Nix/meson.build
index 6810622e3..1d235b74c 100644
--- a/perl/lib/Nix/meson.build
+++ b/perl/lib/Nix/meson.build
@@ -27,7 +27,7 @@ perl_libstore = shared_module(
],
link_args : [
# Nix doesn't provide a pkg-config file for libutil.
- '-lnixutil',
+ '-llixutil',
soname_args,
],
install : true,
diff --git a/perl/meson.build b/perl/meson.build
index 75c7c2c79..4b179da8f 100644
--- a/perl/meson.build
+++ b/perl/meson.build
@@ -64,6 +64,6 @@ if cxx.get_linker_id() in ['ld.bfd', 'ld.gold']
add_project_link_arguments('-Wl,--no-copy-dt-needed-entries', language : 'cpp')
endif
-libstore = dependency('nixstore', 'nix-store', required : true)
+libstore = dependency('lixstore', 'lix-store', required : true)
subdir('lib/Nix')
diff --git a/src/libcmd/lix-cmd.pc.in b/src/libcmd/lix-cmd.pc.in
new file mode 100644
index 000000000..f2e3f9d5e
--- /dev/null
+++ b/src/libcmd/lix-cmd.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Lix (libcmd)
+Description: Lix Package Manager (libcmd)
+Version: @PACKAGE_VERSION@
+Requires: lix-base lix-util
+Libs: -L${libdir} -llixcmd
+Cflags: -I${includedir}/lix/libcmd
diff --git a/src/libcmd/meson.build b/src/libcmd/meson.build
index 5a0e61503..4da1b496b 100644
--- a/src/libcmd/meson.build
+++ b/src/libcmd/meson.build
@@ -39,7 +39,7 @@ libcmd_generated_headers = [
]
libcmd = library(
- 'nixcmd',
+ 'lixcmd',
libcmd_generated_headers,
libcmd_sources,
dependencies : [
@@ -59,13 +59,13 @@ libcmd = library(
install_rpath : libdir,
)
-install_headers(libcmd_headers, subdir : 'nix', preserve_path : true)
+install_headers(libcmd_headers, subdir : 'lix/libcmd', preserve_path : true)
custom_target(
command : [ 'cp', '@INPUT@', '@OUTPUT@' ],
input : libcmd_generated_headers,
output : '@PLAINNAME@',
install : true,
- install_dir : includedir / 'nix',
+ install_dir : includedir / 'lix/libcmd',
)
liblixcmd = declare_dependency(
@@ -76,8 +76,8 @@ liblixcmd = declare_dependency(
# FIXME: not using the pkg-config module because it creates way too many deps
# while meson migration is in progress, and we want to not include boost here
configure_file(
- input : 'nix-cmd.pc.in',
- output : 'nix-cmd.pc',
+ input : 'lix-cmd.pc.in',
+ output : 'lix-cmd.pc',
install_dir : libdir / 'pkgconfig',
configuration : {
'prefix' : prefix,
diff --git a/src/libcmd/nix-cmd.pc.in b/src/libcmd/nix-cmd.pc.in
deleted file mode 100644
index 39575f222..000000000
--- a/src/libcmd/nix-cmd.pc.in
+++ /dev/null
@@ -1,9 +0,0 @@
-prefix=@prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Nix
-Description: Nix Package Manager
-Version: @PACKAGE_VERSION@
-Libs: -L${libdir} -lnixcmd
-Cflags: -I${includedir}/nix -std=c++2a
diff --git a/src/libexpr/flake/meson.build b/src/libexpr/flake/meson.build
index 3ecc30f4e..cce1b0c75 100644
--- a/src/libexpr/flake/meson.build
+++ b/src/libexpr/flake/meson.build
@@ -4,5 +4,5 @@ libexpr_generated_headers += custom_target(
output : '@PLAINNAME@.gen.hh',
capture : true,
install : true,
- install_dir : includedir / 'nix/flake',
+ install_dir : includedir / 'lix/libexpr/flake',
)
diff --git a/src/libexpr/lix-expr.pc.in b/src/libexpr/lix-expr.pc.in
new file mode 100644
index 000000000..5e850976d
--- /dev/null
+++ b/src/libexpr/lix-expr.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Lix libexpr
+Description: Lix Package Manager (libexpr)
+Version: @PACKAGE_VERSION@
+Requires: lix-base lix-util lix-fetchers lix-store bdw-gc
+Libs: -L${libdir} -llixexpr
+Cflags: -I${includedir}/lix/libexpr
diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build
index 099279d56..fda6fde2c 100644
--- a/src/libexpr/meson.build
+++ b/src/libexpr/meson.build
@@ -15,7 +15,7 @@ parser_tab = custom_target(
# NOTE(Qyriad): Meson doesn't support installing only part of a custom target, so we add
# an install script below which removes parser-tab.cc.
install : true,
- install_dir : includedir / 'nix',
+ install_dir : includedir / 'lix/libexpr',
)
lexer_tab = custom_target(
@@ -37,7 +37,7 @@ lexer_tab = custom_target(
# NOTE(Qyriad): Meson doesn't support installing only part of a custom target, so we add
# an install script below which removes lexer-tab.cc.
install : true,
- install_dir : includedir / 'nix',
+ install_dir : includedir / 'lix/libexpr',
)
# TODO(Qyriad): When the parser and lexer are rewritten this should be removed.
@@ -59,7 +59,7 @@ foreach header : [ 'imported-drv-to-derivation.nix', 'fetchurl.nix' ]
output : '@PLAINNAME@.gen.hh',
capture : true,
install : true,
- install_dir : includedir / 'nix',
+ install_dir : includedir / 'lix/libexpr',
)
endforeach
subdir('flake')
@@ -127,7 +127,7 @@ libexpr_headers = files(
)
libexpr = library(
- 'nixexpr',
+ 'lixexpr',
libexpr_sources,
parser_tab,
lexer_tab,
@@ -152,7 +152,7 @@ libexpr = library(
install_headers(
libexpr_headers,
- subdir : 'nix',
+ subdir : 'lix/libexpr',
preserve_path : true,
)
@@ -164,8 +164,8 @@ liblixexpr = declare_dependency(
# FIXME: not using the pkg-config module because it creates way too many deps
# while meson migration is in progress, and we want to not include boost here
configure_file(
- input : 'nix-expr.pc.in',
- output : 'nix-expr.pc',
+ input : 'lix-expr.pc.in',
+ output : 'lix-expr.pc',
install_dir : libdir / 'pkgconfig',
configuration : {
'prefix' : prefix,
diff --git a/src/libexpr/nix-expr.pc.in b/src/libexpr/nix-expr.pc.in
deleted file mode 100644
index 60ffb5dba..000000000
--- a/src/libexpr/nix-expr.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Nix
-Description: Nix Package Manager
-Version: @PACKAGE_VERSION@
-Requires: nix-store bdw-gc
-Libs: -L${libdir} -lnixexpr
-Cflags: -I${includedir}/nix -std=c++2a
diff --git a/src/libfetchers/lix-fetchers.pc.in b/src/libfetchers/lix-fetchers.pc.in
new file mode 100644
index 000000000..fa213b769
--- /dev/null
+++ b/src/libfetchers/lix-fetchers.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Lix libfetchers
+Description: Lix Package Manager (libfetchers)
+Version: @PACKAGE_VERSION@
+Requires: lix-base lix-util
+Libs: -L${libdir} -llixfetchers
+Cflags: -I${includedir}/lix/libfetchers
diff --git a/src/libfetchers/meson.build b/src/libfetchers/meson.build
index 3809701b7..dbb85b84c 100644
--- a/src/libfetchers/meson.build
+++ b/src/libfetchers/meson.build
@@ -23,7 +23,7 @@ libfetchers_headers = files(
)
libfetchers = library(
- 'nixfetchers',
+ 'lixfetchers',
libfetchers_sources,
dependencies : [
liblixstore,
@@ -35,7 +35,21 @@ libfetchers = library(
install_rpath : libdir,
)
-install_headers(libfetchers_headers, subdir : 'nix', preserve_path : true)
+install_headers(libfetchers_headers, subdir : 'lix/libfetchers', preserve_path : true)
+
+# FIXME: not using the pkg-config module because it creates way too many deps
+# while meson migration is in progress, and we want to not include boost here
+configure_file(
+ input : 'lix-fetchers.pc.in',
+ output : 'lix-fetchers.pc',
+ install_dir : libdir / 'pkgconfig',
+ configuration : {
+ 'prefix' : prefix,
+ 'libdir' : libdir,
+ 'includedir' : includedir,
+ 'PACKAGE_VERSION' : meson.project_version(),
+ },
+)
liblixfetchers = declare_dependency(
include_directories : include_directories('.'),
diff --git a/src/libmain/lix-main.pc.in b/src/libmain/lix-main.pc.in
new file mode 100644
index 000000000..0ceaec393
--- /dev/null
+++ b/src/libmain/lix-main.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Lix libmain
+Description: Lix Package Manager (libmain)
+Version: @PACKAGE_VERSION@
+Requires: lix-base lix-util
+Libs: -L${libdir} -llixmain
+Cflags: -I${includedir}/lix/libmain
diff --git a/src/libmain/meson.build b/src/libmain/meson.build
index 3f50b158d..b17247a9d 100644
--- a/src/libmain/meson.build
+++ b/src/libmain/meson.build
@@ -14,7 +14,7 @@ libmain_headers = files(
)
libmain = library(
- 'nixmain',
+ 'lixmain',
libmain_sources,
dependencies : [
liblixutil,
@@ -25,7 +25,7 @@ libmain = library(
install_rpath : libdir,
)
-install_headers(libmain_headers, subdir : 'nix', preserve_path : true)
+install_headers(libmain_headers, subdir : 'lix/libmain', preserve_path : true)
liblixmain = declare_dependency(
include_directories : include_directories('.'),
@@ -35,8 +35,8 @@ liblixmain = declare_dependency(
# FIXME: not using the pkg-config module because it creates way too many deps
# while meson migration is in progress, and we want to not include boost here
configure_file(
- input : 'nix-main.pc.in',
- output : 'nix-main.pc',
+ input : 'lix-main.pc.in',
+ output : 'lix-main.pc',
install_dir : libdir / 'pkgconfig',
configuration : {
'prefix' : prefix,
diff --git a/src/libmain/nix-main.pc.in b/src/libmain/nix-main.pc.in
deleted file mode 100644
index fb3ead6fa..000000000
--- a/src/libmain/nix-main.pc.in
+++ /dev/null
@@ -1,9 +0,0 @@
-prefix=@prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Nix
-Description: Nix Package Manager
-Version: @PACKAGE_VERSION@
-Libs: -L${libdir} -lnixmain
-Cflags: -I${includedir}/nix -std=c++2a
diff --git a/src/libstore/lix-store.pc.in b/src/libstore/lix-store.pc.in
new file mode 100644
index 000000000..69c323a28
--- /dev/null
+++ b/src/libstore/lix-store.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Lix libstore
+Description: Lix Package Manager (libstore)
+Version: @PACKAGE_VERSION@
+Requires: lix-base lix-util
+Libs: -L${libdir} -llixstore -llixutil
+Cflags: -I${includedir}/lix/libstore
diff --git a/src/libstore/meson.build b/src/libstore/meson.build
index 5fde92dd0..4ccb03df7 100644
--- a/src/libstore/meson.build
+++ b/src/libstore/meson.build
@@ -6,7 +6,7 @@ foreach header : [ 'schema.sql', 'ca-specific-schema.sql' ]
output : '@PLAINNAME@.gen.hh',
capture : true,
install : true,
- install_dir : includedir / 'nix',
+ install_dir : includedir / 'lix/libstore',
)
endforeach
@@ -201,7 +201,7 @@ foreach name, value : cpp_str_defines
endforeach
libstore = library(
- 'nixstore',
+ 'lixstore',
libstore_generated_headers,
libstore_sources,
dependencies : [
@@ -224,7 +224,7 @@ libstore = library(
install_rpath : libdir,
)
-install_headers(libstore_headers, subdir : 'nix', preserve_path : true)
+install_headers(libstore_headers, subdir : 'lix/libstore', preserve_path : true)
# Used by libfetchers.
liblixstore = declare_dependency(
@@ -235,8 +235,8 @@ liblixstore = declare_dependency(
# FIXME: not using the pkg-config module because it creates way too many deps
# while meson migration is in progress, and we want to not include boost here
configure_file(
- input : 'nix-store.pc.in',
- output : 'nix-store.pc',
+ input : 'lix-store.pc.in',
+ output : 'lix-store.pc',
install_dir : libdir / 'pkgconfig',
configuration : {
'prefix' : prefix,
diff --git a/src/libstore/nix-store.pc.in b/src/libstore/nix-store.pc.in
deleted file mode 100644
index dc42d0bca..000000000
--- a/src/libstore/nix-store.pc.in
+++ /dev/null
@@ -1,9 +0,0 @@
-prefix=@prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Nix
-Description: Nix Package Manager
-Version: @PACKAGE_VERSION@
-Libs: -L${libdir} -lnixstore -lnixutil
-Cflags: -I${includedir}/nix -std=c++2a
diff --git a/src/libutil/lix-util.pc.in b/src/libutil/lix-util.pc.in
new file mode 100644
index 000000000..cd749aabb
--- /dev/null
+++ b/src/libutil/lix-util.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Lix libutil
+Description: Lix Package Manager (libutil)
+Version: @PACKAGE_VERSION@
+Requires: lix-base lix-util
+Libs: -L${libdir} -llixutil
+Cflags: -I${includedir}/lix/libutil
diff --git a/src/libutil/meson.build b/src/libutil/meson.build
index 13266f6bd..58e0bd062 100644
--- a/src/libutil/meson.build
+++ b/src/libutil/meson.build
@@ -100,7 +100,7 @@ libutil_headers = files(
)
libutil = library(
- 'nixutil',
+ 'lixutil',
libutil_sources,
dependencies : [
aws_sdk,
@@ -118,7 +118,21 @@ libutil = library(
install : true,
)
-install_headers(libutil_headers, subdir : 'nix', preserve_path : true)
+install_headers(libutil_headers, subdir : 'lix/libutil', preserve_path : true)
+
+# FIXME: not using the pkg-config module because it creates way too many deps
+# while meson migration is in progress, and we want to not include boost here
+configure_file(
+ input : 'lix-util.pc.in',
+ output : 'lix-util.pc',
+ install_dir : libdir / 'pkgconfig',
+ configuration : {
+ 'prefix' : prefix,
+ 'libdir' : libdir,
+ 'includedir' : includedir,
+ 'PACKAGE_VERSION' : meson.project_version(),
+ },
+)
# Used by libstore and libfetchers.
liblixutil = declare_dependency(
diff --git a/src/lix-base.pc.in b/src/lix-base.pc.in
new file mode 100644
index 000000000..925a7753a
--- /dev/null
+++ b/src/lix-base.pc.in
@@ -0,0 +1,8 @@
+prefix=@prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Lix base
+Description: Lix Package Manager (config.hh fixup)
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}/lix
diff --git a/tests/unit/meson.build b/tests/unit/meson.build
index f5355cce8..a997a0d56 100644
--- a/tests/unit/meson.build
+++ b/tests/unit/meson.build
@@ -17,7 +17,7 @@ libutil_test_support_sources = files(
'libutil-support/tests/terminal-code-eater.cc',
)
libutil_test_support = library(
- 'nixutil-test-support',
+ 'lixutil-test-support',
libutil_test_support_sources,
dependencies : [
liblixutil,
@@ -57,7 +57,7 @@ libutil_tests_sources = files(
)
libutil_tester = executable(
- 'libnixutil-tests',
+ 'liblixutil-tests',
libutil_tests_sources,
dependencies : [
rapidcheck,
@@ -90,7 +90,7 @@ libstore_test_support_sources = files(
)
libstore_test_support = library(
- 'nixstore-test-support',
+ 'lixstore-test-support',
libstore_test_support_sources,
dependencies : [
liblixutil_test_support,
@@ -124,7 +124,7 @@ libstore_tests_sources = files(
)
libstore_tester = executable(
- 'libnixstore-tests',
+ 'liblixstore-tests',
libstore_tests_sources,
dependencies : [
liblixstore_test_support,
@@ -154,7 +154,7 @@ libexpr_test_support_sources = files(
)
libexpr_test_support = library(
- 'nixexpr-test-support',
+ 'lixexpr-test-support',
libexpr_test_support_sources,
dependencies : [
liblixstore_test_support,
@@ -185,7 +185,7 @@ libexpr_tests_sources = files(
)
libexpr_tester = executable(
- 'libnixexpr-tests',
+ 'liblixexpr-tests',
libexpr_tests_sources,
dependencies : [
liblixexpr_test_support,