diff options
Diffstat (limited to 'pkgs/development/compilers/ghc/Cabal-3.2-3.4-paths-fix-cycle-aarch64-darwin.patch')
-rw-r--r-- | pkgs/development/compilers/ghc/Cabal-3.2-3.4-paths-fix-cycle-aarch64-darwin.patch | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/pkgs/development/compilers/ghc/Cabal-3.2-3.4-paths-fix-cycle-aarch64-darwin.patch b/pkgs/development/compilers/ghc/Cabal-3.2-3.4-paths-fix-cycle-aarch64-darwin.patch new file mode 100644 index 00000000000..19adcf5388b --- /dev/null +++ b/pkgs/development/compilers/ghc/Cabal-3.2-3.4-paths-fix-cycle-aarch64-darwin.patch @@ -0,0 +1,99 @@ +diff --git a/Cabal/Distribution/Simple/Build/PathsModule.hs b/Cabal/Distribution/Simple/Build/PathsModule.hs +index 5e660e8d6..1ae603c94 100644 +--- a/libraries/Cabal/Cabal/Distribution/Simple/Build/PathsModule.hs ++++ b/libraries/Cabal/Cabal/Distribution/Simple/Build/PathsModule.hs +@@ -37,6 +37,9 @@ import System.FilePath ( pathSeparator ) + -- * Building Paths_<pkg>.hs + -- ------------------------------------------------------------ + ++splitPath :: FilePath -> [ String ] ++splitPath = unintersperse pathSeparator ++ + generatePathsModule :: PackageDescription -> LocalBuildInfo -> ComponentLocalBuildInfo -> String + generatePathsModule pkg_descr lbi clbi = + let pragmas = +@@ -78,12 +81,44 @@ generatePathsModule pkg_descr lbi clbi = + "import System.Environment (getExecutablePath)\n" + | otherwise = "" + ++ dirs = [ (flat_libdir, "LibDir") ++ , (flat_dynlibdir, "DynLibDir") ++ , (flat_datadir, "DataDir") ++ , (flat_libexecdir, "LibexecDir") ++ , (flat_sysconfdir, "SysconfDir") ]; ++ ++ shouldEmitPath p ++ | (splitPath flat_prefix) `isPrefixOf` (splitPath flat_bindir) = True ++ | (splitPath flat_prefix) `isPrefixOf` (splitPath p) = False ++ | otherwise = True ++ ++ shouldEmitDataDir = shouldEmitPath flat_datadir ++ ++ nixEmitPathFn (path, name) = let ++ varName = toLower <$> name ++ fnName = "get"++name ++ in if shouldEmitPath path then ++ varName ++ " :: FilePath\n"++ ++ varName ++ " = " ++ show path ++ ++ "\n" ++ fnName ++ " :: IO FilePath" ++ ++ "\n" ++ fnName ++ " = " ++ mkGetEnvOr varName ("return " ++ varName)++"\n" ++ else "" ++ ++ absBody = intercalate "\n" $ nixEmitPathFn <$> dirs ++ ++ warnPragma = case filter (not . shouldEmitPath . fst) dirs of ++ [] -> "" ++ omittedDirs -> "{-# WARNING \"The functions: "++omittedFns++" Have been omitted by the Nix build system.\" #-}" ++ where omittedFns = intercalate ", " $ map snd omittedDirs ++ ++ importList = intercalate ", " $ ("get" ++) . snd <$> filter (shouldEmitPath . fst) dirs ++ + header = + pragmas++ +- "module " ++ prettyShow paths_modulename ++ " (\n"++ +- " version,\n"++ +- " getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir,\n"++ +- " getDataFileName, getSysconfDir\n"++ ++ "module " ++ prettyShow paths_modulename ++ " " ++ warnPragma ++ " (\n"++ ++ " version, getBinDir,\n"++ ++ (if shouldEmitDataDir then " getDataFileName, \n" else "\n")++ ++ " " ++ importList ++"\n"++ + " ) where\n"++ + "\n"++ + foreign_imports++ +@@ -136,26 +171,18 @@ generatePathsModule pkg_descr lbi clbi = + "\n"++ + filename_stuff + | absolute = +- "\nbindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath\n"++ ++ "\nbindir :: FilePath\n"++ + "\nbindir = " ++ show flat_bindir ++ +- "\nlibdir = " ++ show flat_libdir ++ +- "\ndynlibdir = " ++ show flat_dynlibdir ++ +- "\ndatadir = " ++ show flat_datadir ++ +- "\nlibexecdir = " ++ show flat_libexecdir ++ +- "\nsysconfdir = " ++ show flat_sysconfdir ++ + "\n"++ +- "\ngetBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath\n"++ ++ "\ngetBinDir :: IO FilePath\n"++ + "getBinDir = "++mkGetEnvOr "bindir" "return bindir"++"\n"++ +- "getLibDir = "++mkGetEnvOr "libdir" "return libdir"++"\n"++ +- "getDynLibDir = "++mkGetEnvOr "dynlibdir" "return dynlibdir"++"\n"++ +- "getDataDir = "++mkGetEnvOr "datadir" "return datadir"++"\n"++ +- "getLibexecDir = "++mkGetEnvOr "libexecdir" "return libexecdir"++"\n"++ +- "getSysconfDir = "++mkGetEnvOr "sysconfdir" "return sysconfdir"++"\n"++ +- "\n"++ +- "getDataFileName :: FilePath -> IO FilePath\n"++ +- "getDataFileName name = do\n"++ +- " dir <- getDataDir\n"++ +- " return (dir ++ "++path_sep++" ++ name)\n" ++ absBody ++ "\n"++ ++ (if shouldEmitDataDir then ++ "getDataFileName :: FilePath -> IO FilePath\n"++ ++ "getDataFileName name = do\n"++ ++ " dir <- getDataDir\n"++ ++ " return (dir ++ "++path_sep++" ++ name)\n" ++ else "\n") + | otherwise = + "\nprefix, bindirrel :: FilePath" ++ + "\nprefix = " ++ show flat_prefix ++ |