diff --git a/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs b/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs index 760f4295c93d5917c0e31a0765cdc24d5ede2262..36e5d075b5c03fd71429262df7577a3b1894e7bb 100644 --- a/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs +++ b/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs @@ -144,17 +144,21 @@ configurePackage context@Context {..} = do need deps -- Figure out what hooks we need. + let configureFile = replaceFileName (pkgCabalFile package) "configure" + -- induce dependency on the file + autoconfUserHooks = do + need [configureFile] + pure C.autoconfUserHooks hooks <- case C.buildType (C.flattenPackageDescription gpd) of - C.Configure -> pure C.autoconfUserHooks + C.Configure -> autoconfUserHooks C.Simple -> pure C.simpleUserHooks C.Make -> fail "build-type: Make is not supported" -- The 'time' package has a 'C.Custom' Setup.hs, but it's actually -- 'C.Configure' plus a @./Setup test@ hook. However, Cabal is also -- 'C.Custom', but doesn't have a configure script. C.Custom -> do - configureExists <- doesFileExist $ - replaceFileName (pkgCabalFile package) "configure" - pure $ if configureExists then C.autoconfUserHooks else C.simpleUserHooks + configureExists <- doesFileExist configureFile + if configureExists then autoconfUserHooks else pure C.simpleUserHooks -- Compute the list of flags, and the Cabal configuration arguments flagList <- interpret (target context (Cabal Flags stage) [] []) getArgs