@@ -55,9 +55,12 @@ import Data.Time
55
55
( ZonedTime , getZonedTime , formatTime , defaultTimeLocale )
56
56
import qualified Data.ByteString.Char8 as S8
57
57
import qualified Distribution.PackageDescription as C
58
+ import Distribution.Pretty ( prettyShow )
58
59
import qualified Distribution.Simple.Build.Macros as C
59
60
import Distribution.System ( OS (Windows ), Platform (Platform ) )
60
61
import qualified Distribution.Text as C
62
+ import Distribution.Types.MungedPackageName
63
+ ( encodeCompatPackageName )
61
64
import Distribution.Types.PackageName ( mkPackageName )
62
65
import Distribution.Types.UnqualComponentName
63
66
( mkUnqualComponentName )
@@ -1619,7 +1622,7 @@ singleBuild ac@ActionContext {..} ee@ExecuteEnv {..} task@Task {..} installedMap
1619
1622
liftIO $ atomically $
1620
1623
modifyTVar eeGhcPkgIds $ Map. insert taskProvides installed
1621
1624
where
1622
- pname = pkgName taskProvides
1625
+ PackageIdentifier pname pversion = taskProvides
1623
1626
doHaddock mcurator package =
1624
1627
taskBuildHaddock
1625
1628
&& not isFinalBuild
@@ -1710,20 +1713,17 @@ singleBuild ac@ActionContext {..} ee@ExecuteEnv {..} task@Task {..} installedMap
1710
1713
-- However, we must unregister any such library in the new snapshot, in case
1711
1714
-- it was built with different flags.
1712
1715
let
1713
- subLibNames = map T. unpack . Set. toList $ case taskType of
1716
+ subLibNames = Set. toList $ case taskType of
1714
1717
TTLocalMutable lp -> packageInternalLibraries $ lpPackage lp
1715
1718
TTRemotePackage _ p _ -> packageInternalLibraries p
1716
- PackageIdentifier name version = taskProvides
1717
- mainLibName = packageNameString name
1718
- mainLibVersion = versionString version
1719
- pkgName = mainLibName ++ " -" ++ mainLibVersion
1720
- -- z-package-z-internal for internal lib internal of package package
1721
- toCabalInternalLibName n =
1722
- concat [" z-" , mainLibName, " -z-" , n, " -" , mainLibVersion]
1723
- allToUnregister =
1724
- map (const pkgName) (maybeToList mlib)
1725
- ++ map toCabalInternalLibName subLibNames
1726
- allToRegister = maybeToList mlib ++ sublibs
1719
+ toMungedPackageId :: Text -> MungedPackageId
1720
+ toMungedPackageId sublib =
1721
+ let sublibName = LSubLibName $ mkUnqualComponentName $ T. unpack sublib
1722
+ in MungedPackageId (MungedPackageName pname sublibName) pversion
1723
+ allToUnregister = mcons
1724
+ (prettyShow taskProvides <$ mlib)
1725
+ (map (prettyShow . toMungedPackageId) subLibNames)
1726
+ allToRegister = mcons mlib sublibs
1727
1727
1728
1728
unless (null allToRegister) $
1729
1729
withMVar eeInstallLock $ \ () -> do
@@ -2027,21 +2027,13 @@ singleBuild ac@ActionContext {..} ee@ExecuteEnv {..} task@Task {..} installedMap
2027
2027
HasLibraries _ -> do
2028
2028
sublibsPkgIds <- fmap catMaybes $
2029
2029
forM (Set. toList $ packageInternalLibraries package) $ \ sublib -> do
2030
- -- z-haddock-library-z-attoparsec for internal lib attoparsec of
2031
- -- haddock-library
2032
- let sublibName = T. concat
2033
- [ " z-"
2034
- , T. pack $ packageNameString $ packageName package
2035
- , " -z-"
2036
- , sublib
2037
- ]
2038
- case parsePackageName $ T. unpack sublibName of
2039
- Nothing -> pure Nothing -- invalid lib, ignored
2040
- Just subLibName ->
2041
- loadInstalledPkg
2042
- [installedPkgDb]
2043
- installedDumpPkgsTVar
2044
- subLibName
2030
+ let sublibName = MungedPackageName
2031
+ (packageName package)
2032
+ (LSubLibName $ mkUnqualComponentName $ T. unpack sublib)
2033
+ loadInstalledPkg
2034
+ [installedPkgDb]
2035
+ installedDumpPkgsTVar
2036
+ (encodeCompatPackageName sublibName)
2045
2037
2046
2038
mpkgid <- loadInstalledPkg
2047
2039
[installedPkgDb]
@@ -2080,6 +2072,11 @@ singleBuild ac@ActionContext {..} ee@ExecuteEnv {..} task@Task {..} installedMap
2080
2072
2081
2073
pure mpkgid
2082
2074
2075
+ loadInstalledPkg ::
2076
+ [Path Abs Dir ]
2077
+ -> TVar (Map GhcPkgId DumpPackage )
2078
+ -> PackageName
2079
+ -> RIO env (Maybe GhcPkgId )
2083
2080
loadInstalledPkg pkgDbs tvar name = do
2084
2081
pkgexe <- getGhcPkgExe
2085
2082
dps <- ghcPkgDescribe pkgexe name pkgDbs $ conduitDumpPackage .| CL. consume
@@ -2098,7 +2095,9 @@ singleBuild ac@ActionContext {..} ee@ExecuteEnv {..} task@Task {..} installedMap
2098
2095
-- .stack-work/dist/x86_64-osx/Cabal-1.22.4.0/build/alpha/alpha.jsexe/ (NOTE: a dir)
2099
2096
getExecutableBuildStatuses ::
2100
2097
HasEnvConfig env
2101
- => Package -> Path Abs Dir -> RIO env (Map Text ExecutableBuildStatus )
2098
+ => Package
2099
+ -> Path Abs Dir
2100
+ -> RIO env (Map Text ExecutableBuildStatus )
2102
2101
getExecutableBuildStatuses package pkgDir = do
2103
2102
distDir <- distDirFromDir pkgDir
2104
2103
platform <- view platformL
0 commit comments