From 0e6b3435a14a304b8833c27d2911de7ac4e731d4 Mon Sep 17 00:00:00 2001 From: Olivia Crain Date: Thu, 26 Sep 2024 14:28:25 -0500 Subject: [PATCH 1/3] build: install html manual without using install_subdir In Meson, `install_subdir` is meant to be used with directories in the source directory. When using it to install the HTML manual, we provide it with a path under the build directory. We should instead specify an install directory for the HTML manual as part of the custom target that builds it. What we do currently isn't broken, just semantically incorrect. Changing it does get rid of the following deprecation warning, though: `` Project [...] uses feature deprecated since '0.60.0': install_subdir with empty directory. It worked by accident and is buggy. Use install_emptydir instead. `` Change-Id: I259583b7bdff8ecbb3b342653d70dc5f034c7fad --- doc/manual/meson.build | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/doc/manual/meson.build b/doc/manual/meson.build index f53d41b5d..38aad55b5 100644 --- a/doc/manual/meson.build +++ b/doc/manual/meson.build @@ -126,20 +126,18 @@ manual = custom_target( 'manual', 'markdown', ], + install_dir : [ + datadir / 'doc/nix', + false, + ], depfile : 'manual.d', env : { 'RUST_LOG': 'info', 'MDBOOK_SUBSTITUTE_SEARCH': meson.current_build_dir() / 'src', }, ) -manual_html = manual[0] manual_md = manual[1] -install_subdir( - manual_html.full_path(), - install_dir : datadir / 'doc/nix', -) - nix_nested_manpages = [ [ 'nix-env', [ From 624f44bf25902beaf5599bf031ef3610820b1f6a Mon Sep 17 00:00:00 2001 From: Olivia Crain Date: Thu, 26 Sep 2024 14:28:25 -0500 Subject: [PATCH 2/3] build: fix deprecated uses of configure_file Using `configure_file` to copy files has been deprecated since Meson 0.64.0. The intended replacement is the `fs.copyfile` method. This removes the following deprecation warning that arises when a minimum Meson version is specified: `` Project [...] uses feature deprecated since '0.64.0': copy arg in configure_file. Use fs.copyfile instead `` Change-Id: I09ffc92e96311ef9ed594343a0a16d51e74b114a --- meson.build | 8 ++++---- misc/bash/meson.build | 7 +++---- misc/fish/meson.build | 7 +++---- misc/meson.build | 6 +----- misc/zsh/meson.build | 7 +++---- scripts/meson.build | 7 +------ src/nix-channel/meson.build | 6 +----- 7 files changed, 16 insertions(+), 32 deletions(-) diff --git a/meson.build b/meson.build index f89f5a016..53ce6a348 100644 --- a/meson.build +++ b/meson.build @@ -593,10 +593,10 @@ run_command( ) if is_darwin - configure_file( - input : 'misc/launchd/org.nixos.nix-daemon.plist.in', - output : 'org.nixos.nix-daemon.plist', - copy : true, + fs.copyfile( + 'misc/launchd/org.nixos.nix-daemon.plist.in', + 'org.nixos.nix-daemon.plist', + install : true, install_dir : prefix / 'Library/LaunchDaemons', ) endif diff --git a/misc/bash/meson.build b/misc/bash/meson.build index 75acce2ea..178692536 100644 --- a/misc/bash/meson.build +++ b/misc/bash/meson.build @@ -1,8 +1,7 @@ -configure_file( - input : 'completion.sh', - output : 'nix', +fs.copyfile( + 'completion.sh', + 'nix', install : true, install_dir : datadir / 'bash-completion/completions', install_mode : 'rw-r--r--', - copy : true, ) diff --git a/misc/fish/meson.build b/misc/fish/meson.build index d54de9a13..7f9cd0896 100644 --- a/misc/fish/meson.build +++ b/misc/fish/meson.build @@ -1,8 +1,7 @@ -configure_file( - input : 'completion.fish', - output : 'nix.fish', +fs.copyfile( + 'completion.fish', + 'nix.fish', install : true, install_dir : datadir / 'fish/vendor_completions.d', install_mode : 'rw-r--r--', - copy : true, ) diff --git a/misc/meson.build b/misc/meson.build index bf3c157f7..4e2f6aacf 100644 --- a/misc/meson.build +++ b/misc/meson.build @@ -5,8 +5,4 @@ subdir('zsh') subdir('systemd') subdir('flake-registry') -runinpty = configure_file( - copy : true, - input : meson.current_source_dir() / 'runinpty.py', - output : 'runinpty.py', -) +runinpty = fs.copyfile('runinpty.py') diff --git a/misc/zsh/meson.build b/misc/zsh/meson.build index 8063a5cb8..bd388a31f 100644 --- a/misc/zsh/meson.build +++ b/misc/zsh/meson.build @@ -1,10 +1,9 @@ foreach script : [ [ 'completion.zsh', '_nix' ], [ 'run-help-nix' ] ] - configure_file( - input : script[0], - output : script.get(1, script[0]), + fs.copyfile( + script[0], + script.get(1, script[0]), install : true, install_dir : datadir / 'zsh/site-functions', install_mode : 'rw-r--r--', - copy : true, ) endforeach diff --git a/scripts/meson.build b/scripts/meson.build index c916c8efa..e35c6cbb0 100644 --- a/scripts/meson.build +++ b/scripts/meson.build @@ -8,12 +8,7 @@ configure_file( } ) -# https://github.com/mesonbuild/meson/issues/860 -configure_file( - input : 'nix-profile.sh.in', - output : 'nix-profile.sh.in', - copy : true, -) +fs.copyfile('nix-profile.sh.in') foreach rc : [ '.sh', '.fish', '-daemon.sh', '-daemon.fish' ] configure_file( diff --git a/src/nix-channel/meson.build b/src/nix-channel/meson.build index 952dfdb78..97b92d789 100644 --- a/src/nix-channel/meson.build +++ b/src/nix-channel/meson.build @@ -1,5 +1 @@ -configure_file( - input : 'unpack-channel.nix', - output : 'unpack-channel.nix', - copy : true, -) +fs.copyfile('unpack-channel.nix') From b86863d93565a05b7695e3579caa2fe2ab62f3a1 Mon Sep 17 00:00:00 2001 From: Olivia Crain Date: Thu, 26 Sep 2024 22:18:37 -0500 Subject: [PATCH 3/3] build: require meson 1.4.0 or newer This was already the de facto requirement, we use the method `full_path` on a file object (introduced in Meson 1.4.0) in the functional test suite's build. This version of Meson is in NixOS 24.05, so there should be no compatibility issues should this make it into a backported release of Lix. CC: https://git.lix.systems/lix-project/lix/issues/247 Change-Id: I5c640824807353b6eb4287e7ed09c4e89a4bdde2 --- meson.build | 1 + 1 file changed, 1 insertion(+) diff --git a/meson.build b/meson.build index 53ce6a348..ea2050b6b 100644 --- a/meson.build +++ b/meson.build @@ -47,6 +47,7 @@ # in the build directory. project('lix', 'cpp', 'rust', + meson_version : '>=1.4.0', version : run_command('bash', '-c', 'echo -n $(jq -r .version < ./version.json)$VERSION_SUFFIX', check : true).stdout().strip(), default_options : [ 'cpp_std=c++2a',