mirror of
https://github.com/NixOS/nix.git
synced 2024-11-25 00:02:25 +00:00
Meson misc things
Meson-ify a few things, scripts, completions, etc. Should make our Meson build complete except for docs. Co-Authored-By: Qyriad <qyriad@qyriad.me> Co-Authored-By: eldritch horrors <pennae@lix.systems>
This commit is contained in:
parent
8af73f0a74
commit
c7ec33605e
@ -10,6 +10,7 @@ foreach dep : deps_public_subproject
|
|||||||
endforeach
|
endforeach
|
||||||
requires_public += deps_public
|
requires_public += deps_public
|
||||||
|
|
||||||
|
extra_pkg_config_variables = get_variable('extra_pkg_config_variables', {})
|
||||||
import('pkgconfig').generate(
|
import('pkgconfig').generate(
|
||||||
this_library,
|
this_library,
|
||||||
filebase : meson.project_name(),
|
filebase : meson.project_name(),
|
||||||
@ -20,6 +21,7 @@ import('pkgconfig').generate(
|
|||||||
requires : requires_public,
|
requires : requires_public,
|
||||||
requires_private : requires_private,
|
requires_private : requires_private,
|
||||||
libraries_private : libraries_private,
|
libraries_private : libraries_private,
|
||||||
|
variables : extra_pkg_config_variables,
|
||||||
)
|
)
|
||||||
|
|
||||||
meson.override_dependency(meson.project_name(), declare_dependency(
|
meson.override_dependency(meson.project_name(), declare_dependency(
|
||||||
@ -27,4 +29,5 @@ meson.override_dependency(meson.project_name(), declare_dependency(
|
|||||||
link_with : this_library,
|
link_with : this_library,
|
||||||
compile_args : ['-std=c++2a'],
|
compile_args : ['-std=c++2a'],
|
||||||
dependencies : deps_public_subproject + deps_public,
|
dependencies : deps_public_subproject + deps_public,
|
||||||
|
variables : extra_pkg_config_variables,
|
||||||
))
|
))
|
||||||
|
@ -295,6 +295,7 @@
|
|||||||
devShells = let
|
devShells = let
|
||||||
makeShell = pkgs: stdenv: (pkgs.nix.override { inherit stdenv; forDevShell = true; }).overrideAttrs (attrs:
|
makeShell = pkgs: stdenv: (pkgs.nix.override { inherit stdenv; forDevShell = true; }).overrideAttrs (attrs:
|
||||||
let
|
let
|
||||||
|
buildCanExecuteHost = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||||
modular = devFlake.getSystem stdenv.buildPlatform.system;
|
modular = devFlake.getSystem stdenv.buildPlatform.system;
|
||||||
transformFlag = prefix: flag:
|
transformFlag = prefix: flag:
|
||||||
assert builtins.isString flag;
|
assert builtins.isString flag;
|
||||||
@ -352,7 +353,7 @@
|
|||||||
++ pkgs.nixComponents.nix-external-api-docs.nativeBuildInputs
|
++ pkgs.nixComponents.nix-external-api-docs.nativeBuildInputs
|
||||||
++ pkgs.nixComponents.nix-functional-tests.baseNativeBuildInputs
|
++ pkgs.nixComponents.nix-functional-tests.baseNativeBuildInputs
|
||||||
++ lib.optional
|
++ lib.optional
|
||||||
(!stdenv.buildPlatform.canExecute stdenv.hostPlatform
|
(!buildCanExecuteHost
|
||||||
# Hack around https://github.com/nixos/nixpkgs/commit/bf7ad8cfbfa102a90463433e2c5027573b462479
|
# Hack around https://github.com/nixos/nixpkgs/commit/bf7ad8cfbfa102a90463433e2c5027573b462479
|
||||||
&& !(stdenv.hostPlatform.isWindows && stdenv.buildPlatform.isDarwin)
|
&& !(stdenv.hostPlatform.isWindows && stdenv.buildPlatform.isDarwin)
|
||||||
&& stdenv.hostPlatform.emulatorAvailable pkgs.buildPackages
|
&& stdenv.hostPlatform.emulatorAvailable pkgs.buildPackages
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
|
|
||||||
project('nix-dev-shell', 'cpp',
|
project('nix-dev-shell', 'cpp',
|
||||||
version : files('.version'),
|
version : files('.version'),
|
||||||
subproject_dir : 'src',
|
default_options : [
|
||||||
|
'localstatedir=/nix/var',
|
||||||
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Internal Libraries
|
# Internal Libraries
|
||||||
|
8
misc/bash/meson.build
Normal file
8
misc/bash/meson.build
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
configure_file(
|
||||||
|
input : 'completion.sh',
|
||||||
|
output : 'nix',
|
||||||
|
install : true,
|
||||||
|
install_dir : get_option('datadir') / 'bash-completion' / 'completions',
|
||||||
|
install_mode : 'rw-r--r--',
|
||||||
|
copy : true,
|
||||||
|
)
|
8
misc/fish/meson.build
Normal file
8
misc/fish/meson.build
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
configure_file(
|
||||||
|
input : 'completion.fish',
|
||||||
|
output : 'nix.fish',
|
||||||
|
install : true,
|
||||||
|
install_dir : get_option('datadir') / 'fish' / 'vendor_completions.d',
|
||||||
|
install_mode : 'rw-r--r--',
|
||||||
|
copy : true,
|
||||||
|
)
|
5
misc/meson.build
Normal file
5
misc/meson.build
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
subdir('bash')
|
||||||
|
subdir('fish')
|
||||||
|
subdir('zsh')
|
||||||
|
|
||||||
|
subdir('systemd')
|
25
misc/systemd/meson.build
Normal file
25
misc/systemd/meson.build
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
foreach config : [ 'nix-daemon.socket', 'nix-daemon.service' ]
|
||||||
|
configure_file(
|
||||||
|
input : config + '.in',
|
||||||
|
output : config,
|
||||||
|
install : true,
|
||||||
|
install_dir : get_option('prefix') / 'lib/systemd/system',
|
||||||
|
install_mode : 'rw-r--r--',
|
||||||
|
configuration : {
|
||||||
|
'storedir' : store_dir,
|
||||||
|
'localstatedir' : localstatedir,
|
||||||
|
'bindir' : get_option('datadir'),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
input : 'nix-daemon.conf.in',
|
||||||
|
output : 'nix-daemon.conf',
|
||||||
|
install : true,
|
||||||
|
install_dir : get_option('prefix') / 'lib/tmpfiles.d',
|
||||||
|
install_mode : 'rw-r--r--',
|
||||||
|
configuration : {
|
||||||
|
'localstatedir' : localstatedir,
|
||||||
|
},
|
||||||
|
)
|
10
misc/zsh/meson.build
Normal file
10
misc/zsh/meson.build
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
foreach script : [ [ 'completion.zsh', '_nix' ], [ 'run-help-nix' ] ]
|
||||||
|
configure_file(
|
||||||
|
input : script[0],
|
||||||
|
output : script.get(1, script[0]),
|
||||||
|
install : true,
|
||||||
|
install_dir : get_option('datadir') / 'zsh/site-functions',
|
||||||
|
install_mode : 'rw-r--r--',
|
||||||
|
copy : true,
|
||||||
|
)
|
||||||
|
endforeach
|
29
scripts/meson.build
Normal file
29
scripts/meson.build
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# configures `scripts/nix-profile.sh.in` (and copies the original to the build directory).
|
||||||
|
# this is only needed for tests, but running it unconditionally does not hurt enough to care.
|
||||||
|
configure_file(
|
||||||
|
input : 'nix-profile.sh.in',
|
||||||
|
output : 'nix-profile.sh',
|
||||||
|
configuration : {
|
||||||
|
'localstatedir': localstatedir,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# https://github.com/mesonbuild/meson/issues/860
|
||||||
|
configure_file(
|
||||||
|
input : 'nix-profile.sh.in',
|
||||||
|
output : 'nix-profile.sh.in',
|
||||||
|
copy : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach rc : [ '.sh', '.fish', '-daemon.sh', '-daemon.fish' ]
|
||||||
|
configure_file(
|
||||||
|
input : 'nix-profile' + rc + '.in',
|
||||||
|
output : 'nix' + rc,
|
||||||
|
install : true,
|
||||||
|
install_dir : get_option('profile-dir'),
|
||||||
|
install_mode : 'rw-r--r--',
|
||||||
|
configuration : {
|
||||||
|
'localstatedir': localstatedir,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
endforeach
|
@ -7,6 +7,7 @@ project('nix-store', 'cpp',
|
|||||||
'debug=true',
|
'debug=true',
|
||||||
'optimization=2',
|
'optimization=2',
|
||||||
'errorlogs=true', # Please print logs for tests that fail
|
'errorlogs=true', # Please print logs for tests that fail
|
||||||
|
'localstatedir=/nix/var',
|
||||||
],
|
],
|
||||||
meson_version : '>= 1.1',
|
meson_version : '>= 1.1',
|
||||||
license : 'LGPL-2.1-or-later',
|
license : 'LGPL-2.1-or-later',
|
||||||
@ -324,7 +325,7 @@ fs = import('fs')
|
|||||||
|
|
||||||
prefix = get_option('prefix')
|
prefix = get_option('prefix')
|
||||||
# For each of these paths, assume that it is relative to the prefix unless
|
# For each of these paths, assume that it is relative to the prefix unless
|
||||||
# it is already an absolute path (which is the default for store-dir, state-dir, and log-dir).
|
# it is already an absolute path (which is the default for store-dir, localstatedir, and log-dir).
|
||||||
path_opts = [
|
path_opts = [
|
||||||
# Meson built-ins.
|
# Meson built-ins.
|
||||||
'datadir',
|
'datadir',
|
||||||
@ -334,13 +335,13 @@ path_opts = [
|
|||||||
'libexecdir',
|
'libexecdir',
|
||||||
# Homecooked Nix directories.
|
# Homecooked Nix directories.
|
||||||
'store-dir',
|
'store-dir',
|
||||||
'state-dir',
|
'localstatedir',
|
||||||
'log-dir',
|
'log-dir',
|
||||||
]
|
]
|
||||||
# For your grepping pleasure, this loop sets the following variables that aren't mentioned
|
# For your grepping pleasure, this loop sets the following variables that aren't mentioned
|
||||||
# literally above:
|
# literally above:
|
||||||
# store_dir
|
# store_dir
|
||||||
# state_dir
|
# localstatedir
|
||||||
# log_dir
|
# log_dir
|
||||||
# profile_dir
|
# profile_dir
|
||||||
foreach optname : path_opts
|
foreach optname : path_opts
|
||||||
@ -364,12 +365,12 @@ lsof = find_program('lsof', required : false)
|
|||||||
|
|
||||||
# Aside from prefix itself, each of these was made into an absolute path
|
# Aside from prefix itself, each of these was made into an absolute path
|
||||||
# by joining it with prefix, unless it was already an absolute path
|
# by joining it with prefix, unless it was already an absolute path
|
||||||
# (which is the default for store-dir, state-dir, and log-dir).
|
# (which is the default for store-dir, localstatedir, and log-dir).
|
||||||
cpp_str_defines = {
|
cpp_str_defines = {
|
||||||
'NIX_PREFIX': prefix,
|
'NIX_PREFIX': prefix,
|
||||||
'NIX_STORE_DIR': store_dir,
|
'NIX_STORE_DIR': store_dir,
|
||||||
'NIX_DATA_DIR': datadir,
|
'NIX_DATA_DIR': datadir,
|
||||||
'NIX_STATE_DIR': state_dir / 'nix',
|
'NIX_STATE_DIR': localstatedir / 'nix',
|
||||||
'NIX_LOG_DIR': log_dir,
|
'NIX_LOG_DIR': log_dir,
|
||||||
'NIX_CONF_DIR': sysconfdir / 'nix',
|
'NIX_CONF_DIR': sysconfdir / 'nix',
|
||||||
'NIX_MAN_DIR': mandir,
|
'NIX_MAN_DIR': mandir,
|
||||||
@ -421,4 +422,15 @@ install_headers(headers, subdir : 'nix', preserve_path : true)
|
|||||||
|
|
||||||
libraries_private = []
|
libraries_private = []
|
||||||
|
|
||||||
|
extra_pkg_config_variables = {
|
||||||
|
'storedir' : get_option('store-dir'),
|
||||||
|
}
|
||||||
|
|
||||||
|
# Working around https://github.com/mesonbuild/meson/issues/13584
|
||||||
|
if host_machine.system() != 'macos'
|
||||||
|
extra_pkg_config_variables += {
|
||||||
|
'localstatedir' : get_option('localstatedir'),
|
||||||
|
}
|
||||||
|
endif
|
||||||
|
|
||||||
subdir('build-utils-meson/export')
|
subdir('build-utils-meson/export')
|
||||||
|
@ -16,10 +16,6 @@ option('store-dir', type : 'string', value : '/nix/store',
|
|||||||
description : 'path of the Nix store',
|
description : 'path of the Nix store',
|
||||||
)
|
)
|
||||||
|
|
||||||
option('state-dir', type : 'string', value : '/nix/var',
|
|
||||||
description : 'path to store state in for Nix',
|
|
||||||
)
|
|
||||||
|
|
||||||
option('log-dir', type : 'string', value : '/nix/var/log/nix',
|
option('log-dir', type : 'string', value : '/nix/var/log/nix',
|
||||||
description : 'path to store logs in for Nix',
|
description : 'path to store logs in for Nix',
|
||||||
)
|
)
|
||||||
|
@ -129,7 +129,6 @@ sources = files(
|
|||||||
'english.cc',
|
'english.cc',
|
||||||
'environment-variables.cc',
|
'environment-variables.cc',
|
||||||
'error.cc',
|
'error.cc',
|
||||||
'exec.hh',
|
|
||||||
'executable-path.cc',
|
'executable-path.cc',
|
||||||
'exit.cc',
|
'exit.cc',
|
||||||
'experimental-features.cc',
|
'experimental-features.cc',
|
||||||
@ -186,6 +185,7 @@ headers = [config_h] + files(
|
|||||||
'english.hh',
|
'english.hh',
|
||||||
'environment-variables.hh',
|
'environment-variables.hh',
|
||||||
'error.hh',
|
'error.hh',
|
||||||
|
'exec.hh',
|
||||||
'executable-path.hh',
|
'executable-path.hh',
|
||||||
'exit.hh',
|
'exit.hh',
|
||||||
'experimental-features.hh',
|
'experimental-features.hh',
|
||||||
|
@ -7,6 +7,7 @@ project('nix', 'cpp',
|
|||||||
'debug=true',
|
'debug=true',
|
||||||
'optimization=2',
|
'optimization=2',
|
||||||
'errorlogs=true', # Please print logs for tests that fail
|
'errorlogs=true', # Please print logs for tests that fail
|
||||||
|
'localstatedir=/nix/var',
|
||||||
],
|
],
|
||||||
meson_version : '>= 1.1',
|
meson_version : '>= 1.1',
|
||||||
license : 'LGPL-2.1-or-later',
|
license : 'LGPL-2.1-or-later',
|
||||||
@ -16,9 +17,11 @@ cxx = meson.get_compiler('cpp')
|
|||||||
|
|
||||||
subdir('build-utils-meson/deps-lists')
|
subdir('build-utils-meson/deps-lists')
|
||||||
|
|
||||||
|
nix_store = dependency('nix-store')
|
||||||
|
|
||||||
deps_private_maybe_subproject = [
|
deps_private_maybe_subproject = [
|
||||||
dependency('nix-util'),
|
dependency('nix-util'),
|
||||||
dependency('nix-store'),
|
nix_store,
|
||||||
dependency('nix-expr'),
|
dependency('nix-expr'),
|
||||||
dependency('nix-flake'),
|
dependency('nix-flake'),
|
||||||
dependency('nix-fetchers'),
|
dependency('nix-fetchers'),
|
||||||
@ -244,3 +247,12 @@ custom_target(
|
|||||||
)
|
)
|
||||||
# TODO(Ericson3214): Dosen't yet work
|
# TODO(Ericson3214): Dosen't yet work
|
||||||
#meson.override_find_program(linkname, t)
|
#meson.override_find_program(linkname, t)
|
||||||
|
|
||||||
|
localstatedir = nix_store.get_variable(
|
||||||
|
'localstatedir',
|
||||||
|
default_value : get_option('localstatedir'),
|
||||||
|
)
|
||||||
|
assert(localstatedir == get_option('localstatedir'))
|
||||||
|
store_dir = nix_store.get_variable('storedir')
|
||||||
|
subdir('scripts')
|
||||||
|
subdir('misc')
|
||||||
|
6
src/nix/meson.options
Normal file
6
src/nix/meson.options
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# vim: filetype=meson
|
||||||
|
|
||||||
|
# A relative path means it gets appended to prefix.
|
||||||
|
option('profile-dir', type : 'string', value : 'etc/profile.d',
|
||||||
|
description : 'the path to install shell profile files',
|
||||||
|
)
|
1
src/nix/misc
Symbolic link
1
src/nix/misc
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../misc
|
@ -36,9 +36,10 @@ mkMesonDerivation (finalAttrs: {
|
|||||||
../../.version
|
../../.version
|
||||||
./.version
|
./.version
|
||||||
./meson.build
|
./meson.build
|
||||||
# ./meson.options
|
./meson.options
|
||||||
|
|
||||||
# Symbolic links to other dirs
|
# Symbolic links to other dirs
|
||||||
|
## exes
|
||||||
./build-remote
|
./build-remote
|
||||||
./doc
|
./doc
|
||||||
./nix-build
|
./nix-build
|
||||||
@ -48,6 +49,11 @@ mkMesonDerivation (finalAttrs: {
|
|||||||
./nix-env
|
./nix-env
|
||||||
./nix-instantiate
|
./nix-instantiate
|
||||||
./nix-store
|
./nix-store
|
||||||
|
## dirs
|
||||||
|
./scripts
|
||||||
|
../../scripts
|
||||||
|
./misc
|
||||||
|
../../misc
|
||||||
|
|
||||||
# Doc nix files for --help
|
# Doc nix files for --help
|
||||||
../../doc/manual/generate-manpage.nix
|
../../doc/manual/generate-manpage.nix
|
||||||
|
1
src/nix/scripts
Symbolic link
1
src/nix/scripts
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../scripts
|
1
subprojects
Symbolic link
1
subprojects
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
src
|
@ -46,6 +46,7 @@ include_dirs = [include_directories('.')]
|
|||||||
|
|
||||||
headers = files(
|
headers = files(
|
||||||
'tests/characterization.hh',
|
'tests/characterization.hh',
|
||||||
|
'tests/gtest-with-params.hh',
|
||||||
'tests/hash.hh',
|
'tests/hash.hh',
|
||||||
'tests/nix_api_util.hh',
|
'tests/nix_api_util.hh',
|
||||||
'tests/string_callback.hh',
|
'tests/string_callback.hh',
|
||||||
|
Loading…
Reference in New Issue
Block a user