circt: fix build failure on darwin (#354138)

This commit is contained in:
Weijia Wang 2024-11-09 01:06:28 +01:00 committed by GitHub
commit aeeedfc579
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -48,6 +48,10 @@ stdenv.mkDerivation rec {
"-DCIRCT_LLHD_SIM_ENABLED=OFF" "-DCIRCT_LLHD_SIM_ENABLED=OFF"
]; ];
# cannot use lib.optionalString as it creates an empty string, disabling all tests
LIT_FILTER_OUT =
let
lit-filters =
# There are some tests depending on `clang-tools` to work. They are activated only when detected # 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 # `clang-tidy` in PATH, However, we cannot simply put `clang-tools` in checkInputs to make these
# tests work. Because # tests work. Because
@ -59,14 +63,30 @@ stdenv.mkDerivation rec {
# https://github.com/NixOS/nixpkgs/issues/214945 discusses this issue. # https://github.com/NixOS/nixpkgs/issues/214945 discusses this issue.
# #
# As a temporary fix, we disabled these tests when using clang stdenv # 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 lib.optionals stdenv.cc.isClang [ "CIRCT :: Target/ExportSystemC/.*\.mlir" ]
LIT_FILTER_OUT = if stdenv.cc.isClang then "CIRCT :: Target/ExportSystemC/.*\.mlir" else null; # 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;