Skip to content
Snippets Groups Projects
Unverified Commit 76670ebd authored by patrickdoc's avatar patrickdoc Committed by GitHub
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>
parent 0eb638fb
No related branches found
No related tags found
No related merge requests found
......@@ -39,7 +39,7 @@ import Distribution.Client.Types
, SourcePackageDb(..) )
import qualified Distribution.Client.InstallPlan as InstallPlan
import Distribution.Package
( Package(..), PackageName, unPackageName )
( Package(..), PackageName, mkPackageName, unPackageName )
import Distribution.Types.PackageId
( PackageIdentifier(..) )
import Distribution.Client.ProjectConfig
......@@ -53,6 +53,7 @@ import Distribution.Client.ProjectFlags (ProjectFlags (..))
import Distribution.Client.ProjectConfig.Types
( ProjectConfig(..), ProjectConfigShared(..)
, ProjectConfigBuildOnly(..), PackageConfig(..)
, MapMappend(..)
, getMapLast, getMapMappend, projectConfigLogsDir
, projectConfigStoreDir, projectConfigBuildOnly
, projectConfigConfigFile )
......@@ -430,12 +431,24 @@ installAction flags@NixStyleFlags { extraFlags = clientInstallFlags', .. } targe
configFlags' = disableTestsBenchsByDefault configFlags
verbosity = fromFlagOrDefault normal (configVerbosity configFlags')
ignoreProject = flagIgnoreProject projectFlags
cliConfig = commandLineFlagsToProjectConfig
globalFlags
flags { configFlags = configFlags' }
clientInstallFlags'
baseCliConfig = commandLineFlagsToProjectConfig
globalFlags
flags { configFlags = configFlags' }
clientInstallFlags'
cliConfig = addLocalConfigToTargets baseCliConfig targetStrings
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.
--
-- If an invalid configuration is found the command will @die'@.
......
......@@ -50,7 +50,7 @@ linkConfigFlags Dynamic =
lrun :: [Linking]
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
-- 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’
......
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