1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-27 12:41:15 +02:00

Separate headers from source files

The short answer for why we need to do this is so we can consistently do
`#include "nix/..."`. Without this change, there are ways to still make
that work, but they are hacky, and they have downsides such as making it
harder to make sure headers from the wrong Nix library (e..g.
`libnixexpr` headers in `libnixutil`) aren't being used.

The C API alraedy used `nix_api_*`, so its headers are *not* put in
subdirectories accordingly.

Progress on #7876

We resisted doing this for a while because it would be annoying to not
have the header source file pairs close by / easy to change file
path/name from one to the other. But I am ameliorating that with
symlinks in the next commit.
This commit is contained in:
John Ericson 2025-02-20 14:15:07 -05:00
parent 326548bae5
commit f3e1c47f47
664 changed files with 2974 additions and 2913 deletions

View file

@ -1,5 +1,5 @@
#include "attr-path.hh"
#include "eval-inline.hh"
#include "nix/attr-path.hh"
#include "nix/eval-inline.hh"
namespace nix {

View file

@ -1,5 +1,5 @@
#include "attr-set.hh"
#include "eval-inline.hh"
#include "nix/attr-set.hh"
#include "nix/eval-inline.hh"
#include <algorithm>

View file

@ -1,11 +1,11 @@
#include "users.hh"
#include "eval-cache.hh"
#include "sqlite.hh"
#include "eval.hh"
#include "eval-inline.hh"
#include "store-api.hh"
#include "nix/users.hh"
#include "nix/eval-cache.hh"
#include "nix/sqlite.hh"
#include "nix/eval.hh"
#include "nix/eval-inline.hh"
#include "nix/store-api.hh"
// Need specialization involving `SymbolStr` just in this one module.
#include "strings-inline.hh"
#include "nix/strings-inline.hh"
namespace nix::eval_cache {

View file

@ -1,6 +1,6 @@
#include "eval-error.hh"
#include "eval.hh"
#include "value.hh"
#include "nix/eval-error.hh"
#include "nix/eval.hh"
#include "nix/value.hh"
namespace nix {

View file

@ -1,9 +1,9 @@
#include "error.hh"
#include "environment-variables.hh"
#include "eval-settings.hh"
#include "config-global.hh"
#include "serialise.hh"
#include "eval-gc.hh"
#include "nix/error.hh"
#include "nix/environment-variables.hh"
#include "nix/eval-settings.hh"
#include "nix/config-global.hh"
#include "nix/serialise.hh"
#include "nix/eval-gc.hh"
#if HAVE_BOEHMGC

View file

@ -1,8 +1,8 @@
#include "users.hh"
#include "globals.hh"
#include "profiles.hh"
#include "eval.hh"
#include "eval-settings.hh"
#include "nix/users.hh"
#include "nix/globals.hh"
#include "nix/profiles.hh"
#include "nix/eval.hh"
#include "nix/eval-settings.hh"
namespace nix {

View file

@ -1,24 +1,25 @@
#include "eval.hh"
#include "eval-settings.hh"
#include "primops.hh"
#include "print-options.hh"
#include "exit.hh"
#include "types.hh"
#include "util.hh"
#include "store-api.hh"
#include "derivations.hh"
#include "downstream-placeholder.hh"
#include "eval-inline.hh"
#include "filetransfer.hh"
#include "function-trace.hh"
#include "profiles.hh"
#include "print.hh"
#include "filtering-source-accessor.hh"
#include "memory-source-accessor.hh"
#include "gc-small-vector.hh"
#include "url.hh"
#include "fetch-to-store.hh"
#include "tarball.hh"
#include "nix/eval.hh"
#include "nix/eval-settings.hh"
#include "nix/primops.hh"
#include "nix/print-options.hh"
#include "nix/exit.hh"
#include "nix/types.hh"
#include "nix/util.hh"
#include "nix/store-api.hh"
#include "nix/derivations.hh"
#include "nix/downstream-placeholder.hh"
#include "nix/eval-inline.hh"
#include "nix/filetransfer.hh"
#include "nix/function-trace.hh"
#include "nix/profiles.hh"
#include "nix/print.hh"
#include "nix/filtering-source-accessor.hh"
#include "nix/memory-source-accessor.hh"
#include "nix/gc-small-vector.hh"
#include "nix/url.hh"
#include "nix/fetch-to-store.hh"
#include "nix/tarball.hh"
#include "parser-tab.hh"
#include <algorithm>
@ -38,7 +39,7 @@
# include <sys/resource.h>
#endif
#include "strings-inline.hh"
#include "nix/strings-inline.hh"
using json = nlohmann::json;

View file

@ -1,5 +1,5 @@
#include "function-trace.hh"
#include "logging.hh"
#include "nix/function-trace.hh"
#include "nix/logging.hh"
namespace nix {

View file

@ -1,8 +1,8 @@
#include "get-drvs.hh"
#include "eval-inline.hh"
#include "derivations.hh"
#include "store-api.hh"
#include "path-with-outputs.hh"
#include "nix/get-drvs.hh"
#include "nix/eval-inline.hh"
#include "nix/derivations.hh"
#include "nix/store-api.hh"
#include "nix/path-with-outputs.hh"
#include <cstring>
#include <regex>

View file

@ -1,7 +1,7 @@
#pragma once
///@file
#include "eval.hh"
#include "nix/eval.hh"
#include <string>
#include <map>

View file

@ -1,8 +1,8 @@
#pragma once
///@file
#include "nixexpr.hh"
#include "symbol-table.hh"
#include "nix/nixexpr.hh"
#include "nix/symbol-table.hh"
#include <algorithm>

View file

@ -1,9 +1,9 @@
#pragma once
///@file
#include "sync.hh"
#include "hash.hh"
#include "eval.hh"
#include "nix/sync.hh"
#include "nix/hash.hh"
#include "nix/eval.hh"
#include <functional>
#include <variant>

View file

@ -1,7 +1,7 @@
#pragma once
#include "error.hh"
#include "pos-idx.hh"
#include "nix/error.hh"
#include "nix/pos-idx.hh"
namespace nix {

View file

@ -1,10 +1,10 @@
#pragma once
///@file
#include "print.hh"
#include "eval.hh"
#include "eval-error.hh"
#include "eval-settings.hh"
#include "nix/print.hh"
#include "nix/eval.hh"
#include "nix/eval-error.hh"
#include "nix/eval-settings.hh"
namespace nix {

View file

@ -1,8 +1,8 @@
#pragma once
///@file
#include "config.hh"
#include "source-path.hh"
#include "nix/config.hh"
#include "nix/source-path.hh"
namespace nix {

View file

@ -1,20 +1,20 @@
#pragma once
///@file
#include "attr-set.hh"
#include "eval-error.hh"
#include "types.hh"
#include "value.hh"
#include "nixexpr.hh"
#include "symbol-table.hh"
#include "config.hh"
#include "experimental-features.hh"
#include "position.hh"
#include "pos-table.hh"
#include "source-accessor.hh"
#include "search-path.hh"
#include "repl-exit-status.hh"
#include "ref.hh"
#include "nix/attr-set.hh"
#include "nix/eval-error.hh"
#include "nix/types.hh"
#include "nix/value.hh"
#include "nix/nixexpr.hh"
#include "nix/symbol-table.hh"
#include "nix/config.hh"
#include "nix/experimental-features.hh"
#include "nix/position.hh"
#include "nix/pos-table.hh"
#include "nix/source-accessor.hh"
#include "nix/search-path.hh"
#include "nix/repl-exit-status.hh"
#include "nix/ref.hh"
#include <map>
#include <optional>
@ -944,4 +944,4 @@ bool isAllowedURI(std::string_view uri, const Strings & allowedPaths);
}
#include "eval-inline.hh"
#include "nix/eval-inline.hh"

View file

@ -1,7 +1,7 @@
#pragma once
///@file
#include "eval.hh"
#include "nix/eval.hh"
#include <chrono>

View file

@ -2,7 +2,7 @@
#include <boost/container/small_vector.hpp>
#include "value.hh"
#include "nix/value.hh"
namespace nix {

View file

@ -1,8 +1,8 @@
#pragma once
///@file
#include "eval.hh"
#include "path.hh"
#include "nix/eval.hh"
#include "nix/path.hh"
#include <string>
#include <map>

View file

@ -1,7 +1,7 @@
#pragma once
///@file
#include "error.hh"
#include "nix/error.hh"
#include <string>

View file

@ -0,0 +1,37 @@
# Public headers directory
include_dirs = [include_directories('..')]
config_h = configure_file(
configuration : configdata,
output : 'config-expr.hh',
)
headers = [config_h] + files(
'attr-path.hh',
'attr-set.hh',
'eval-cache.hh',
'eval-error.hh',
'eval-gc.hh',
'eval-inline.hh',
'eval-settings.hh',
'eval.hh',
'function-trace.hh',
'gc-small-vector.hh',
'get-drvs.hh',
'json-to-value.hh',
# internal: 'lexer-helpers.hh',
'nixexpr.hh',
'parser-state.hh',
'primops.hh',
'print-ambiguous.hh',
'print-options.hh',
'print.hh',
'repl-exit-status.hh',
'search-path.hh',
'symbol-table.hh',
'value-to-json.hh',
'value-to-xml.hh',
'value.hh',
'value/context.hh',
)

View file

@ -4,10 +4,10 @@
#include <map>
#include <vector>
#include "value.hh"
#include "symbol-table.hh"
#include "eval-error.hh"
#include "pos-idx.hh"
#include "nix/value.hh"
#include "nix/symbol-table.hh"
#include "nix/eval-error.hh"
#include "nix/pos-idx.hh"
namespace nix {

View file

@ -3,7 +3,7 @@
#include <limits>
#include "eval.hh"
#include "nix/eval.hh"
namespace nix {

View file

@ -1,7 +1,7 @@
#pragma once
///@file
#include "eval.hh"
#include "nix/eval.hh"
#include <tuple>
#include <vector>

View file

@ -1,6 +1,6 @@
#pragma once
#include "value.hh"
#include "nix/value.hh"
namespace nix {

View file

@ -9,8 +9,8 @@
#include <iostream>
#include "fmt.hh"
#include "print-options.hh"
#include "nix/fmt.hh"
#include "nix/print-options.hh"
namespace nix {

View file

@ -3,8 +3,8 @@
#include <optional>
#include "types.hh"
#include "comparator.hh"
#include "nix/types.hh"
#include "nix/comparator.hh"
namespace nix {

View file

@ -5,9 +5,9 @@
#include <map>
#include <unordered_map>
#include "types.hh"
#include "chunked-vector.hh"
#include "error.hh"
#include "nix/types.hh"
#include "nix/chunked-vector.hh"
#include "nix/error.hh"
namespace nix {

View file

@ -1,8 +1,8 @@
#pragma once
///@file
#include "nixexpr.hh"
#include "eval.hh"
#include "nix/nixexpr.hh"
#include "nix/eval.hh"
#include <string>
#include <map>

View file

@ -1,8 +1,8 @@
#pragma once
///@file
#include "nixexpr.hh"
#include "eval.hh"
#include "nix/nixexpr.hh"
#include "nix/eval.hh"
#include <string>
#include <map>

View file

@ -4,12 +4,12 @@
#include <cassert>
#include <span>
#include "eval-gc.hh"
#include "symbol-table.hh"
#include "value/context.hh"
#include "source-path.hh"
#include "print-options.hh"
#include "checked-arithmetic.hh"
#include "nix/eval-gc.hh"
#include "nix/symbol-table.hh"
#include "nix/value/context.hh"
#include "nix/source-path.hh"
#include "nix/print-options.hh"
#include "nix/checked-arithmetic.hh"
#include <nlohmann/json_fwd.hpp>

View file

@ -1,9 +1,9 @@
#pragma once
///@file
#include "comparator.hh"
#include "derived-path.hh"
#include "variant-wrapper.hh"
#include "nix/comparator.hh"
#include "nix/derived-path.hh"
#include "nix/variant-wrapper.hh"
#include <nlohmann/json_fwd.hpp>

View file

@ -1,6 +1,6 @@
#include "json-to-value.hh"
#include "value.hh"
#include "eval.hh"
#include "nix/json-to-value.hh"
#include "nix/value.hh"
#include "nix/eval.hh"
#include <limits>
#include <variant>

View file

@ -1,7 +1,8 @@
#include "lexer-tab.hh"
#include "lexer-helpers.hh"
#include "parser-tab.hh"
#include "nix/lexer-helpers.hh"
void nix::lexer::internal::initLoc(YYLTYPE * loc)
{
loc->beginOffset = loc->endOffset = 0;

View file

@ -16,7 +16,7 @@
%top {
#include "parser-tab.hh" // YYSTYPE
#include "parser-state.hh"
#include "nix/parser-state.hh"
}
%{
@ -24,9 +24,9 @@
#pragma clang diagnostic ignored "-Wunneeded-internal-declaration"
#endif
#include "nixexpr.hh"
#include "nix/nixexpr.hh"
#include "parser-tab.hh"
#include "lexer-helpers.hh"
#include "nix/lexer-helpers.hh"
namespace nix {
struct LexerState;

View file

@ -61,18 +61,13 @@ toml11 = dependency(
)
deps_other += toml11
config_h = configure_file(
configuration : configdata,
output : 'config-expr.hh',
)
add_project_arguments(
# TODO(Qyriad): Yes this is how the autoconf+Make system did it.
# It would be nice for our headers to be idempotent instead.
'-include', 'config-util.hh',
'-include', 'config-store.hh',
# '-include', 'config-fetchers.h',
'-include', 'config-expr.hh',
'-include', 'nix/config-util.hh',
'-include', 'nix/config-store.hh',
# '-include', 'nix_api_fetchers_config.h',
'-include', 'nix/config-expr.hh',
language : 'cpp',
)
@ -153,36 +148,7 @@ sources = files(
'value/context.cc',
)
include_dirs = [include_directories('.')]
headers = [config_h] + files(
'attr-path.hh',
'attr-set.hh',
'eval-cache.hh',
'eval-error.hh',
'eval-gc.hh',
'eval-inline.hh',
'eval-settings.hh',
'eval.hh',
'function-trace.hh',
'gc-small-vector.hh',
'get-drvs.hh',
'json-to-value.hh',
# internal: 'lexer-helpers.hh',
'nixexpr.hh',
'parser-state.hh',
'primops.hh',
'print-ambiguous.hh',
'print-options.hh',
'print.hh',
'repl-exit-status.hh',
'search-path.hh',
'symbol-table.hh',
'value-to-json.hh',
'value-to-xml.hh',
'value.hh',
'value/context.hh',
)
subdir('include/nix')
subdir('primops')

View file

@ -1,13 +1,13 @@
#include "nixexpr.hh"
#include "eval.hh"
#include "symbol-table.hh"
#include "util.hh"
#include "print.hh"
#include "nix/nixexpr.hh"
#include "nix/eval.hh"
#include "nix/symbol-table.hh"
#include "nix/util.hh"
#include "nix/print.hh"
#include <cstdlib>
#include <sstream>
#include "strings-inline.hh"
#include "nix/strings-inline.hh"
namespace nix {

View file

@ -48,6 +48,7 @@ mkMesonLibrary (finalAttrs: {
./meson.build
./meson.options
./primops/meson.build
./include/nix/meson.build
(fileset.fileFilter (file: file.hasExt "cc") ./.)
(fileset.fileFilter (file: file.hasExt "hh") ./.)
./lexer.l

View file

@ -17,14 +17,14 @@
#include <variant>
#include "finally.hh"
#include "util.hh"
#include "users.hh"
#include "nix/finally.hh"
#include "nix/util.hh"
#include "nix/users.hh"
#include "nixexpr.hh"
#include "eval.hh"
#include "eval-settings.hh"
#include "parser-state.hh"
#include "nix/nixexpr.hh"
#include "nix/eval.hh"
#include "nix/eval-settings.hh"
#include "nix/parser-state.hh"
// Bison seems to have difficulty growing the parser stack when using C++ with
// a custom location type. This undocumented macro tells Bison that our
@ -519,7 +519,7 @@ formal
%%
#include "eval.hh"
#include "nix/eval.hh"
namespace nix {

View file

@ -1,5 +1,5 @@
#include "store-api.hh"
#include "eval.hh"
#include "nix/store-api.hh"
#include "nix/eval.hh"
namespace nix {

View file

@ -1,19 +1,19 @@
#include "derivations.hh"
#include "downstream-placeholder.hh"
#include "eval-inline.hh"
#include "eval.hh"
#include "eval-settings.hh"
#include "gc-small-vector.hh"
#include "json-to-value.hh"
#include "names.hh"
#include "path-references.hh"
#include "store-api.hh"
#include "util.hh"
#include "processes.hh"
#include "value-to-json.hh"
#include "value-to-xml.hh"
#include "primops.hh"
#include "fetch-to-store.hh"
#include "nix/derivations.hh"
#include "nix/downstream-placeholder.hh"
#include "nix/eval-inline.hh"
#include "nix/eval.hh"
#include "nix/eval-settings.hh"
#include "nix/gc-small-vector.hh"
#include "nix/json-to-value.hh"
#include "nix/names.hh"
#include "nix/path-references.hh"
#include "nix/store-api.hh"
#include "nix/util.hh"
#include "nix/processes.hh"
#include "nix/value-to-json.hh"
#include "nix/value-to-xml.hh"
#include "nix/primops.hh"
#include "nix/fetch-to-store.hh"
#include <boost/container/small_vector.hpp>
#include <nlohmann/json.hpp>

View file

@ -1,7 +1,7 @@
#include "primops.hh"
#include "eval-inline.hh"
#include "derivations.hh"
#include "store-api.hh"
#include "nix/primops.hh"
#include "nix/eval-inline.hh"
#include "nix/derivations.hh"
#include "nix/store-api.hh"
namespace nix {

View file

@ -1,8 +1,8 @@
#include "primops.hh"
#include "store-api.hh"
#include "realisation.hh"
#include "make-content-addressed.hh"
#include "url.hh"
#include "nix/primops.hh"
#include "nix/store-api.hh"
#include "nix/realisation.hh"
#include "nix/make-content-addressed.hh"
#include "nix/url.hh"
namespace nix {

View file

@ -1,10 +1,10 @@
#include "primops.hh"
#include "eval-inline.hh"
#include "eval-settings.hh"
#include "store-api.hh"
#include "fetchers.hh"
#include "url.hh"
#include "url-parts.hh"
#include "nix/primops.hh"
#include "nix/eval-inline.hh"
#include "nix/eval-settings.hh"
#include "nix/store-api.hh"
#include "nix/fetchers.hh"
#include "nix/url.hh"
#include "nix/url-parts.hh"
namespace nix {

View file

@ -1,15 +1,15 @@
#include "attrs.hh"
#include "primops.hh"
#include "eval-inline.hh"
#include "eval-settings.hh"
#include "store-api.hh"
#include "fetchers.hh"
#include "filetransfer.hh"
#include "registry.hh"
#include "tarball.hh"
#include "url.hh"
#include "value-to-json.hh"
#include "fetch-to-store.hh"
#include "nix/attrs.hh"
#include "nix/primops.hh"
#include "nix/eval-inline.hh"
#include "nix/eval-settings.hh"
#include "nix/store-api.hh"
#include "nix/fetchers.hh"
#include "nix/filetransfer.hh"
#include "nix/registry.hh"
#include "nix/tarball.hh"
#include "nix/url.hh"
#include "nix/value-to-json.hh"
#include "nix/fetch-to-store.hh"
#include <nlohmann/json.hpp>

View file

@ -1,5 +1,5 @@
#include "primops.hh"
#include "eval-inline.hh"
#include "nix/primops.hh"
#include "nix/eval-inline.hh"
#include <sstream>

View file

@ -1,7 +1,7 @@
#include "print-ambiguous.hh"
#include "print.hh"
#include "signals.hh"
#include "eval.hh"
#include "nix/print-ambiguous.hh"
#include "nix/print.hh"
#include "nix/signals.hh"
#include "nix/eval.hh"
namespace nix {

View file

@ -2,13 +2,13 @@
#include <unordered_set>
#include <sstream>
#include "print.hh"
#include "ansicolor.hh"
#include "signals.hh"
#include "store-api.hh"
#include "terminal.hh"
#include "english.hh"
#include "eval.hh"
#include "nix/print.hh"
#include "nix/ansicolor.hh"
#include "nix/signals.hh"
#include "nix/store-api.hh"
#include "nix/terminal.hh"
#include "nix/english.hh"
#include "nix/eval.hh"
namespace nix {

View file

@ -1,4 +1,4 @@
#include "search-path.hh"
#include "nix/search-path.hh"
namespace nix {

View file

@ -1,7 +1,7 @@
#include "value-to-json.hh"
#include "eval-inline.hh"
#include "store-api.hh"
#include "signals.hh"
#include "nix/value-to-json.hh"
#include "nix/eval-inline.hh"
#include "nix/store-api.hh"
#include "nix/signals.hh"
#include <cstdlib>
#include <iomanip>

View file

@ -1,7 +1,7 @@
#include "value-to-xml.hh"
#include "xml-writer.hh"
#include "eval-inline.hh"
#include "signals.hh"
#include "nix/value-to-xml.hh"
#include "nix/xml-writer.hh"
#include "nix/eval-inline.hh"
#include "nix/signals.hh"
#include <cstdlib>

View file

@ -1,5 +1,5 @@
#include "util.hh"
#include "value/context.hh"
#include "nix/util.hh"
#include "nix/value/context.hh"
#include <optional>