diff --git a/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs b/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs index 25de1091d66b213f978c1bf6d311faa2843d015f..db5e9956aedde6d6d232311ef544a0bd189eee18 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs @@ -12,7 +12,7 @@ module Distribution.Solver.Types.ProjectConfigPath -- * Messages , docProjectConfigPath - , docProjectConfigFiles + , docProjectConfigPaths , cyclicalImportMsg , docProjectConfigPathFailReason @@ -133,11 +133,11 @@ docProjectConfigPath (ProjectConfigPath (p :| ps)) = vcat $ -- , ProjectConfigPath ("project-cabal/pkgs/integration-tests.config" :| ["project-cabal/pkgs.config","cabal.project"]) -- , ProjectConfigPath ("project-cabal/pkgs/tests.config" :| ["project-cabal/pkgs.config","cabal.project"]) -- ] --- return . render $ docProjectConfigFiles ps +-- return . render $ docProjectConfigPaths ps -- :} -- "- cabal.project\n- project-cabal/constraints.config\n- project-cabal/ghc-latest.config\n- project-cabal/ghc-options.config\n- project-cabal/pkgs.config\n- project-cabal/pkgs/benchmarks.config\n- project-cabal/pkgs/buildinfo.config\n- project-cabal/pkgs/cabal.config\n- project-cabal/pkgs/install.config\n- project-cabal/pkgs/integration-tests.config\n- project-cabal/pkgs/tests.config" -docProjectConfigFiles :: [ProjectConfigPath] -> Doc -docProjectConfigFiles ps = vcat +docProjectConfigPaths :: [ProjectConfigPath] -> Doc +docProjectConfigPaths ps = vcat [ text "-" <+> text p | p <- ordNub [ p | ProjectConfigPath (p :| _) <- ps ] ] diff --git a/cabal-install/src/Distribution/Client/ProjectConfig.hs b/cabal-install/src/Distribution/Client/ProjectConfig.hs index 042e5c9187a4da8f7f71b044381d34a7f28d3aee..1d44139fbf4561a8cd8ba13a4e885a0e4b9e1061 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig.hs @@ -935,7 +935,7 @@ renderBadPackageLocations (BadPackageLocations provenance bpls) renderExplicit = "When using configuration from:\n" - ++ render (nest 2 . docProjectConfigFiles $ mapMaybe getExplicit (Set.toList provenance)) + ++ render (nest 2 . docProjectConfigPaths $ mapMaybe getExplicit (Set.toList provenance)) ++ "\nThe following errors occurred:\n" ++ render (nest 2 $ vcat ((text "-" <+>) . text <$> map renderBadPackageLocation bpls)) diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs index 521940392645314a3786daf7a2234d7ccf0554c5..644ff8326bafe349a058895a5a29b65995767c8b 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs @@ -2304,13 +2304,16 @@ elaborateInstallPlan ] <> perPkgOptionMapLast pkgid packageConfigProgramPaths elabProgramArgs = - Map.fromList - [ (programId prog, args) - | prog <- configuredPrograms compilerprogdb - , let args = programOverrideArgs $ addHaddockIfDocumentationEnabled prog - , not (null args) - ] - <> perPkgOptionMapMappend pkgid packageConfigProgramArgs + Map.unionWith + (++) + ( Map.fromList + [ (programId prog, args) + | prog <- configuredPrograms compilerprogdb + , let args = programOverrideArgs $ addHaddockIfDocumentationEnabled prog + , not (null args) + ] + ) + (perPkgOptionMapMappend pkgid packageConfigProgramArgs) elabProgramPathExtra = perPkgOptionNubList pkgid packageConfigProgramPathExtra elabConfigureScriptArgs = perPkgOptionList pkgid packageConfigConfigureArgs elabExtraLibDirs = perPkgOptionList pkgid packageConfigExtraLibDirs diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md b/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..8f36ef2eceabdc8697826b274880b7bad3ecc289 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for HaddockArgsCombine + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal b/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal new file mode 100644 index 0000000000000000000000000000000000000000..8a5eb8ffa6540750b1f0843d7d8e9fa354064313 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal @@ -0,0 +1,14 @@ +cabal-version: 3.14 +name: HaddockArgsCombine +version: 0.1.0.0 +license: NONE +author: Matthew Pickering +maintainer: matthewtpickering@gmail.com +build-type: Simple +extra-doc-files: CHANGELOG.md + +executable HaddockArgsCombine + main-is: Main.hs + build-depends: base + hs-source-dirs: app + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs b/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs new file mode 100644 index 0000000000000000000000000000000000000000..9b1ce43a4813ed4193ff1aedf749b1f93dac06b0 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs @@ -0,0 +1,6 @@ +module Main where + +import Data.List + +main :: IO () +main = putStrLn "Hello, Haskell!" diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out new file mode 100644 index 0000000000000000000000000000000000000000..f7671fe3af4c7d92d7ef7ae0ce465ee0d0f41e07 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out @@ -0,0 +1,8 @@ +# cabal v2-run +Resolving dependencies... +Build profile: -w ghc-<GHCVER> -O1 +In order, the following will be built: + - HaddockArgsCombine-0.1.0.0 (exe:HaddockArgsCombine) (first run) +Configuring executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0... +Preprocessing executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0... +Building executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0... diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs new file mode 100644 index 0000000000000000000000000000000000000000..d04a4c940624a780c8c5a07789a713ec9df756b8 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs @@ -0,0 +1,3 @@ +import Test.Cabal.Prelude +main = cabalTest $ do + fails $ cabal "v2-run" ["--ghc-options=-Wall -Werror", "--enable-documentation"] diff --git a/changelog.d/pr-10783 b/changelog.d/pr-10783 new file mode 100644 index 0000000000000000000000000000000000000000..a8efcf12cda56c7708925267b0eb37696981e99d --- /dev/null +++ b/changelog.d/pr-10783 @@ -0,0 +1,11 @@ +synopsis: GHC arguments are no longer swallowed by enabling documentation +packages: Cabal +prs: #10783 +issues: #10782 +significance: significant + +description: { + +- Arguments to GHC are now properly concatenated with `-haddock` if documentation is enabled. + +} diff --git a/changelog.d/solver-api-change-fixup-3.14 b/changelog.d/solver-api-change-fixup-3.14 new file mode 100644 index 0000000000000000000000000000000000000000..05561d5f495726493cc1fe991e76ba6db6815881 --- /dev/null +++ b/changelog.d/solver-api-change-fixup-3.14 @@ -0,0 +1,13 @@ +synopsis: Revert renaming from #10546 +packages: cabal-install-solver +prs: #10546 + +description: { + +https://github.com/haskell/cabal/pull/10546 changed the Solver API by +renaming a function and was backported to 3.14 in +https://github.com/haskell/cabal/pull/10753. In particular, +`docProjectConfigPaths` was renamed to `docProjectConfigFiles`. +This change reverts the renaming but not anything else from #10546. + +} diff --git a/scripts/release/create-release-metadata-for-ghcup.sh b/scripts/release/create-release-metadata-for-ghcup.sh index c8683c2b85ca4f59ac0f6d349e47a074f677d13e..6cf3415ce7542e7ddfd930d25be0fddee4f4901e 100755 --- a/scripts/release/create-release-metadata-for-ghcup.sh +++ b/scripts/release/create-release-metadata-for-ghcup.sh @@ -26,49 +26,42 @@ cat <<EOF > /dev/stdout viTags: - Latest viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-$RELEASE.md - viPostInstall: *cabal-${RELEASE//./}-post-install + # uncomment viPostInstall if the release needs a post-install message + # viPostInstall: &cabal-${RELEASE//./}-post-install | viArch: A_64: Linux_UnknownLinux: unknown_versioning: &cabal-${RELEASE//./}-64 - dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz - dlSubdir: cabal-install-$RELEASE - dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz" | awk '{ print $1 }') + dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz + dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz" | awk '{ print $1 }') Linux_Alpine: - unknown_versioning: &cabal-${RELEASE//./}-64 + unknown_versioning: *cabal-${RELEASE//./}-64 Linux_CentOS: unknown_versioning: &cabal-${RELEASE//./}-64-centos7 - dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz - dlSubdir: cabal-install-$RELEASE - dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz" | awk '{ print $1 }') + dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz + dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz" | awk '{ print $1 }') Linux_Debian: - ' ( >= 9 && < 10)': &cabal-${RELEASE//./}-64-debian + '( >= 9 && < 10)': &cabal-${RELEASE//./}-64-debian dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb9.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb9.tar.xz" | awk '{ print $1 }') - ' ( == 10 && < 11)': + '( == 10 && < 11)': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb10.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb10.tar.xz" | awk '{ print $1 }') - ' ( >= 11)': + '( >= 11)': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb11.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb11.tar.xz" | awk '{ print $1 }') - unknown_versioning: &cabal-${RELEASE//./}-64-debian + unknown_versioning: *cabal-${RELEASE//./}-64-debian Linux_Fedora: '>= 33': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-fedora33.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-fedora33.tar.xz" | awk '{ print $1 }') - unknown_versioning: &cabal-${RELEASE//./}-64-centos7 + unknown_versioning: *cabal-${RELEASE//./}-64-centos7 Linux_Ubuntu: '< 20': &cabal-${RELEASE//./}-64-ubuntu18 dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-ubuntu18_04.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-ubuntu18_04.tar.xz" | awk '{ print $1 }') '>= 20': &cabal-${RELEASE//./}-64-ubuntu20 dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-ubuntu20_04.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-ubuntu20_04.tar.xz" | awk '{ print $1 }') unknown_versioning: *cabal-${RELEASE//./}-64-ubuntu18 Linux_Mint: @@ -78,48 +71,44 @@ cat <<EOF > /dev/stdout Darwin: unknown_versioning: dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-darwin.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-darwin.tar.xz" | awk '{ print $1 }') Windows: unknown_versioning: dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-windows.zip - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-windows.zip" | awk '{ print $1 }') FreeBSD: unknown_versioning: - dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-freebsd.tar.xz - dlSubdir: cabal-install-$RELEASE - dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-freebsd.tar.xz" | awk '{ print $1 }') + dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-freebsd-14.tar.xz + dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-freebsd-14.tar.xz" | awk '{ print $1 }') A_32: Linux_UnknownLinux: unknown_versioning: &cabal-${RELEASE//./}-32 dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-i386-linux-alpine3_12.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-i386-linux-alpine3_12.tar.xz" | awk '{ print $1 }') Linux_Alpine: unknown_versioning: *cabal-${RELEASE//./}-32 Linux_Debian: '( >= 9 )': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-i386-linux-deb9.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-i386-linux-deb9.tar.xz" | awk '{ print $1 }') unknown_versioning: *cabal-${RELEASE//./}-32 A_ARM64: Darwin: unknown_versioning: dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-darwin.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-darwin.tar.xz" | awk '{ print $1 }') Linux_Debian: - '( >= 10 && < 11)': &cabal-31020-arm64 + '( >= 10 && < 11)': &cabal-${RELEASE//./}-arm64 dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-deb10.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-deb10.tar.xz" | awk '{ print $1 }') '( >= 11)': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-deb11.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-deb11.tar.xz" | awk '{ print $1 }') unknown_versioning: *cabal-${RELEASE//./}-arm64 + Linux_Alpine: + unknown_versioning: + dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-alpine3_18.tar.xz + dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-alpine3_18.tar.xz" | awk '{ print $1 }') Linux_UnknownLinux: unknown_versioning: *cabal-${RELEASE//./}-arm64 EOF