Skip to content
Snippets Groups Projects
Commit e72a225b authored by patrickdoc's avatar patrickdoc Committed by Mergify
Browse files

Apply command line flags to install packages (#8637) (#8779)


* Apply command line flags to install packages (#8637)

* remove expectBroken on NonIgnoredConfigs test

---------

Co-authored-by: default avatargbaz <gershomb@gmail.com>
(cherry picked from commit 76670ebd)
parent bc7a1f17
No related branches found
No related tags found
No related merge requests found
...@@ -39,7 +39,7 @@ import Distribution.Client.Types ...@@ -39,7 +39,7 @@ import Distribution.Client.Types
, SourcePackageDb(..) ) , SourcePackageDb(..) )
import qualified Distribution.Client.InstallPlan as InstallPlan import qualified Distribution.Client.InstallPlan as InstallPlan
import Distribution.Package import Distribution.Package
( Package(..), PackageName, unPackageName ) ( Package(..), PackageName, mkPackageName, unPackageName )
import Distribution.Types.PackageId import Distribution.Types.PackageId
( PackageIdentifier(..) ) ( PackageIdentifier(..) )
import Distribution.Client.ProjectConfig import Distribution.Client.ProjectConfig
...@@ -53,6 +53,7 @@ import Distribution.Client.ProjectFlags (ProjectFlags (..)) ...@@ -53,6 +53,7 @@ import Distribution.Client.ProjectFlags (ProjectFlags (..))
import Distribution.Client.ProjectConfig.Types import Distribution.Client.ProjectConfig.Types
( ProjectConfig(..), ProjectConfigShared(..) ( ProjectConfig(..), ProjectConfigShared(..)
, ProjectConfigBuildOnly(..), PackageConfig(..) , ProjectConfigBuildOnly(..), PackageConfig(..)
, MapMappend(..)
, getMapLast, getMapMappend, projectConfigLogsDir , getMapLast, getMapMappend, projectConfigLogsDir
, projectConfigStoreDir, projectConfigBuildOnly , projectConfigStoreDir, projectConfigBuildOnly
, projectConfigConfigFile ) , projectConfigConfigFile )
...@@ -430,12 +431,24 @@ installAction flags@NixStyleFlags { extraFlags = clientInstallFlags', .. } targe ...@@ -430,12 +431,24 @@ installAction flags@NixStyleFlags { extraFlags = clientInstallFlags', .. } targe
configFlags' = disableTestsBenchsByDefault configFlags configFlags' = disableTestsBenchsByDefault configFlags
verbosity = fromFlagOrDefault normal (configVerbosity configFlags') verbosity = fromFlagOrDefault normal (configVerbosity configFlags')
ignoreProject = flagIgnoreProject projectFlags ignoreProject = flagIgnoreProject projectFlags
cliConfig = commandLineFlagsToProjectConfig baseCliConfig = commandLineFlagsToProjectConfig
globalFlags globalFlags
flags { configFlags = configFlags' } flags { configFlags = configFlags' }
clientInstallFlags' clientInstallFlags'
cliConfig = addLocalConfigToTargets baseCliConfig targetStrings
globalConfigFlag = projectConfigConfigFile (projectConfigShared cliConfig) globalConfigFlag = projectConfigConfigFile (projectConfigShared cliConfig)
-- | Treat all direct targets of install command as local packages: #8637
addLocalConfigToTargets :: ProjectConfig -> [String] -> ProjectConfig
addLocalConfigToTargets config targetStrings
= config {
projectConfigSpecificPackage = projectConfigSpecificPackage config
<> MapMappend (Map.fromList targetPackageConfigs)
}
where
localConfig = projectConfigLocalPackages config
targetPackageConfigs = map (\x -> (mkPackageName x, localConfig)) targetStrings
-- | Verify that invalid config options were not passed to the install command. -- | Verify that invalid config options were not passed to the install command.
-- --
-- If an invalid configuration is found the command will @die'@. -- If an invalid configuration is found the command will @die'@.
......
...@@ -50,7 +50,7 @@ linkConfigFlags Dynamic = ...@@ -50,7 +50,7 @@ linkConfigFlags Dynamic =
lrun :: [Linking] lrun :: [Linking]
lrun = [Static, Dynamic, Static, Dynamic] lrun = [Static, Dynamic, Static, Dynamic]
main = cabalTest . expectBroken 8744 $ do main = cabalTest $ do
-- Skip if on Windows, since my default Chocolatey Windows setup (and the CI -- Skip if on Windows, since my default Chocolatey Windows setup (and the CI
-- server setup at the time, presumably) lacks support for dynamic builds -- server setup at the time, presumably) lacks support for dynamic builds
-- since the base package appears to be static only, lacking e.g. ‘.dyn_o’ -- since the base package appears to be static only, lacking e.g. ‘.dyn_o’
......
synopsis: Apply command line flags to install packages
packages: cabal-install
prs: #8779
issues: #8637
description: {
- Command line flags usually only apply to "local" packages (packages specified
in the cabal.project). This change causes the v2-install command to ignore
that distinction to better match the expected behavior for packages specified
directly in the command.
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment