0e18254aa8
Previously, we relied on the `shutdown()` function to terminate `accept()` calls on a listening socket. However, this approach did not work on macOS as the waiting `accept()` call is not considered a connected socket, resulting in an `ENOTCONN` error. Instead, we now close the listening socket to terminate the `accept()` call. Additionally, we fixed a resource management issue where we set the `daemonSocket` variable to -1, triggering resource cleanup and causing the `stopDaemon` function to be called twice. This resulted in errors as the socket was already closed by the time the second `stopDaemon` call was made. Instead of setting `daemonSocket` to -1, we now release the socket using the `release()` method on a unique pointer. This properly transfers ownership and allows for correct resource cleanup. These changes ensure proper behavior and resource management for the recursive-nix feature on macOS.
20 lines
624 B
Bash
20 lines
624 B
Bash
source common.sh
|
|
|
|
sed -i 's/experimental-features .*/& recursive-nix/' "$NIX_CONF_DIR"/nix.conf
|
|
restartDaemon
|
|
|
|
clearStore
|
|
|
|
rm -f $TEST_ROOT/result
|
|
|
|
export unreachable=$(nix store add-path ./recursive.sh)
|
|
|
|
NIX_BIN_DIR=$(dirname $(type -p nix)) nix --extra-experimental-features 'nix-command recursive-nix' build -o $TEST_ROOT/result -L --impure --file ./recursive.nix
|
|
|
|
[[ $(cat $TEST_ROOT/result/inner1) =~ blaat ]]
|
|
|
|
# Make sure the recursively created paths are in the closure.
|
|
nix path-info -r $TEST_ROOT/result | grep foobar
|
|
nix path-info -r $TEST_ROOT/result | grep fnord
|
|
nix path-info -r $TEST_ROOT/result | grep inner1
|