diff --git a/pkgs/by-name/ci/circt/package.nix b/pkgs/by-name/ci/circt/package.nix index 180fc1d2fbe4..6042e95d5c34 100644 --- a/pkgs/by-name/ci/circt/package.nix +++ b/pkgs/by-name/ci/circt/package.nix @@ -48,25 +48,45 @@ stdenv.mkDerivation rec { "-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 - 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 = '' 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. # 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;