Skip to content

Commit b419865

Browse files
authored
Merge pull request #6547 from haskell/issue-6485-unit-id-internal-lib
Include component name in unit-id
2 parents 1573dc9 + caa9be6 commit b419865

File tree

1 file changed

+47
-38
lines changed

1 file changed

+47
-38
lines changed

cabal-install/Distribution/Client/PackageHash.hs

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ import Distribution.Simple.Compiler
3838
import Distribution.Simple.InstallDirs
3939
( PathTemplate, fromPathTemplate )
4040
import Distribution.Pretty (prettyShow)
41-
import Distribution.Deprecated.Text
42-
( display )
4341
import Distribution.Types.PkgconfigVersion (PkgconfigVersion)
4442
import Distribution.Client.HashValue
4543
import Distribution.Client.Types
@@ -76,11 +74,22 @@ hashedInstalledPackageId
7674
-- without significant path length limitations (ie not Windows).
7775
--
7876
hashedInstalledPackageIdLong :: PackageHashInputs -> InstalledPackageId
79-
hashedInstalledPackageIdLong pkghashinputs@PackageHashInputs{pkgHashPkgId} =
80-
mkComponentId $
81-
display pkgHashPkgId -- to be a bit user friendly
82-
++ "-"
83-
++ showHashValue (hashPackageHashInputs pkghashinputs)
77+
hashedInstalledPackageIdLong
78+
pkghashinputs@PackageHashInputs{pkgHashPkgId,pkgHashComponent}
79+
= mkComponentId $
80+
prettyShow pkgHashPkgId -- to be a bit user friendly
81+
++ maybe "" displayComponent pkgHashComponent
82+
++ "-"
83+
++ showHashValue (hashPackageHashInputs pkghashinputs)
84+
where
85+
displayComponent :: CD.Component -> String
86+
displayComponent CD.ComponentLib = ""
87+
displayComponent (CD.ComponentSubLib s) = "-l-" ++ prettyShow s
88+
displayComponent (CD.ComponentFLib s) = "-f-" ++ prettyShow s
89+
displayComponent (CD.ComponentExe s) = "-e-" ++ prettyShow s
90+
displayComponent (CD.ComponentTest s) = "-t-" ++ prettyShow s
91+
displayComponent (CD.ComponentBench s) = "-b-" ++ prettyShow s
92+
displayComponent CD.ComponentSetup = "-setup"
8493

8594
-- | On Windows we have serious problems with path lengths. Windows imposes a
8695
-- maximum path length of 260 chars, and even if we can use the windows long
@@ -105,8 +114,8 @@ hashedInstalledPackageIdShort pkghashinputs@PackageHashInputs{pkgHashPkgId} =
105114
mkComponentId $
106115
intercalate "-"
107116
-- max length now 64
108-
[ truncateStr 14 (display name)
109-
, truncateStr 8 (display version)
117+
[ truncateStr 14 (prettyShow name)
118+
, truncateStr 8 (prettyShow version)
110119
, showHashValue (truncateHash 20 (hashPackageHashInputs pkghashinputs))
111120
]
112121
where
@@ -143,8 +152,8 @@ hashedInstalledPackageIdVeryShort :: PackageHashInputs -> InstalledPackageId
143152
hashedInstalledPackageIdVeryShort pkghashinputs@PackageHashInputs{pkgHashPkgId} =
144153
mkComponentId $
145154
intercalate "-"
146-
[ filter (not . flip elem "aeiou") (display name)
147-
, display version
155+
[ filter (not . flip elem "aeiou") (prettyShow name)
156+
, prettyShow version
148157
, showHashValue (truncateHash 4 (hashPackageHashInputs pkghashinputs))
149158
]
150159
where
@@ -250,56 +259,56 @@ renderPackageHashInputs PackageHashInputs{
250259
-- into the ghc-pkg db. At that point this should probably be changed to
251260
-- use the config file infrastructure so it can be read back in again.
252261
LBS.pack $ unlines $ catMaybes $
253-
[ entry "pkgid" display pkgHashPkgId
262+
[ entry "pkgid" prettyShow pkgHashPkgId
254263
, mentry "component" show pkgHashComponent
255264
, entry "src" showHashValue pkgHashSourceHash
256265
, entry "pkg-config-deps"
257-
(intercalate ", " . map (\(pn, mb_v) -> display pn ++
266+
(intercalate ", " . map (\(pn, mb_v) -> prettyShow pn ++
258267
case mb_v of
259268
Nothing -> ""
260269
Just v -> " " ++ prettyShow v)
261270
. Set.toList) pkgHashPkgConfigDeps
262-
, entry "deps" (intercalate ", " . map display
271+
, entry "deps" (intercalate ", " . map prettyShow
263272
. Set.toList) pkgHashDirectDeps
264273
-- and then all the config
265-
, entry "compilerid" display pkgHashCompilerId
266-
, entry "platform" display pkgHashPlatform
274+
, entry "compilerid" prettyShow pkgHashCompilerId
275+
, entry "platform" prettyShow pkgHashPlatform
267276
, opt "flags" mempty showFlagAssignment pkgHashFlagAssignment
268277
, opt "configure-script" [] unwords pkgHashConfigureScriptArgs
269-
, opt "vanilla-lib" True display pkgHashVanillaLib
270-
, opt "shared-lib" False display pkgHashSharedLib
271-
, opt "dynamic-exe" False display pkgHashDynExe
272-
, opt "fully-static-exe" False display pkgHashFullyStaticExe
273-
, opt "ghci-lib" False display pkgHashGHCiLib
274-
, opt "prof-lib" False display pkgHashProfLib
275-
, opt "prof-exe" False display pkgHashProfExe
278+
, opt "vanilla-lib" True prettyShow pkgHashVanillaLib
279+
, opt "shared-lib" False prettyShow pkgHashSharedLib
280+
, opt "dynamic-exe" False prettyShow pkgHashDynExe
281+
, opt "fully-static-exe" False prettyShow pkgHashFullyStaticExe
282+
, opt "ghci-lib" False prettyShow pkgHashGHCiLib
283+
, opt "prof-lib" False prettyShow pkgHashProfLib
284+
, opt "prof-exe" False prettyShow pkgHashProfExe
276285
, opt "prof-lib-detail" ProfDetailDefault showProfDetailLevel pkgHashProfLibDetail
277286
, opt "prof-exe-detail" ProfDetailDefault showProfDetailLevel pkgHashProfExeDetail
278-
, opt "hpc" False display pkgHashCoverage
287+
, opt "hpc" False prettyShow pkgHashCoverage
279288
, opt "optimisation" NormalOptimisation (show . fromEnum) pkgHashOptimization
280-
, opt "split-objs" False display pkgHashSplitObjs
281-
, opt "split-sections" False display pkgHashSplitSections
282-
, opt "stripped-lib" False display pkgHashStripLibs
283-
, opt "stripped-exe" True display pkgHashStripExes
289+
, opt "split-objs" False prettyShow pkgHashSplitObjs
290+
, opt "split-sections" False prettyShow pkgHashSplitSections
291+
, opt "stripped-lib" False prettyShow pkgHashStripLibs
292+
, opt "stripped-exe" True prettyShow pkgHashStripExes
284293
, opt "debug-info" NormalDebugInfo (show . fromEnum) pkgHashDebugInfo
285294
, opt "extra-lib-dirs" [] unwords pkgHashExtraLibDirs
286295
, opt "extra-framework-dirs" [] unwords pkgHashExtraFrameworkDirs
287296
, opt "extra-include-dirs" [] unwords pkgHashExtraIncludeDirs
288297
, opt "prog-prefix" Nothing (maybe "" fromPathTemplate) pkgHashProgPrefix
289298
, opt "prog-suffix" Nothing (maybe "" fromPathTemplate) pkgHashProgSuffix
290299

291-
, opt "documentation" False display pkgHashDocumentation
292-
, opt "haddock-hoogle" False display pkgHashHaddockHoogle
293-
, opt "haddock-html" False display pkgHashHaddockHtml
300+
, opt "documentation" False prettyShow pkgHashDocumentation
301+
, opt "haddock-hoogle" False prettyShow pkgHashHaddockHoogle
302+
, opt "haddock-html" False prettyShow pkgHashHaddockHtml
294303
, opt "haddock-html-location" Nothing (fromMaybe "") pkgHashHaddockHtmlLocation
295-
, opt "haddock-foreign-libraries" False display pkgHashHaddockForeignLibs
296-
, opt "haddock-executables" False display pkgHashHaddockExecutables
297-
, opt "haddock-tests" False display pkgHashHaddockTestSuites
298-
, opt "haddock-benchmarks" False display pkgHashHaddockBenchmarks
299-
, opt "haddock-internal" False display pkgHashHaddockInternal
304+
, opt "haddock-foreign-libraries" False prettyShow pkgHashHaddockForeignLibs
305+
, opt "haddock-executables" False prettyShow pkgHashHaddockExecutables
306+
, opt "haddock-tests" False prettyShow pkgHashHaddockTestSuites
307+
, opt "haddock-benchmarks" False prettyShow pkgHashHaddockBenchmarks
308+
, opt "haddock-internal" False prettyShow pkgHashHaddockInternal
300309
, opt "haddock-css" Nothing (fromMaybe "") pkgHashHaddockCss
301-
, opt "haddock-hyperlink-source" False display pkgHashHaddockLinkedSource
302-
, opt "haddock-quickjump" False display pkgHashHaddockQuickJump
310+
, opt "haddock-hyperlink-source" False prettyShow pkgHashHaddockLinkedSource
311+
, opt "haddock-quickjump" False prettyShow pkgHashHaddockQuickJump
303312
, opt "haddock-contents-location" Nothing (maybe "" fromPathTemplate) pkgHashHaddockContents
304313

305314
] ++ Map.foldrWithKey (\prog args acc -> opt (prog ++ "-options") [] unwords args : acc) [] pkgHashProgramArgs

0 commit comments

Comments
 (0)