summaryrefslogtreecommitdiff
path: root/lang/ghc96/files
diff options
context:
space:
mode:
Diffstat (limited to 'lang/ghc96/files')
-rw-r--r--lang/ghc96/files/UserSettings.hs75
-rw-r--r--lang/ghc96/files/patch-hadrian_hadrian.cabal15
-rw-r--r--lang/ghc96/files/patch-hadrian_src_Hadrian_Haskell_Cabal_Parse.hs13
3 files changed, 103 insertions, 0 deletions
diff --git a/lang/ghc96/files/UserSettings.hs b/lang/ghc96/files/UserSettings.hs
new file mode 100644
index 000000000000..01d8b0187f06
--- /dev/null
+++ b/lang/ghc96/files/UserSettings.hs
@@ -0,0 +1,75 @@
+-- Ensure we don't expose any unfoldings to guarantee quick rebuilds
+{-# OPTIONS_GHC -O0 #-}
+
+-- If you want to customise your build you should copy this file from
+-- hadrian/src/UserSettings.hs to hadrian/UserSettings.hs and edit your copy.
+-- If you don't copy the file your changes will be tracked by git and you can
+-- accidentally commit them.
+--
+-- See doc/user-settings.md for instructions, and src/Flavour.hs for auxiliary
+-- functions for manipulating flavours.
+-- Please update doc/user-settings.md when committing changes to this file.
+module UserSettings (
+ userFlavours, userPackages, userDefaultFlavour,
+ verboseCommand, buildProgressColour, successColour, finalStage
+ ) where
+
+import qualified Data.Set as Set
+import Flavour.Type
+import Expression
+import {-# SOURCE #-} Settings.Default
+
+-- See doc/user-settings.md for instructions.
+-- Please update doc/user-settings.md when committing changes to this file.
+
+-- | Name of the default flavour, i.e the one used when no --flavour=<name>
+-- argument is passed to Hadrian.
+userDefaultFlavour :: String
+userDefaultFlavour = "default"
+
+-- | User-defined build flavours. See 'userFlavour' as an example.
+userFlavours :: [Flavour]
+userFlavours = [userFlavour] -- Add more build flavours if need be.
+
+-- | This is an example user-defined build flavour. Feel free to modify it and
+-- use by passing @--flavour=user@ from the command line.
+userFlavour :: Flavour
+userFlavour = defaultFlavour {
+ name = "ports"
+ , libraryWays = Set.difference <$> defaultLibraryWays <*> pure ws
+ , dynamicGhcPrograms = pure %%DYNAMIC%%
+-- , ghcProfiled = %%PROFILE%%
+ }
+ where
+ ws = Set.fromList $ concat [
+ if %%DYNAMIC%% then [] else [dynamic]
+ , if %%PROFILE%% then [] else [profiling]]
+
+-- | Add user-defined packages. Note, this only lets Hadrian know about the
+-- existence of a new package; to actually build it you need to create a new
+-- build flavour, modifying the list of packages that are built by default.
+userPackages :: [Package]
+userPackages = []
+
+-- | Set to 'True' to print full command lines during the build process. Note:
+-- this is a 'Predicate', hence you can enable verbose output only for certain
+-- targets, e.g.: @verboseCommand = package ghcPrim@.
+verboseCommand :: Predicate
+verboseCommand = do
+ verbosity <- expr getVerbosity
+ return $ verbosity >= Verbose
+
+-- | Set colour for build progress messages (e.g. executing a build command).
+buildProgressColour :: BuildProgressColour
+buildProgressColour = mkBuildProgressColour (Dull Magenta)
+
+-- | Set colour for success messages (e.g. a package is built successfully).
+successColour :: SuccessColour
+successColour = mkSuccessColour (Dull Green)
+
+-- | Stop after building the StageN compiler.
+-- For example, setting the 'finalStage' to 'Stage1' will just build the
+-- 'Stage1' compiler. Setting it to 'Stage3' will build the 'Stage3'
+-- compiler. Setting it to 'Stage0' will mean nothing gets built at all.
+finalStage :: Stage
+finalStage = Stage2
diff --git a/lang/ghc96/files/patch-hadrian_hadrian.cabal b/lang/ghc96/files/patch-hadrian_hadrian.cabal
new file mode 100644
index 000000000000..7994110951d4
--- /dev/null
+++ b/lang/ghc96/files/patch-hadrian_hadrian.cabal
@@ -0,0 +1,15 @@
+Hack the bounds to avoid re-rolling the bootstrap compiler.
+The bound was added due to https://gitlab.haskell.org/ghc/ghc/-/issues/24382
+but we somehow doesn't seem to be affected by this
+
+--- hadrian/hadrian.cabal.orig 2025-03-02 13:05:33 UTC
++++ hadrian/hadrian.cabal
+@@ -155,7 +155,7 @@ executable hadrian
+ , containers >= 0.5 && < 0.7
+ -- N.B. directory >=1.3.9 as earlier versions are
+ -- afflicted by #24382.
+- , directory >= 1.3.9.0 && < 1.4
++ , directory < 1.4
+ , extra >= 1.4.7
+ , filepath
+ , time
diff --git a/lang/ghc96/files/patch-hadrian_src_Hadrian_Haskell_Cabal_Parse.hs b/lang/ghc96/files/patch-hadrian_src_Hadrian_Haskell_Cabal_Parse.hs
new file mode 100644
index 000000000000..528e592425f4
--- /dev/null
+++ b/lang/ghc96/files/patch-hadrian_src_Hadrian_Haskell_Cabal_Parse.hs
@@ -0,0 +1,13 @@
+--- hadrian/src/Hadrian/Haskell/Cabal/Parse.hs.orig 2025-03-02 13:05:33 UTC
++++ hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
+@@ -321,8 +321,8 @@ write_inplace_conf pkg_path res_path pd lbi = do
+ pkg_name = C.display (C.pkgName (CP.sourcePackageId installedPkgInfo))
+ final_ipi = installedPkgInfo {
+ Installed.includeDirs = concatMap fixupIncludeDir (Installed.includeDirs installedPkgInfo),
+- Installed.libraryDirs = [ build_dir ],
+- Installed.libraryDynDirs = [ build_dir ],
++ Installed.libraryDirs = [ build_dir ] ++ Installed.libraryDirs installedPkgInfo,
++ Installed.libraryDynDirs = [ build_dir ] ++ Installed.libraryDynDirs installedPkgInfo,
+ Installed.dataDir = "${pkgroot}/../../../../" ++ pkg_path,
+ Installed.haddockHTMLs = [build_dir ++ "/doc/html/" ++ C.display (CP.sourcePackageId installedPkgInfo)],
+ Installed.haddockInterfaces = [build_dir ++ "/doc/html/" ++ pkg_name ++ "/" ++ pkg_name ++ ".haddock"],