diff --git a/cabal-install/src/Distribution/Client/ProjectOrchestration.hs b/cabal-install/src/Distribution/Client/ProjectOrchestration.hs index ccbd84d43c3..0060894b94b 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 00000000000..bbedd1662c8 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out @@ -0,0 +1,8 @@ +# cabal build +Resolving dependencies... +Build profile: -w ghc- -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 00000000000..e6fdbadb439 --- /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 00000000000..010c47ea4b4 --- /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 00000000000..9f3421cdcb2 --- /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 00000000000..e657c4403f6 --- /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 00000000000..f48ee85d008 --- /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 00000000000..432c74d81d6 --- /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- -O1'. This is incorrect and was fixed +in this patch: now you'll see '-O2'. +}