circt: fix build failure on darwin (#354138)
This commit is contained in:
commit
aeeedfc579
@ -48,25 +48,45 @@ stdenv.mkDerivation rec {
|
|||||||
"-DCIRCT_LLHD_SIM_ENABLED=OFF"
|
"-DCIRCT_LLHD_SIM_ENABLED=OFF"
|
||||||
];
|
];
|
||||||
|
|
||||||
# There are some tests depending on `clang-tools` to work. They are activated only when detected
|
|
||||||
# `clang-tidy` in PATH, However, we cannot simply put `clang-tools` in checkInputs to make these
|
|
||||||
# tests work. Because
|
|
||||||
#
|
|
||||||
# 1. The absolute paths of binaries used in tests are resolved in configure phase.
|
|
||||||
# 2. When stdenv = clangStdenv, the `clang-tidy` binary appears in PATH via `clang-unwrapped`,
|
|
||||||
# which is always placed before `${clang-tools}/bin` in PATH. `clang-tidy` provided in
|
|
||||||
# `clang-unwrapped` cause tests failing because it is not wrapped to resolve header search paths.
|
|
||||||
# https://github.com/NixOS/nixpkgs/issues/214945 discusses this issue.
|
|
||||||
#
|
|
||||||
# As a temporary fix, we disabled these tests when using clang stdenv
|
|
||||||
# cannot use lib.optionalString as it creates an empty string, disabling all tests
|
# cannot use lib.optionalString as it creates an empty string, disabling all tests
|
||||||
LIT_FILTER_OUT = if stdenv.cc.isClang then "CIRCT :: Target/ExportSystemC/.*\.mlir" else null;
|
LIT_FILTER_OUT =
|
||||||
|
let
|
||||||
|
lit-filters =
|
||||||
|
# There are some tests depending on `clang-tools` to work. They are activated only when detected
|
||||||
|
# `clang-tidy` in PATH, However, we cannot simply put `clang-tools` in checkInputs to make these
|
||||||
|
# tests work. Because
|
||||||
|
#
|
||||||
|
# 1. The absolute paths of binaries used in tests are resolved in configure phase.
|
||||||
|
# 2. When stdenv = clangStdenv, the `clang-tidy` binary appears in PATH via `clang-unwrapped`,
|
||||||
|
# which is always placed before `${clang-tools}/bin` in PATH. `clang-tidy` provided in
|
||||||
|
# `clang-unwrapped` cause tests failing because it is not wrapped to resolve header search paths.
|
||||||
|
# https://github.com/NixOS/nixpkgs/issues/214945 discusses this issue.
|
||||||
|
#
|
||||||
|
# As a temporary fix, we disabled these tests when using clang stdenv
|
||||||
|
lib.optionals stdenv.cc.isClang [ "CIRCT :: Target/ExportSystemC/.*\.mlir" ]
|
||||||
|
# Disable some tests on x86_64-darwin
|
||||||
|
++ lib.optionals (stdenv.hostPlatform.system == "x86_64-darwin") [
|
||||||
|
# These test seem to pass on hydra (rosetta) but not on x86_64-darwin machines
|
||||||
|
"CIRCT :: Target/ExportSMTLIB/attributes.mlir"
|
||||||
|
"CIRCT :: Target/ExportSMTLIB/basic.mlir"
|
||||||
|
"CIRCT :: circt-bmc/comb-errors.mlir"
|
||||||
|
"CIRCT :: circt-bmc/seq-errors.mlir"
|
||||||
|
# This test was having issues with rosetta
|
||||||
|
"CIRCT :: Dialect/SMT/basic.mlir"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
if lit-filters != [ ] then lib.strings.concatStringsSep "|" lit-filters else null;
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
find ./test -name '*.mlir' -exec sed -i 's|/usr/bin/env|${coreutils}/bin/env|g' {} \;
|
find ./test -name '*.mlir' -exec sed -i 's|/usr/bin/env|${coreutils}/bin/env|g' {} \;
|
||||||
# circt uses git to check its version, but when cloned on nix it can't access git.
|
# circt uses git to check its version, but when cloned on nix it can't access git.
|
||||||
# So this hard codes the version.
|
# So this hard codes the version.
|
||||||
substituteInPlace cmake/modules/GenVersionFile.cmake --replace "unknown git version" "${src.rev}"
|
substituteInPlace cmake/modules/GenVersionFile.cmake \
|
||||||
|
--replace-fail "unknown git version" "${src.rev}"
|
||||||
|
# Increase timeout on tests because some were failing on hydra.
|
||||||
|
# Using `replace-warn` so it doesn't break when upstream changes the timeout.
|
||||||
|
substituteInPlace integration_test/CMakeLists.txt \
|
||||||
|
--replace-warn 'set(CIRCT_INTEGRATION_TIMEOUT 60)' 'set(CIRCT_INTEGRATION_TIMEOUT 300)'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user