diff options
-rw-r--r-- | hadrian/src/Hadrian/Haskell/Cabal.hs | 20 | ||||
-rw-r--r-- | hadrian/src/Rules/BinaryDist.hs | 6 |
2 files changed, 22 insertions, 4 deletions
diff --git a/hadrian/src/Hadrian/Haskell/Cabal.hs b/hadrian/src/Hadrian/Haskell/Cabal.hs index 327e6a0618..91de7b2bb2 100644 --- a/hadrian/src/Hadrian/Haskell/Cabal.hs +++ b/hadrian/src/Hadrian/Haskell/Cabal.hs @@ -11,7 +11,8 @@ ----------------------------------------------------------------------------- module Hadrian.Haskell.Cabal ( pkgVersion, pkgIdentifier, pkgSynopsis, pkgDescription, pkgDependencies, - pkgGenericDescription + pkgGenericDescription, + cabalArchString, cabalOsString, ) where import Development.Shake @@ -54,3 +55,20 @@ pkgDependencies = fmap (map pkgName . packageDependencies) . readPackageData -- file is tracked. pkgGenericDescription :: Package -> Action GenericPackageDescription pkgGenericDescription = fmap genericPackageDescription . readPackageData + +-- | Cabal's rendering of an architecture as used in its directory structure. +-- +-- Inverse of 'Cabal.Distribution.Simple.GHC.ghcArchString'. +cabalArchString :: String -> String +cabalArchString "powerpc" = "ppc" +cabalArchString "powerpc64" = "ppc64" +cabalArchString other = other + +-- | Cabal's rendering of an OS as used in its directory structure. +-- +-- Inverse of 'Cabal.Distribution.Simple.GHC.ghcOsString'. +cabalOsString :: String -> String +cabalOsString "mingw32" = "windows" +cabalOsString "darwin" = "osx" +cabalOsString "solaris2" = "solaris" +cabalOsString other = other diff --git a/hadrian/src/Rules/BinaryDist.hs b/hadrian/src/Rules/BinaryDist.hs index f0aeb4b827..667fbf1454 100644 --- a/hadrian/src/Rules/BinaryDist.hs +++ b/hadrian/src/Rules/BinaryDist.hs @@ -19,14 +19,14 @@ bindistRules = do need targets version <- setting ProjectVersion targetPlatform <- setting TargetPlatformFull - hostOs <- setting BuildOs - hostArch <- setting BuildArch + cabalHostOs <- cabalOsString <$> setting BuildOs + cabalHostArch <- cabalArchString <$> setting BuildArch rtsDir <- pkgIdentifier rts let ghcBuildDir = root -/- stageString Stage1 bindistFilesDir = root -/- "bindist" -/- ghcVersionPretty ghcVersionPretty = "ghc-" ++ version ++ "-" ++ targetPlatform - distDir = hostArch ++ "-" ++ hostOs ++ "-ghc-" ++ version + distDir = cabalHostArch ++ "-" ++ cabalHostOs ++ "-ghc-" ++ version rtsIncludeDir = ghcBuildDir -/- "lib" -/- distDir -/- rtsDir -/- "include" |