3c3527e16b
This adds an implementation of BinaryCacheStore to be used by tests exercising both the logic inherent to BinaryCacheStore and more general Store tests. A new library target, nixstoremock, is created to indicate that this file is intended only for use in tests and not in user-facing code. Change-Id: Ib68f777238843a4f3a2303db8a69735fbc22d161 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1645 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
127 lines
2.7 KiB
CMake
127 lines
2.7 KiB
CMake
# -*- mode: cmake; -*-
|
|
add_library(nixstore SHARED)
|
|
add_library(nixstoremock SHARED)
|
|
set_property(TARGET nixstore PROPERTY CXX_STANDARD 17)
|
|
set_property(TARGET nixstoremock PROPERTY CXX_STANDARD 17)
|
|
include_directories(${PROJECT_BINARY_DIR}) # for config.h
|
|
target_include_directories(nixstore PUBLIC "${nix_SOURCE_DIR}/src")
|
|
target_include_directories(nixstoremock PUBLIC "${nix_SOURCE_DIR}/src")
|
|
|
|
# The database schema is stored in schema.sql, but needs to be
|
|
# available during the build as static data.
|
|
#
|
|
# These commands create an includeable source-file out of it.
|
|
file(READ "schema.sql" NIX_SCHEMA)
|
|
|
|
string(CONFIGURE
|
|
"#pragma once
|
|
namespace nix {
|
|
constexpr char kNixSqlSchema[] = R\"(${NIX_SCHEMA})\";
|
|
}"
|
|
NIX_SCHEMA_GEN)
|
|
|
|
file(WRITE ${PROJECT_BINARY_DIR}/generated/schema.sql.hh "${NIX_SCHEMA_GEN}")
|
|
|
|
set(HEADER_FILES
|
|
binary-cache-store.hh
|
|
builtins.hh
|
|
crypto.hh
|
|
derivations.hh
|
|
download.hh
|
|
fs-accessor.hh
|
|
globals.hh
|
|
local-store.hh
|
|
machines.hh
|
|
nar-accessor.hh
|
|
nar-info-disk-cache.hh
|
|
nar-info.hh
|
|
parsed-derivations.hh
|
|
pathlocks.hh
|
|
profiles.hh
|
|
references.hh
|
|
remote-fs-accessor.hh
|
|
remote-store.hh
|
|
rpc-store.hh
|
|
s3-binary-cache-store.hh
|
|
s3.hh
|
|
serve-protocol.hh
|
|
sqlite.hh
|
|
ssh.hh
|
|
store-api.hh
|
|
worker-protocol.hh
|
|
)
|
|
|
|
target_sources(nixstore
|
|
PUBLIC
|
|
${HEADER_FILES}
|
|
|
|
PRIVATE
|
|
${PROJECT_BINARY_DIR}/generated/schema.sql.hh
|
|
binary-cache-store.cc
|
|
build.cc
|
|
crypto.cc
|
|
derivations.cc
|
|
download.cc
|
|
export-import.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
|
|
machines.cc
|
|
misc.cc
|
|
nar-accessor.cc
|
|
nar-info.cc
|
|
nar-info-disk-cache.cc
|
|
optimise-store.cc
|
|
parsed-derivations.cc
|
|
pathlocks.cc
|
|
profiles.cc
|
|
references.cc
|
|
remote-fs-accessor.cc
|
|
remote-store.cc
|
|
rpc-store.cc
|
|
s3-binary-cache-store.cc
|
|
sqlite.cc
|
|
ssh.cc
|
|
ssh-store.cc
|
|
store-api.cc
|
|
builtins/buildenv.cc
|
|
builtins/fetchurl.cc
|
|
)
|
|
|
|
target_link_libraries(nixstore
|
|
nixproto
|
|
nixutil
|
|
|
|
CURL::libcurl
|
|
SQLite::SQLite3
|
|
absl::strings
|
|
glog
|
|
seccomp
|
|
sodium
|
|
)
|
|
|
|
target_sources(nixstoremock
|
|
PUBLIC
|
|
mock-binary-cache-store.hh
|
|
|
|
PRIVATE
|
|
mock-binary-cache-store.cc
|
|
)
|
|
|
|
target_link_libraries(nixstoremock
|
|
nixstore
|
|
|
|
absl::btree
|
|
absl::flat_hash_map
|
|
glog
|
|
)
|
|
|
|
configure_file("nix-store.pc.in" "${PROJECT_BINARY_DIR}/nix-store.pc" @ONLY)
|
|
INSTALL(FILES "${PROJECT_BINARY_DIR}/nix-store.pc" DESTINATION "${PKGCONFIG_INSTALL_DIR}")
|
|
|
|
INSTALL(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/nix/libstore)
|
|
INSTALL(TARGETS nixstore nixstoremock DESTINATION ${CMAKE_INSTALL_LIBDIR})
|