import Distribution.Simple.Configure
import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.Program
-import Distribution.Simple.Utils (defaultPackageDesc)
+import Distribution.Simple.Utils (defaultPackageDesc, writeFileAtomic)
import Distribution.Simple.Build (writeAutogenFiles)
-import Distribution.Simple.Register (writeInstalledConfig)
+import Distribution.Simple.Register
import Distribution.Simple.PackageIndex
import Distribution.Text
import Distribution.Verbosity
import qualified Distribution.InstalledPackageInfo as Installed
- ( InstalledPackageInfo_(..) )
import qualified Distribution.Simple.PackageIndex as PackageIndex
- ( topologicalOrder, lookupPackageName, insert )
import Control.Monad
import Data.Maybe
withArgs (["configure", "--distdir", distdir] ++ config_args)
(case buildType (flattenPackageDescription gpd) of
Just Configure -> defaultMainWithHooks autoconfUserHooks
- _other -> defaultMain)
- -- not quite right, but good enough for us
+ -- time has a "Custom" Setup.hs, but it's actually Configure
+ -- plus a "./Setup test" hook. However, Cabal is also
+ -- "Custom", but doesn't have a configure script.
+ Just Custom ->
+ do configureExists <- doesFileExist "configure"
+ if configureExists
+ then defaultMainWithHooks autoconfUserHooks
+ else defaultMain
+ -- not quite right, but good enough for us:
+ _ -> defaultMain)
lbi <- getPersistBuildConfig distdir
let pd0 = localPkgDescr lbi
writeAutogenFiles verbosity pd lbi
-- generate inplace-pkg-config
- when (isJust $ library pd) $
- writeInstalledConfig distdir pd lbi True
- (distdir </> "inplace-pkg-config")
+ case (library pd, libraryConfig lbi) of
+ (Nothing, Nothing) -> return ()
+ (Just lib, Just clbi) -> do
+ cwd <- getCurrentDirectory
+ let installedPkgInfo = inplaceInstalledPackageInfo cwd distdir
+ pd lib lbi clbi
+ content = Installed.showInstalledPackageInfo installedPkgInfo ++ "\n"
+ writeFileAtomic (distdir </> "inplace-pkg-config") content
+ _ -> error "Inconsistent lib components; can't happen?"
let
libBiModules lib = (libBuildInfo lib, libModules lib)