fix(3p/nix): Properly configure SANDBOX_SHELL
point the SANDBOX_SHELL macro at the actual path to busybox on the build machine, or allow it to be configured at build-time with a cmake option. Change-Id: I044a1315ba9baa3bc9ceddf29f36d14f9f9ccd96 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1632 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
parent
26a59482d2
commit
09cb41b7ac
4 changed files with 23 additions and 2 deletions
1
third_party/default.nix
vendored
1
third_party/default.nix
vendored
|
@ -47,6 +47,7 @@ let
|
||||||
buildGoPackage
|
buildGoPackage
|
||||||
buildPackages
|
buildPackages
|
||||||
buildkite-agent
|
buildkite-agent
|
||||||
|
busybox
|
||||||
bzip2
|
bzip2
|
||||||
c-ares
|
c-ares
|
||||||
cacert
|
cacert
|
||||||
|
|
9
third_party/nix/CMakeLists.txt
vendored
9
third_party/nix/CMakeLists.txt
vendored
|
@ -40,6 +40,15 @@ if (CLANG_TIDY_PATH)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (NOT SANDBOX_SHELL)
|
||||||
|
find_program(BUSYBOX busybox)
|
||||||
|
if (BUSYBOX)
|
||||||
|
set(SANDBOX_SHELL "${BUSYBOX}")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Could not find busybox and SANDBOX_SHELL is not set")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# generate a configuration file (autoheader-style) to configure
|
# generate a configuration file (autoheader-style) to configure
|
||||||
# certain symbols that Nix depends on.
|
# certain symbols that Nix depends on.
|
||||||
configure_file(config.h.in nix_config.h @ONLY)
|
configure_file(config.h.in nix_config.h @ONLY)
|
||||||
|
|
2
third_party/nix/config.h.in
vendored
2
third_party/nix/config.h.in
vendored
|
@ -23,7 +23,7 @@
|
||||||
#define NIX_LIBEXEC_DIR "@CMAKE_INSTALL_FULL_LIBEXECDIR@"
|
#define NIX_LIBEXEC_DIR "@CMAKE_INSTALL_FULL_LIBEXECDIR@"
|
||||||
#define NIX_BIN_DIR "@CMAKE_INSTALL_FULL_BINDIR@"
|
#define NIX_BIN_DIR "@CMAKE_INSTALL_FULL_BINDIR@"
|
||||||
#define NIX_MAN_DIR "@CMAKE_INSTALL_FULL_MANDIR@"
|
#define NIX_MAN_DIR "@CMAKE_INSTALL_FULL_MANDIR@"
|
||||||
#define SANDBOX_SHELL "/nix/store/zq8biwi5mj2lrn68kx0lk0fkpbqypyxd-busybox-1.31.1-x86_64-unknown-linux-musl/bin/busybox"
|
#define SANDBOX_SHELL "@SANDBOX_SHELL@"
|
||||||
|
|
||||||
// Defines used only in tests (e.g. to access data)
|
// Defines used only in tests (e.g. to access data)
|
||||||
#define NIX_SRC_DIR "@CMAKE_SOURCE_DIR@"
|
#define NIX_SRC_DIR "@CMAKE_SOURCE_DIR@"
|
||||||
|
|
13
third_party/nix/default.nix
vendored
13
third_party/nix/default.nix
vendored
|
@ -30,6 +30,14 @@ let
|
||||||
--plugin=protoc-gen-grpc=${pkgs.grpc}/bin/grpc_cpp_plugin --grpc_out=$out/libproto \
|
--plugin=protoc-gen-grpc=${pkgs.grpc}/bin/grpc_cpp_plugin --grpc_out=$out/libproto \
|
||||||
$PROTO_SRCS/*.proto
|
$PROTO_SRCS/*.proto
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
# Derivation for busybox that just has the `busybox` binary in bin/, not all
|
||||||
|
# the symlinks, so cmake can find it
|
||||||
|
busybox = pkgs.runCommand "busybox" {} ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp ${pkgs.busybox}/bin/busybox $out/bin
|
||||||
|
'';
|
||||||
|
|
||||||
in lib.fix (self: pkgs.llvmPackages.libcxxStdenv.mkDerivation {
|
in lib.fix (self: pkgs.llvmPackages.libcxxStdenv.mkDerivation {
|
||||||
pname = "tvix";
|
pname = "tvix";
|
||||||
version = "2.3.4";
|
version = "2.3.4";
|
||||||
|
@ -87,7 +95,8 @@ in lib.fix (self: pkgs.llvmPackages.libcxxStdenv.mkDerivation {
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF \
|
-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF \
|
||||||
-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF \
|
-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF \
|
||||||
-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON
|
-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON \
|
||||||
|
-DSANDBOX_SHELL=${pkgs.busybox}/bin/busybox
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installCheckPhase = ''
|
installCheckPhase = ''
|
||||||
|
@ -114,6 +123,8 @@ in lib.fix (self: pkgs.llvmPackages.libcxxStdenv.mkDerivation {
|
||||||
# Work around broken system header include flags in the cxx toolchain.
|
# Work around broken system header include flags in the cxx toolchain.
|
||||||
LIBCXX_INCLUDE = "${pkgs.llvmPackages.libcxx}/include/c++/v1";
|
LIBCXX_INCLUDE = "${pkgs.llvmPackages.libcxx}/include/c++/v1";
|
||||||
|
|
||||||
|
SANDBOX_SHELL="${pkgs.busybox}/bin/busybox";
|
||||||
|
|
||||||
# Install the various symlinks to the Nix binary which users expect
|
# Install the various symlinks to the Nix binary which users expect
|
||||||
# to exist.
|
# to exist.
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue