395 lines
10 KiB
Meson
395 lines
10 KiB
Meson
libstore_generated_headers = []
|
|
foreach header : [ 'schema.sql', 'ca-specific-schema.sql' ]
|
|
libstore_generated_headers += custom_target(
|
|
command : [ 'bash', '-c', 'echo \'R"__NIX_STR(\' | cat - @INPUT@ && echo \')__NIX_STR"\'' ],
|
|
input : header,
|
|
output : '@PLAINNAME@.gen.hh',
|
|
capture : true,
|
|
install : true,
|
|
install_dir : includedir / 'lix/libstore',
|
|
)
|
|
endforeach
|
|
|
|
libstore_settings_headers = []
|
|
|
|
file_transfer_setting_definitions = files(
|
|
'file-transfer-settings/connect-timeout.md',
|
|
'file-transfer-settings/download-attempts.md',
|
|
'file-transfer-settings/http-connections.md',
|
|
'file-transfer-settings/http2.md',
|
|
'file-transfer-settings/stalled-download-timeout.md',
|
|
'file-transfer-settings/user-agent-suffix.md',
|
|
)
|
|
libstore_settings_headers += custom_target(
|
|
command : [
|
|
python.full_path(),
|
|
'@SOURCE_ROOT@/lix/code-generation/build_settings.py',
|
|
'--kernel', host_machine.system(),
|
|
'--header', '@OUTPUT@',
|
|
'--experimental-features', '@SOURCE_ROOT@/lix/libutil/experimental-features',
|
|
'@INPUT@',
|
|
],
|
|
input : file_transfer_setting_definitions,
|
|
output : 'file-transfer-settings.gen.inc',
|
|
install : true,
|
|
install_dir : includedir / 'lix/libstore',
|
|
)
|
|
|
|
libstore_setting_definitions = files(
|
|
'settings/allow-symlinked-store.md',
|
|
'settings/allowed-impure-host-deps.md',
|
|
'settings/always-allow-substitutes.md',
|
|
'settings/auto-allocate-uids.md',
|
|
'settings/auto-optimise-store.md',
|
|
'settings/build-dir.md',
|
|
'settings/build-hook.md',
|
|
'settings/build-poll-interval.md',
|
|
'settings/build-users-group.md',
|
|
'settings/builders-use-substitutes.md',
|
|
'settings/builders.md',
|
|
'settings/compress-build-log.md',
|
|
'settings/cores.md',
|
|
'settings/darwin-log-sandbox-violations.md',
|
|
'settings/diff-hook.md',
|
|
'settings/download-speed.md',
|
|
'settings/enable-core-dumps.md',
|
|
'settings/extra-platforms.md',
|
|
'settings/fallback.md',
|
|
'settings/fsync-metadata.md',
|
|
'settings/gc-reserved-space.md',
|
|
'settings/hashed-mirrors.md',
|
|
'settings/id-count.md',
|
|
'settings/ignored-acls.md',
|
|
'settings/impersonate-linux-26.md',
|
|
'settings/keep-build-log.md',
|
|
'settings/keep-derivations.md',
|
|
'settings/keep-env-derivations.md',
|
|
'settings/keep-failed.md',
|
|
'settings/keep-going.md',
|
|
'settings/keep-outputs.md',
|
|
'settings/log-lines.md',
|
|
'settings/max-build-log-size.md',
|
|
'settings/max-free.md',
|
|
'settings/max-jobs.md',
|
|
'settings/max-silent-time.md',
|
|
'settings/max-substitution-jobs.md',
|
|
'settings/min-free-check-interval.md',
|
|
'settings/min-free.md',
|
|
'settings/nar-buffer-size.md',
|
|
'settings/narinfo-cache-negative-ttl.md',
|
|
'settings/narinfo-cache-positive-ttl.md',
|
|
'settings/netrc-file.md',
|
|
'settings/plugin-files.md',
|
|
'settings/post-build-hook.md',
|
|
'settings/pre-build-hook.md',
|
|
'settings/print-missing.md',
|
|
'settings/require-drop-supplementary-groups.md',
|
|
'settings/require-sigs.md',
|
|
'settings/run-diff-hook.md',
|
|
'settings/sandbox-build-dir.md',
|
|
'settings/sandbox-dev-shm-size.md',
|
|
'settings/sandbox-fallback.md',
|
|
'settings/sandbox-paths.md',
|
|
'settings/sandbox.md',
|
|
'settings/secret-key-files.md',
|
|
'settings/ssl-cert-file.md',
|
|
'settings/start-id.md',
|
|
'settings/store.md',
|
|
'settings/substitute.md',
|
|
'settings/substituters.md',
|
|
'settings/sync-before-registering.md',
|
|
'settings/system-features.md',
|
|
'settings/system.md',
|
|
'settings/tarball-ttl.md',
|
|
'settings/temp-dir.md',
|
|
'settings/timeout.md',
|
|
'settings/trusted-public-keys.md',
|
|
'settings/trusted-substituters.md',
|
|
'settings/use-cgroups.md',
|
|
'settings/use-sqlite-wal.md',
|
|
'settings/use-xdg-base-directories.md',
|
|
)
|
|
libstore_settings_headers += custom_target(
|
|
command : [
|
|
python.full_path(),
|
|
'@SOURCE_ROOT@/lix/code-generation/build_settings.py',
|
|
'--kernel', host_machine.system(),
|
|
'--header', '@OUTPUT@',
|
|
'--experimental-features', '@SOURCE_ROOT@/lix/libutil/experimental-features',
|
|
'@INPUT@',
|
|
],
|
|
input : libstore_setting_definitions,
|
|
output : 'libstore-settings.gen.inc',
|
|
install : true,
|
|
install_dir : includedir / 'lix/libstore',
|
|
)
|
|
|
|
libstore_sources = files(
|
|
'binary-cache-store.cc',
|
|
'build-result.cc',
|
|
'common-protocol.cc',
|
|
'content-address.cc',
|
|
'crypto.cc',
|
|
'daemon.cc',
|
|
'derivations.cc',
|
|
'derived-path-map.cc',
|
|
'derived-path.cc',
|
|
'downstream-placeholder.cc',
|
|
'dummy-store.cc',
|
|
'export-import.cc',
|
|
'filetransfer.cc',
|
|
'gc.cc',
|
|
'globals.cc',
|
|
'http-binary-cache-store.cc',
|
|
'legacy-ssh-store.cc',
|
|
'local-binary-cache-store.cc',
|
|
'local-fs-store.cc',
|
|
'local-store.cc',
|
|
'lock.cc',
|
|
'log-store.cc',
|
|
'machines.cc',
|
|
'make-content-addressed.cc',
|
|
'misc.cc',
|
|
'names.cc',
|
|
'nar-accessor.cc',
|
|
'nar-info-disk-cache.cc',
|
|
'nar-info.cc',
|
|
'optimise-store.cc',
|
|
'outputs-spec.cc',
|
|
'parsed-derivations.cc',
|
|
'path-info.cc',
|
|
'path-references.cc',
|
|
'path-with-outputs.cc',
|
|
'path.cc',
|
|
'pathlocks.cc',
|
|
'platform.cc',
|
|
'profiles.cc',
|
|
'realisation.cc',
|
|
'remote-fs-accessor.cc',
|
|
'remote-store.cc',
|
|
's3-binary-cache-store.cc',
|
|
'serve-protocol.cc',
|
|
'sqlite.cc',
|
|
'ssh-store.cc',
|
|
'ssh.cc',
|
|
'store-api.cc',
|
|
'temporary-dir.cc',
|
|
'uds-remote-store.cc',
|
|
'worker-protocol.cc',
|
|
'build/child.cc',
|
|
'build/derivation-goal.cc',
|
|
'build/drv-output-substitution-goal.cc',
|
|
'build/entry-points.cc',
|
|
'build/goal.cc',
|
|
'build/hook-instance.cc',
|
|
'build/local-derivation-goal.cc',
|
|
'build/personality.cc',
|
|
'build/substitution-goal.cc',
|
|
'build/worker.cc',
|
|
'builtins/buildenv.cc',
|
|
'builtins/fetchurl.cc',
|
|
'builtins/unpack-channel.cc',
|
|
)
|
|
|
|
|
|
libstore_headers = files(
|
|
'binary-cache-store.hh',
|
|
'build/child.hh',
|
|
'build/derivation-goal.hh',
|
|
'build/drv-output-substitution-goal.hh',
|
|
'build/goal.hh',
|
|
'build/hook-instance.hh',
|
|
'build/local-derivation-goal.hh',
|
|
'build/personality.hh',
|
|
'build/substitution-goal.hh',
|
|
'build/worker.hh',
|
|
'build-result.hh',
|
|
'builtins/buildenv.hh',
|
|
'builtins.hh',
|
|
'common-protocol-impl.hh',
|
|
'common-protocol.hh',
|
|
'content-address.hh',
|
|
'crypto.hh',
|
|
'daemon.hh',
|
|
'derivations.hh',
|
|
'derived-path-map.hh',
|
|
'derived-path.hh',
|
|
'downstream-placeholder.hh',
|
|
'dummy-store.hh',
|
|
'filetransfer.hh',
|
|
'fs-accessor.hh',
|
|
'gc-store.hh',
|
|
'globals.hh',
|
|
'http-binary-cache-store.hh',
|
|
'indirect-root-store.hh',
|
|
'legacy-ssh-store.hh',
|
|
'length-prefixed-protocol-helper.hh',
|
|
'local-binary-cache-store.hh',
|
|
'local-fs-store.hh',
|
|
'local-store.hh',
|
|
'lock.hh',
|
|
'log-store.hh',
|
|
'machines.hh',
|
|
'make-content-addressed.hh',
|
|
'names.hh',
|
|
'nar-accessor.hh',
|
|
'nar-info-disk-cache.hh',
|
|
'nar-info.hh',
|
|
'outputs-spec.hh',
|
|
'parsed-derivations.hh',
|
|
'path-info.hh',
|
|
'path-references.hh',
|
|
'path-regex.hh',
|
|
'path-with-outputs.hh',
|
|
'path.hh',
|
|
'pathlocks.hh',
|
|
'profiles.hh',
|
|
'realisation.hh',
|
|
'remote-fs-accessor.hh',
|
|
'remote-store-connection.hh',
|
|
'remote-store.hh',
|
|
's3-binary-cache-store.hh',
|
|
's3.hh',
|
|
'serve-protocol-impl.hh',
|
|
'serve-protocol.hh',
|
|
'sqlite.hh',
|
|
'ssh.hh',
|
|
'ssh-store.hh',
|
|
'store-api.hh',
|
|
'store-cast.hh',
|
|
'temporary-dir.hh',
|
|
'uds-remote-store.hh',
|
|
'worker-protocol-impl.hh',
|
|
'worker-protocol.hh',
|
|
)
|
|
|
|
if host_machine.system() == 'linux'
|
|
libstore_sources += files('platform/linux.cc')
|
|
libstore_headers += files('platform/linux.hh')
|
|
elif host_machine.system() == 'darwin'
|
|
libstore_sources += files('platform/darwin.cc')
|
|
libstore_headers += files('platform/darwin.hh')
|
|
elif host_machine.system() == 'freebsd'
|
|
libstore_sources += files('platform/freebsd.cc')
|
|
libstore_headers += files('platform/freebsd.hh')
|
|
else
|
|
libstore_sources += files('platform/fallback.cc')
|
|
libstore_headers += files('platform/fallback.hh')
|
|
endif
|
|
|
|
# These variables (aside from LSOF) are created pseudo-dynamically, near the beginning of
|
|
# the top-level meson.build. 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 (which is the default for store-dir, state-dir, and log-dir).
|
|
cpp_str_defines = {
|
|
'LSOF': lsof.full_path(),
|
|
'NIX_PREFIX': prefix,
|
|
'NIX_STORE_DIR': store_dir,
|
|
'NIX_DATA_DIR': datadir,
|
|
'NIX_STATE_DIR': state_dir / 'nix',
|
|
'NIX_LOG_DIR': log_dir,
|
|
'NIX_CONF_DIR': sysconfdir / 'nix',
|
|
'NIX_BIN_DIR': bindir,
|
|
'NIX_MAN_DIR': mandir,
|
|
}
|
|
|
|
if enable_embedded_sandbox_shell
|
|
hexdump = find_program('hexdump', required : true, native : true)
|
|
embedded_sandbox_shell_gen = custom_target(
|
|
'embedded-sandbox-shell.gen.hh',
|
|
command : [
|
|
hexdump,
|
|
'-v',
|
|
'-e',
|
|
'1/1 "0x%x," "\n"'
|
|
],
|
|
input : busybox.full_path(),
|
|
output : 'embedded-sandbox-shell.gen.hh',
|
|
capture : true,
|
|
feed : true,
|
|
)
|
|
libstore_generated_headers += embedded_sandbox_shell_gen
|
|
cpp_str_defines += {
|
|
'SANDBOX_SHELL': '__embedded_sandbox_shell__'
|
|
}
|
|
elif busybox.found()
|
|
cpp_str_defines += {
|
|
'SANDBOX_SHELL': busybox.full_path()
|
|
}
|
|
endif
|
|
|
|
cpp_args = []
|
|
|
|
foreach name, value : cpp_str_defines
|
|
cpp_args += [
|
|
'-D' + name + '=' + '"' + value + '"'
|
|
]
|
|
endforeach
|
|
|
|
dependencies = [
|
|
libarchive,
|
|
liblixutil, # Internal.
|
|
seccomp,
|
|
sqlite,
|
|
sodium,
|
|
curl,
|
|
openssl,
|
|
aws_sdk,
|
|
aws_s3,
|
|
aws_sdk_transfer,
|
|
nlohmann_json,
|
|
kj,
|
|
]
|
|
|
|
if host_machine.system() == 'freebsd'
|
|
dependencies += [ libprocstat ]
|
|
endif
|
|
|
|
libstore = library(
|
|
'lixstore',
|
|
libstore_sources,
|
|
libstore_settings_headers,
|
|
libstore_generated_headers,
|
|
include_directories : [ '../..' ],
|
|
dependencies : dependencies,
|
|
cpp_args : cpp_args,
|
|
cpp_pch : cpp_pch,
|
|
install : true,
|
|
# FIXME(Qyriad): is this right?
|
|
install_rpath : libdir,
|
|
)
|
|
|
|
install_headers(libstore_headers, subdir : 'lix/libstore', preserve_path : true)
|
|
|
|
# Used by libfetchers.
|
|
liblixstore = declare_dependency(
|
|
include_directories : include_directories('../..'),
|
|
sources : libstore_settings_headers,
|
|
link_with : libstore,
|
|
)
|
|
|
|
# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
|
|
if is_static
|
|
liblixstore_mstatic = declare_dependency(
|
|
include_directories : include_directories('../..'),
|
|
sources : libstore_settings_headers,
|
|
link_whole : libstore,
|
|
)
|
|
else
|
|
liblixstore_mstatic = liblixstore
|
|
endif
|
|
|
|
# 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-store.pc.in',
|
|
output : 'lix-store.pc',
|
|
install_dir : libdir / 'pkgconfig',
|
|
configuration : {
|
|
'prefix' : prefix,
|
|
'libdir' : libdir,
|
|
'includedir' : includedir,
|
|
'PACKAGE_VERSION' : meson.project_version(),
|
|
},
|
|
)
|