mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-25 23:36:16 +02:00
Add build-dir setting
This commit is contained in:
parent
b1fe388d33
commit
8b16cced18
3 changed files with 41 additions and 6 deletions
|
@ -488,7 +488,7 @@ void LocalDerivationGoal::startBuilder()
|
||||||
|
|
||||||
/* Create a temporary directory where the build will take
|
/* Create a temporary directory where the build will take
|
||||||
place. */
|
place. */
|
||||||
tmpDir = createTempDir("", "nix-build-" + std::string(drvPath.name()), false, false, 0700);
|
tmpDir = createTempDir(settings.buildDir.get().value_or(""), "nix-build-" + std::string(drvPath.name()), false, false, 0700);
|
||||||
|
|
||||||
chownToBuilder(tmpDir);
|
chownToBuilder(tmpDir);
|
||||||
|
|
||||||
|
|
|
@ -687,6 +687,8 @@ public:
|
||||||
Setting<std::string> sandboxShmSize{
|
Setting<std::string> sandboxShmSize{
|
||||||
this, "50%", "sandbox-dev-shm-size",
|
this, "50%", "sandbox-dev-shm-size",
|
||||||
R"(
|
R"(
|
||||||
|
*Linux only*
|
||||||
|
|
||||||
This option determines the maximum size of the `tmpfs` filesystem
|
This option determines the maximum size of the `tmpfs` filesystem
|
||||||
mounted on `/dev/shm` in Linux sandboxes. For the format, see the
|
mounted on `/dev/shm` in Linux sandboxes. For the format, see the
|
||||||
description of the `size` option of `tmpfs` in mount(8). The default
|
description of the `size` option of `tmpfs` in mount(8). The default
|
||||||
|
@ -694,9 +696,27 @@ public:
|
||||||
)"};
|
)"};
|
||||||
|
|
||||||
Setting<Path> sandboxBuildDir{this, "/build", "sandbox-build-dir",
|
Setting<Path> sandboxBuildDir{this, "/build", "sandbox-build-dir",
|
||||||
"The build directory inside the sandbox."};
|
R"(
|
||||||
|
*Linux only*
|
||||||
|
|
||||||
|
The build directory inside the sandbox.
|
||||||
|
|
||||||
|
This directory is backed by [`build-dir`](#conf-build-dir) on the host.
|
||||||
|
)"};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Setting<std::optional<Path>> buildDir{this, std::nullopt, "build-dir",
|
||||||
|
R"(
|
||||||
|
The directory on the host, in which derivations' temporary build directories are created.
|
||||||
|
|
||||||
|
If not set, Nix will use the system temporary directory indicated by the `TMPDIR` environment variable.
|
||||||
|
Note that builds are often performed by the Nix daemon, so its `TMPDIR` is used, and not that of the Nix command line interface.
|
||||||
|
|
||||||
|
This is also the location where [`--keep-failed`](@docroot@/command-ref/opt-common.md#opt-keep-failed) leaves its files.
|
||||||
|
|
||||||
|
If Nix runs without sandbox, or if the platform does not support sandboxing with bind mounts (e.g. macOS), then the [`builder`](@docroot@/language/derivations.md#attr-builder)'s environment will contain this directory, instead of the virtual location [`sandbox-build-dir`](#conf-sandbox-build-dir).
|
||||||
|
)"};
|
||||||
|
|
||||||
Setting<PathSet> allowedImpureHostPrefixes{this, {}, "allowed-impure-host-deps",
|
Setting<PathSet> allowedImpureHostPrefixes{this, {}, "allowed-impure-host-deps",
|
||||||
"Which prefixes to allow derivations to ask for access to (primarily for Darwin)."};
|
"Which prefixes to allow derivations to ask for access to (primarily for Darwin)."};
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,21 @@ nix-build check.nix -A failed --argstr checkBuildId $checkBuildId \
|
||||||
[ "$status" = "100" ]
|
[ "$status" = "100" ]
|
||||||
if checkBuildTempDirRemoved $TEST_ROOT/log; then false; fi
|
if checkBuildTempDirRemoved $TEST_ROOT/log; then false; fi
|
||||||
|
|
||||||
|
test_custom_build_dir() {
|
||||||
|
local customBuildDir="$TEST_ROOT/custom-build-dir"
|
||||||
|
|
||||||
|
# Nix does not create the parent directories, and perhaps it shouldn't try to
|
||||||
|
# decide the permissions of build-dir.
|
||||||
|
mkdir "$customBuildDir"
|
||||||
|
nix-build check.nix -A failed --argstr checkBuildId $checkBuildId \
|
||||||
|
--no-out-link --keep-failed --option build-dir "$TEST_ROOT/custom-build-dir" 2> $TEST_ROOT/log || status=$?
|
||||||
|
[ "$status" = "100" ]
|
||||||
|
[[ 1 == "$(count "$customBuildDir/nix-build-"*)" ]]
|
||||||
|
local buildDir="$customBuildDir/nix-build-"*
|
||||||
|
grep $checkBuildId $buildDir/checkBuildId
|
||||||
|
}
|
||||||
|
test_custom_build_dir
|
||||||
|
|
||||||
nix-build check.nix -A deterministic --argstr checkBuildId $checkBuildId \
|
nix-build check.nix -A deterministic --argstr checkBuildId $checkBuildId \
|
||||||
--no-out-link 2> $TEST_ROOT/log
|
--no-out-link 2> $TEST_ROOT/log
|
||||||
checkBuildTempDirRemoved $TEST_ROOT/log
|
checkBuildTempDirRemoved $TEST_ROOT/log
|
||||||
|
|
Loading…
Reference in a new issue