diff --git a/cabal-install/src/Distribution/Client/ProjectOrchestration.hs b/cabal-install/src/Distribution/Client/ProjectOrchestration.hs index ccbd84d43c31c71aecc1e5166606350d51d960e9..0060894b94beb35908745d956bee5e497161f275 100644 --- a/cabal-install/src/Distribution/Client/ProjectOrchestration.hs +++ b/cabal-install/src/Distribution/Client/ProjectOrchestration.hs @@ -859,8 +859,10 @@ printPlan verbosity ProjectBaseContext { buildSettings = BuildTimeSettings{buildSettingDryRun}, projectConfig = ProjectConfig { + projectConfigAllPackages = + PackageConfig {packageConfigOptimization = globalOptimization}, projectConfigLocalPackages = - PackageConfig {packageConfigOptimization} + PackageConfig {packageConfigOptimization = localOptimization} } } ProjectBuildContext { @@ -994,7 +996,7 @@ printPlan verbosity showBuildProfile :: String showBuildProfile = "Build profile: " ++ unwords [ "-w " ++ (showCompilerId . pkgConfigCompiler) elaboratedShared, - "-O" ++ (case packageConfigOptimization of + "-O" ++ (case globalOptimization <> localOptimization of -- if local is not set, read global Setup.Flag NoOptimisation -> "0" Setup.Flag NormalOptimisation -> "1" Setup.Flag MaximumOptimisation -> "2" diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out new file mode 100644 index 0000000000000000000000000000000000000000..bbedd1662c888792db25b4ba773566c0bb36e9e9 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out @@ -0,0 +1,8 @@ +# cabal build +Resolving dependencies... +Build profile: -w ghc-<GHCVER> -O2 +In order, the following will be built: + - test-0.1.0.0 (lib) (first run) +Configuring library for test-0.1.0.0.. +Preprocessing library for test-0.1.0.0.. +Building library for test-0.1.0.0.. diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.project b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.project new file mode 100644 index 0000000000000000000000000000000000000000..e6fdbadb4398bc0e333947b5fb8021778310d943 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.project @@ -0,0 +1 @@ +packages: . diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.test.hs b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.test.hs new file mode 100644 index 0000000000000000000000000000000000000000..010c47ea4b4734b7c9d0e2632ec0261f9b78bec2 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.test.hs @@ -0,0 +1,7 @@ +-- 2022-09-20, issue #8487 +-- + +import Test.Cabal.Prelude + +main = cabalTest $ do + cabalG [ "--config-file", "config.file" ] "build" [ "test" ] diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/config.file b/cabal-testsuite/PackageTests/ConfigFile/T8487/config.file new file mode 100644 index 0000000000000000000000000000000000000000..9f3421cdcb2d94ad33db5d9222918f1faace3ee0 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/config.file @@ -0,0 +1 @@ +optimization: 2 diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/src/MyLib.hs b/cabal-testsuite/PackageTests/ConfigFile/T8487/src/MyLib.hs new file mode 100644 index 0000000000000000000000000000000000000000..e657c4403f66f966da13d2027bf595d9673387f6 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/src/MyLib.hs @@ -0,0 +1,4 @@ +module MyLib (someFunc) where + +someFunc :: IO () +someFunc = putStrLn "someFunc" diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/test.cabal b/cabal-testsuite/PackageTests/ConfigFile/T8487/test.cabal new file mode 100644 index 0000000000000000000000000000000000000000..f48ee85d0084f95759d9742f3ff91622831ce968 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/test.cabal @@ -0,0 +1,13 @@ +cabal-version: 3.0 +name: test +version: 0.1.0.0 +license: NONE +author: a.pelenitsyn@gmail.com +maintainer: Artem Pelenitsyn +build-type: Simple + +library + exposed-modules: MyLib + build-depends: base + hs-source-dirs: src + default-language: Haskell2010 diff --git a/changelog.d/issue-8487 b/changelog.d/issue-8487 new file mode 100644 index 0000000000000000000000000000000000000000..432c74d81d6df74b283fcf174cc9d9134f4c66a2 --- /dev/null +++ b/changelog.d/issue-8487 @@ -0,0 +1,12 @@ +synopsis: "Build profile" message now reflects optimization level set in global config +packages: cabal-install +prs: #8488 +issues: #8487 + +description: { + +Imagine you have `optimization: 2` in your `~/.cabal/config`, and you call `cabal build` +in a project that doesn't have optimization level explicitly set in its project file. +You will still see 'Build profile: -w ghc-<VER> -O1'. This is incorrect and was fixed +in this patch: now you'll see '-O2'. +}