Skip to content

Commit

Permalink
MERGE: Fix local inplace registration for ghc-6.12
Browse files Browse the repository at this point in the history
Version of this patch for 1.8 branch that does not change external API.
  • Loading branch information
dcoutts committed Mar 21, 2010
1 parent bb9f705 commit 40cb83f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
21 changes: 16 additions & 5 deletions Distribution/Simple/Build.hs
Expand Up @@ -62,12 +62,13 @@ import qualified Distribution.Simple.Build.Macros as Build.Macros
import qualified Distribution.Simple.Build.PathsModule as Build.PathsModule

import Distribution.Package
( Package(..) )
( Package(..), PackageId, InstalledPackageId(..) )
import Distribution.Simple.Compiler
( CompilerFlavor(..), compilerFlavor, PackageDB(..) )
import Distribution.PackageDescription
( PackageDescription(..), BuildInfo(..)
, Library(..), Executable(..) )
import qualified Distribution.InstalledPackageInfo as IPI
import qualified Distribution.ModuleName as ModuleName

import Distribution.Simple.Setup
Expand All @@ -80,7 +81,7 @@ import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.BuildPaths
( autogenModulesDir, autogenModuleName, cppHeaderName )
import Distribution.Simple.Register
( registerPackage, generateRegistrationInfo )
( registerPackage, inplaceInstalledPackageInfo )
import Distribution.Simple.Utils
( createDirectoryIfMissingVerbose, rewriteFile
, die, info, setupMessage )
Expand All @@ -96,6 +97,8 @@ import Control.Monad
( unless )
import System.FilePath
( (</>), (<.>) )
import System.Directory
( getCurrentDirectory )

-- -----------------------------------------------------------------------------
-- |Build the libraries and executables in this package.
Expand All @@ -117,11 +120,15 @@ build pkg_descr lbi flags suffixes = do
info verbosity "Building library..."
buildLib verbosity pkg_descr lbi lib clbi

installedPkgInfo <- generateRegistrationInfo verbosity pkg_descr lib
lbi clbi True{-inplace-} distPref

-- Register the library in-place, so exes can depend
-- on internally defined libraries.
pwd <- getCurrentDirectory
let installedPkgInfo =
(inplaceInstalledPackageInfo pwd distPref pkg_descr lib lbi clbi) {
-- The inplace registration uses the "-inplace" suffix,
-- not an ABI hash.
IPI.installedPackageId = inplacePackageId (packageId installedPkgInfo)
}
registerPackage verbosity
installedPkgInfo pkg_descr lbi True{-inplace-} internalPackageDB

Expand All @@ -132,6 +139,10 @@ build pkg_descr lbi flags suffixes = do
info verbosity $ "Building executable " ++ exeName exe ++ "..."
buildExe verbosity pkg_descr lbi' exe clbi

-- Quick hack in 1.8 branch, it's done properly in HEAD
inplacePackageId :: PackageId -> InstalledPackageId
inplacePackageId pkgid = InstalledPackageId (display pkgid ++ "-inplace")

-- | Initialize a new package db file for libraries defined
-- internally to the package.
createInternalPackageDB :: FilePath -> IO PackageDB
Expand Down
6 changes: 5 additions & 1 deletion Distribution/Simple/Configure.hs
Expand Up @@ -455,7 +455,7 @@ configure (pkg_descr0, pbi) cfg
if newPackageDepsBehaviour pkg_descr'
then [ (installedPackageId pkg, packageId pkg)
| pkg <- selectSubset bi externalPkgDeps ]
++ [ (InstalledPackageId (display pkgid), pkgid)
++ [ (inplacePackageId pkgid, pkgid)
| pkgid <- selectSubset bi internalPkgDeps ]
else [ (installedPackageId pkg, packageId pkg)
| pkg <- externalPkgDeps ]
Expand Down Expand Up @@ -531,6 +531,10 @@ configure (pkg_descr0, pbi) cfg
in pkg_descr{ library = modifyLib `fmap` library pkg_descr
, executables = modifyExecutable `map` executables pkg_descr}

-- Quick hack in 1.8 branch, it's done properly in HEAD
inplacePackageId :: PackageId -> InstalledPackageId
inplacePackageId pkgid = InstalledPackageId (display pkgid ++ "-inplace")

-- -----------------------------------------------------------------------------
-- Configuring package dependencies

Expand Down

0 comments on commit 40cb83f

Please sign in to comment.