Skip to content

Commit c8eed31

Browse files
committed
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.
1 parent b8ca5d4 commit c8eed31

File tree

664 files changed

+2978
-2917
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

664 files changed

+2978
-2917
lines changed

doc/manual/source/development/testing.md

+8-4
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ The unit tests are defined using the [googletest] and [rapidcheck] frameworks.
3131
> ├── libexpr
3232
> │ ├── meson.build
3333
> │ ├── value/context.hh
34-
> │ ├── value/context.cc
34+
> │ ├── include/nix/value/context.cc
3535
> │ …
3636
> │
3737
> ├── tests
@@ -46,8 +46,12 @@ The unit tests are defined using the [googletest] and [rapidcheck] frameworks.
4646
> │ │
4747
> │ ├── libexpr-test-support
4848
> │ │ ├── meson.build
49+
> │ │ ├── include/nix
50+
> │ │ │ ├── meson.build
51+
> │ │ │ └── tests
52+
> │ │ │ ├── value/context.hh
53+
> │ │ │ …
4954
> │ │ └── tests
50-
> │ │ ├── value/context.hh
5155
> │ │ ├── value/context.cc
5256
> │ │ …
5357
> │ │
@@ -59,15 +63,15 @@ The unit tests are defined using the [googletest] and [rapidcheck] frameworks.
5963
> ```
6064
6165
The tests for each Nix library (`libnixexpr`, `libnixstore`, etc..) live inside a directory `src/${library_name_without-nix}-test`.
62-
Given an interface (header) and implementation pair in the original library, say, `src/libexpr/value/context.{hh,cc}`, we write tests for it in `src/libexpr-tests/value/context.cc`, and (possibly) declare/define additional interfaces for testing purposes in `src/libexpr-test-support/tests/value/context.{hh,cc}`.
66+
Given an interface (header) and implementation pair in the original library, say, `src/libexpr/include/nix/value/context.hh` and `src/libexpr/value/context.cc`, we write tests for it in `src/libexpr-tests/value/context.cc`, and (possibly) declare/define additional interfaces for testing purposes in `src/libexpr-test-support/include/nix/tests/value/context.hh` and `src/libexpr-test-support/tests/value/context.cc`.
6367
6468
Data for unit tests is stored in a `data` subdir of the directory for each unit test executable.
6569
For example, `libnixstore` code is in `src/libstore`, and its test data is in `src/libstore-tests/data`.
6670
The path to the `src/${library_name_without-nix}-test/data` directory is passed to the unit test executable with the environment variable `_NIX_TEST_UNIT_DATA`.
6771
Note that each executable only gets the data for its tests.
6872
6973
The unit test libraries are in `src/${library_name_without-nix}-test-support`.
70-
All headers are in a `tests` subdirectory so they are included with `#include "tests/"`.
74+
All headers are in a `tests` subdirectory so they are included with `#include "nix/tests/"`.
7175
7276
The use of all these separate directories for the unit tests might seem inconvenient, as for example the tests are not "right next to" the part of the code they are testing.
7377
But organizing the tests this way has one big benefit:

maintainers/flake-module.nix

+169-169
Large diffs are not rendered by default.

nix-meson-build-support/export/meson.build

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import('pkgconfig').generate(
1616
filebase : meson.project_name(),
1717
name : 'Nix',
1818
description : 'Nix Package Manager',
19-
subdirs : ['nix'],
2019
extra_cflags : ['-std=c++2a'],
2120
requires : requires_public,
2221
requires_private : requires_private,

src/build-remote/build-remote.cc

+13-13
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99
#include <sys/time.h>
1010
#endif
1111

12-
#include "machines.hh"
13-
#include "shared.hh"
14-
#include "plugin.hh"
15-
#include "pathlocks.hh"
16-
#include "globals.hh"
17-
#include "serialise.hh"
18-
#include "build-result.hh"
19-
#include "store-api.hh"
20-
#include "strings.hh"
21-
#include "derivations.hh"
22-
#include "local-store.hh"
23-
#include "legacy.hh"
24-
#include "experimental-features.hh"
12+
#include "nix/machines.hh"
13+
#include "nix/shared.hh"
14+
#include "nix/plugin.hh"
15+
#include "nix/pathlocks.hh"
16+
#include "nix/globals.hh"
17+
#include "nix/serialise.hh"
18+
#include "nix/build-result.hh"
19+
#include "nix/store-api.hh"
20+
#include "nix/strings.hh"
21+
#include "nix/derivations.hh"
22+
#include "nix/local-store.hh"
23+
#include "nix/legacy.hh"
24+
#include "nix/experimental-features.hh"
2525

2626
using namespace nix;
2727
using std::cin;

src/libcmd/built-path.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
#include "built-path.hh"
2-
#include "derivations.hh"
3-
#include "store-api.hh"
4-
#include "comparator.hh"
1+
#include "nix/built-path.hh"
2+
#include "nix/derivations.hh"
3+
#include "nix/store-api.hh"
4+
#include "nix/comparator.hh"
55

66
#include <nlohmann/json.hpp>
77

src/libcmd/command-installable-value.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "command-installable-value.hh"
1+
#include "nix/command-installable-value.hh"
22

33
namespace nix {
44

src/libcmd/command.cc

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#include <algorithm>
22
#include <nlohmann/json.hpp>
33

4-
#include "command.hh"
5-
#include "markdown.hh"
6-
#include "store-api.hh"
7-
#include "local-fs-store.hh"
8-
#include "derivations.hh"
9-
#include "nixexpr.hh"
10-
#include "profiles.hh"
11-
#include "repl.hh"
12-
#include "strings.hh"
13-
#include "environment-variables.hh"
4+
#include "nix/command.hh"
5+
#include "nix/markdown.hh"
6+
#include "nix/store-api.hh"
7+
#include "nix/local-fs-store.hh"
8+
#include "nix/derivations.hh"
9+
#include "nix/nixexpr.hh"
10+
#include "nix/profiles.hh"
11+
#include "nix/repl.hh"
12+
#include "nix/strings.hh"
13+
#include "nix/environment-variables.hh"
1414

1515
namespace nix {
1616

src/libcmd/common-eval-args.cc

+17-17
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
#include "fetch-settings.hh"
2-
#include "eval-settings.hh"
3-
#include "common-eval-args.hh"
4-
#include "shared.hh"
5-
#include "config-global.hh"
6-
#include "filetransfer.hh"
7-
#include "eval.hh"
8-
#include "fetchers.hh"
9-
#include "registry.hh"
10-
#include "flake/flakeref.hh"
11-
#include "flake/settings.hh"
12-
#include "store-api.hh"
13-
#include "command.hh"
14-
#include "tarball.hh"
15-
#include "fetch-to-store.hh"
16-
#include "compatibility-settings.hh"
17-
#include "eval-settings.hh"
1+
#include "nix/fetch-settings.hh"
2+
#include "nix/eval-settings.hh"
3+
#include "nix/common-eval-args.hh"
4+
#include "nix/shared.hh"
5+
#include "nix/config-global.hh"
6+
#include "nix/filetransfer.hh"
7+
#include "nix/eval.hh"
8+
#include "nix/fetchers.hh"
9+
#include "nix/registry.hh"
10+
#include "nix/flake/flakeref.hh"
11+
#include "nix/flake/settings.hh"
12+
#include "nix/store-api.hh"
13+
#include "nix/command.hh"
14+
#include "nix/tarball.hh"
15+
#include "nix/fetch-to-store.hh"
16+
#include "nix/compatibility-settings.hh"
17+
#include "nix/eval-settings.hh"
1818

1919
namespace nix {
2020

src/libcmd/editor-for.cc

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#include "editor-for.hh"
2-
#include "environment-variables.hh"
3-
#include "source-path.hh"
1+
#include "nix/editor-for.hh"
2+
#include "nix/environment-variables.hh"
3+
#include "nix/source-path.hh"
44

55
namespace nix {
66

src/libcmd/built-path.hh src/libcmd/include/nix/built-path.hh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#pragma once
22
///@file
33

4-
#include "derived-path.hh"
5-
#include "realisation.hh"
4+
#include "nix/derived-path.hh"
5+
#include "nix/realisation.hh"
66

77
namespace nix {
88

src/libcmd/command-installable-value.hh src/libcmd/include/nix/command-installable-value.hh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#pragma once
22
///@file
33

4-
#include "installable-value.hh"
5-
#include "command.hh"
4+
#include "nix/installable-value.hh"
5+
#include "nix/command.hh"
66

77
namespace nix {
88

src/libcmd/command.hh src/libcmd/include/nix/command.hh

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#pragma once
22
///@file
33

4-
#include "installable-value.hh"
5-
#include "args.hh"
6-
#include "common-eval-args.hh"
7-
#include "path.hh"
8-
#include "flake/lockfile.hh"
4+
#include "nix/installable-value.hh"
5+
#include "nix/args.hh"
6+
#include "nix/common-eval-args.hh"
7+
#include "nix/path.hh"
8+
#include "nix/flake/lockfile.hh"
99

1010
#include <optional>
1111

src/libcmd/common-eval-args.hh src/libcmd/include/nix/common-eval-args.hh

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#pragma once
22
///@file
33

4-
#include "args.hh"
5-
#include "canon-path.hh"
6-
#include "common-args.hh"
7-
#include "search-path.hh"
4+
#include "nix/args.hh"
5+
#include "nix/canon-path.hh"
6+
#include "nix/common-args.hh"
7+
#include "nix/search-path.hh"
88

99
#include <filesystem>
1010

src/libcmd/compatibility-settings.hh src/libcmd/include/nix/compatibility-settings.hh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#pragma once
2-
#include "config.hh"
2+
#include "nix/config.hh"
33

44
namespace nix {
55
struct CompatibilitySettings : public Config

src/libcmd/editor-for.hh src/libcmd/include/nix/editor-for.hh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#pragma once
22
///@file
33

4-
#include "types.hh"
5-
#include "source-path.hh"
4+
#include "nix/types.hh"
5+
#include "nix/source-path.hh"
66

77
namespace nix {
88

src/libcmd/installable-attr-path.hh src/libcmd/include/nix/installable-attr-path.hh

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
#pragma once
22
///@file
33

4-
#include "globals.hh"
5-
#include "installable-value.hh"
6-
#include "outputs-spec.hh"
7-
#include "command.hh"
8-
#include "attr-path.hh"
9-
#include "common-eval-args.hh"
10-
#include "derivations.hh"
11-
#include "eval-inline.hh"
12-
#include "eval.hh"
13-
#include "get-drvs.hh"
14-
#include "store-api.hh"
15-
#include "shared.hh"
16-
#include "eval-cache.hh"
17-
#include "url.hh"
18-
#include "registry.hh"
19-
#include "build-result.hh"
4+
#include "nix/globals.hh"
5+
#include "nix/installable-value.hh"
6+
#include "nix/outputs-spec.hh"
7+
#include "nix/command.hh"
8+
#include "nix/attr-path.hh"
9+
#include "nix/common-eval-args.hh"
10+
#include "nix/derivations.hh"
11+
#include "nix/eval-inline.hh"
12+
#include "nix/eval.hh"
13+
#include "nix/get-drvs.hh"
14+
#include "nix/store-api.hh"
15+
#include "nix/shared.hh"
16+
#include "nix/eval-cache.hh"
17+
#include "nix/url.hh"
18+
#include "nix/registry.hh"
19+
#include "nix/build-result.hh"
2020

2121
#include <regex>
2222
#include <queue>

src/libcmd/installable-derived-path.hh src/libcmd/include/nix/installable-derived-path.hh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22
///@file
33

4-
#include "installables.hh"
4+
#include "nix/installables.hh"
55

66
namespace nix {
77

src/libcmd/installable-flake.hh src/libcmd/include/nix/installable-flake.hh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#pragma once
22
///@file
33

4-
#include "common-eval-args.hh"
5-
#include "installable-value.hh"
4+
#include "nix/common-eval-args.hh"
5+
#include "nix/installable-value.hh"
66

77
namespace nix {
88

src/libcmd/installable-value.hh src/libcmd/include/nix/installable-value.hh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#pragma once
22
///@file
33

4-
#include "installables.hh"
5-
#include "flake/flake.hh"
4+
#include "nix/installables.hh"
5+
#include "nix/flake/flake.hh"
66

77
namespace nix {
88

src/libcmd/installables.hh src/libcmd/include/nix/installables.hh

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#pragma once
22
///@file
33

4-
#include "path.hh"
5-
#include "outputs-spec.hh"
6-
#include "derived-path.hh"
7-
#include "built-path.hh"
8-
#include "store-api.hh"
9-
#include "build-result.hh"
4+
#include "nix/path.hh"
5+
#include "nix/outputs-spec.hh"
6+
#include "nix/derived-path.hh"
7+
#include "nix/built-path.hh"
8+
#include "nix/store-api.hh"
9+
#include "nix/build-result.hh"
1010

1111
#include <optional>
1212

File renamed without changes.
File renamed without changes.

src/libcmd/include/nix/meson.build

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Public headers directory
2+
3+
include_dirs = [include_directories('..')]
4+
5+
headers = files(
6+
'built-path.hh',
7+
'command-installable-value.hh',
8+
'command.hh',
9+
'common-eval-args.hh',
10+
'compatibility-settings.hh',
11+
'editor-for.hh',
12+
'installable-attr-path.hh',
13+
'installable-derived-path.hh',
14+
'installable-flake.hh',
15+
'installable-value.hh',
16+
'installables.hh',
17+
'legacy.hh',
18+
'markdown.hh',
19+
'misc-store-flags.hh',
20+
'network-proxy.hh',
21+
'repl-interacter.hh',
22+
'repl.hh',
23+
)

src/libcmd/misc-store-flags.hh src/libcmd/include/nix/misc-store-flags.hh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#include "args.hh"
2-
#include "content-address.hh"
1+
#include "nix/args.hh"
2+
#include "nix/content-address.hh"
33

44
namespace nix::flag {
55

src/libcmd/network-proxy.hh src/libcmd/include/nix/network-proxy.hh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22
///@file
33

4-
#include "types.hh"
4+
#include "nix/types.hh"
55

66
namespace nix {
77

src/libcmd/repl-interacter.hh src/libcmd/include/nix/repl-interacter.hh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#pragma once
22
/// @file
33

4-
#include "finally.hh"
5-
#include "types.hh"
4+
#include "nix/finally.hh"
5+
#include "nix/types.hh"
66
#include <functional>
77
#include <string>
88

src/libcmd/repl.hh src/libcmd/include/nix/repl.hh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22
///@file
33

4-
#include "eval.hh"
4+
#include "nix/eval.hh"
55

66
namespace nix {
77

0 commit comments

Comments
 (0)