Skip to content

Commit

Permalink
ci: Enable windows tests for 9.6.3
Browse files Browse the repository at this point in the history
There were two failing tests:

1. CCompilerOverride, was attempting to use gcc.exe rather than
   clang.exe without also overriding the C options which led to
   incorrect options being passed to gcc.exe. The fix is to override to
   clang.exe on ghc-9.4 or newer.
2. ForeignLibs exposes a bug in GHC
   (https://gitlab.haskell.org/ghc/ghc/-/issues/24185) and hence is
   skipped for GHCs newer than 9.4 where it was first introduced.

Towards fixing haskell#8451, we just need to fix the shared library issue now.
  • Loading branch information
mpickering authored and Mikolaj committed Nov 16, 2023
1 parent 21b858f commit 0a177f3
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 13 deletions.
2 changes: 0 additions & 2 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,15 +166,13 @@ jobs:
# Have to disable *-suite validation:
# - the [email protected] problem is tracked at https://github.com/haskell/cabal/issues/8858
# - but curently can't run it with GHC 9.6, tracking: https://github.com/haskell/cabal/issues/8883
if: (runner.os != 'Windows') || (matrix.ghc != '9.6.3')
run: sh validate.sh $FLAGS -s lib-suite

- name: Validate cli-tests
run: sh validate.sh $FLAGS -s cli-tests

- name: Validate cli-suite
# Have to disable *-suite validation, see above the comment for lib-suite
if: (runner.os != 'Windows') || (matrix.ghc != '9.6.3')
run: sh validate.sh $FLAGS -s cli-suite

validate-old-ghcs:
Expand Down
11 changes: 11 additions & 0 deletions cabal-testsuite/PackageTests/CCompilerOverride/custom-cc-clang.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@echo OFF

where /q clang.exe

IF %ERRORLEVEL% EQU 0 (
call clang.exe -DNOERROR6 %*
EXIT /B %ERRORLEVEL%
)

ECHO "Cannot find C compiler"
EXIT /B 1
21 changes: 11 additions & 10 deletions cabal-testsuite/PackageTests/CCompilerOverride/setup.test.hs
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,17 @@ import Test.Cabal.Prelude
main = setupAndCabalTest $ do
skipUnlessGhcVersion ">= 8.8"
isWin <- isWindows
ghc94 <- isGhcVersion "== 9.4.*"
ghc94 <- isGhcVersion ">= 9.4.1"
env <- getTestEnv
let pwd = testCurrentDir env
customCC = pwd ++ "/custom-cc" ++ if isWin then ".bat" else ""
win_suffix = if ghc94 then "-clang.bat" else ".bat"
customCC =
pwd ++ "/custom-cc" ++ if isWin then win_suffix else ""

expectBrokenIf (isWin && ghc94) 8451 $ do
setup "configure"
[ "--ghc-option=-DNOERROR1"
, "--ghc-option=-optc=-DNOERROR2"
, "--ghc-option=-optP=-DNOERROR3"
, "--with-gcc=" ++ customCC
]
setup "build" ["-v2"]
setup "configure"
[ "--ghc-option=-DNOERROR1"
, "--ghc-option=-optc=-DNOERROR2"
, "--ghc-option=-optP=-DNOERROR3"
, "--with-gcc=" ++ customCC
]
setup "build" ["-v2"]
3 changes: 2 additions & 1 deletion cabal-testsuite/PackageTests/ForeignLibs/setup.test.hs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import Distribution.Simple.Program.Types
import Distribution.System
import Distribution.Verbosity
import Distribution.Version
import System.Directory

import Test.Cabal.Prelude

Expand All @@ -27,7 +28,7 @@ main = setupAndCabalTest . recordMode DoNotRecord $ do
-- Foreign libraries don't work with GHC 7.6 and earlier
skipUnlessGhcVersion ">= 7.8"
win <- isWindows
ghc94 <- isGhcVersion "== 9.4.*"
ghc94 <- isGhcVersion ">= 9.4.1"
expectBrokenIf (win && ghc94) 8451 $
withPackageDb $ do
setup_install []
Expand Down

0 comments on commit 0a177f3

Please sign in to comment.