Merge "packaging: rename nixexpr -> lixexpr and so on" into main
This commit is contained in:
commit
9530b7f2b2
26 changed files with 181 additions and 77 deletions
31
doc/manual/rl-next/rename-lixexpr.md
Normal file
31
doc/manual/rl-next/rename-lixexpr.md
Normal file
|
@ -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
|
||||
```
|
|
@ -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:
|
||||
|
|
16
meson.build
16
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.
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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')
|
||||
|
|
10
src/libcmd/lix-cmd.pc.in
Normal file
10
src/libcmd/lix-cmd.pc.in
Normal file
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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
|
|
@ -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',
|
||||
)
|
||||
|
|
10
src/libexpr/lix-expr.pc.in
Normal file
10
src/libexpr/lix-expr.pc.in
Normal file
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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
|
10
src/libfetchers/lix-fetchers.pc.in
Normal file
10
src/libfetchers/lix-fetchers.pc.in
Normal file
|
@ -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
|
|
@ -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('.'),
|
||||
|
|
10
src/libmain/lix-main.pc.in
Normal file
10
src/libmain/lix-main.pc.in
Normal file
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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
|
10
src/libstore/lix-store.pc.in
Normal file
10
src/libstore/lix-store.pc.in
Normal file
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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
|
10
src/libutil/lix-util.pc.in
Normal file
10
src/libutil/lix-util.pc.in
Normal file
|
@ -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
|
|
@ -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(
|
||||
|
|
8
src/lix-base.pc.in
Normal file
8
src/lix-base.pc.in
Normal file
|
@ -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
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue