From b28ec92c9baf0fa51f0adf6d132c4555e07d0c91 Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Mon, 13 Jul 2020 14:52:16 +0300 Subject: [PATCH] WIP --- .prlog | 200 --------------------- changelog.d/Cabal-QuickCheck | 2 +- changelog.d/Cabal-tree-diff | 2 +- changelog.d/PerCompilerFlavor-functor | 2 +- changelog.d/added-tests | 2 +- changelog.d/build-reports | 2 +- changelog.d/cabal-project-local-tilde | 2 +- changelog.d/cabal-sdist | 3 +- changelog.d/changelog | 1 + changelog.d/ci | 1 + changelog.d/code-organization | 14 +- changelog.d/described | 4 +- changelog.d/ghc-8.12 | 7 +- changelog.d/ghci-fix | 2 +- changelog.d/issue-6691 | 5 +- changelog.d/parser-benchmark | 8 +- changelog.d/pr-6878 | 2 +- changelog.d/pr-6929 | 2 +- changelog.d/remove-sandbox | 2 +- changelog.d/symlinking-windows | 6 +- changelog.d/utf8 | 2 +- changelog.d/version-type | 6 +- changelog.d/weeder | 2 +- notes/Cabal-3.4.0.0.md | 150 ++++++++++++++++ notes/cabal-install-3.4.0.0.md | 240 ++++++++++++++++++++++++++ 25 files changed, 430 insertions(+), 239 deletions(-) delete mode 100644 .prlog create mode 100644 notes/Cabal-3.4.0.0.md create mode 100644 notes/cabal-install-3.4.0.0.md diff --git a/.prlog b/.prlog deleted file mode 100644 index dcb723a869f..00000000000 --- a/.prlog +++ /dev/null @@ -1,200 +0,0 @@ -5ee43c8fa Merge pull request #6954 from phadej/doc-python-3b -2b668ff15 Merge pull request #6953 from jhrcek/fix-broken-links-in-docs -0205fd257 Merge pull request #6951 from phadej/pr-6936 -9d28c0c6e Merge pull request #6949 from phadej/pr-6301-android -32dad5c1c Merge pull request #6944 from phadej/spdx-license-list-3.9 -1b562e3c4 Merge pull request #6947 from phadej/ghc-8.12-features -44cfe7d1b Merge pull request #6946 from phadej/issue-6945-fix-ci-checkout -2d7885397 Merge pull request #6923 from bubba/fix-repl-build-deps -23ee91a6b Merge pull request #6940 from adamse/update-ghc-trac-links -5274d6a7c Merge pull request #6931 from phadej/issue-6807-listbin -b9eeda195 Merge pull request #6930 from phadej/remove-new-from-help -1a493e75a Merge pull request #6929 from phadej/verbosity-stderr -eedba7629 Merge pull request #6928 from jhrcek/typos -0538dd1ed Merge pull request #6926 from phadej/issue-6288-default-language -d7fd25ace Merge pull request #6924 from phadej/default-language-check -c5baa593d Merge pull request #6917 from phadej/issue-5586-srcpkgrepo-not-local -5fc3d8cef Merge pull request #6916 from phadej/packageDirToSdist -8f0ffb7df Merge pull request #6915 from phadej/sourcepackage-field-rename -10e61fc73 Merge pull request #6914 from phadej/bump-bounds-dev-scripts -a6915feaf Merge pull request #6912 from phadej/issue-6281 -9b380e2af Merge pull request #6907 from phadej/issue-6083-qualified-syntax-dep -6001bc94d Merge pull request #6910 from phadej/pretty-component -63d004985 Merge pull request #6908 from phadej/pr-6848-ci-another-try -3c7a2220f Merge pull request #6902 from phadej/ci-uname -33860e5ba Merge pull request #6900 from haskell/validate-dockerfile-generator -1b2081617 Merge pull request #6893 from phadej/issue-6083-preparation -37ec8b16f Merge pull request #6898 from phadej/prettier-dependency -002005e27 Merge pull request #6897 from phadej/nes-toSet -722e4cff4 Merge pull request #6896 from phadej/issue-6894-fix -1d18662b0 Merge pull request #6895 from phadej/issue-6894-tests -14010daec Merge pull request #6891 from phadej/issue-6882-move-arbitrary-instances -833ab12a3 Merge pull request #6890 from phadej/fix-quick-jobs -e11768ca3 Merge pull request #6889 from kmicklas/rebuild-all-extra-source-files -5ce6b08b3 Merge pull request #6844 from vdukhovni/ghc-master-support -e936f7d66 Merge pull request #6884 from phadej/sdist-data-files -8756a4a91 Merge pull request #6878 from phadej/licenceIsFsfLibre -f7828e1f4 Merge pull request #6877 from bubba/cabalprojectlocal-copy-message -65d7cc6c1 Merge pull request #6875 from bubba/fix-ambiguous-target-selector-internal-error -07c1a43c1 Merge pull request #6857 from TomMD/fix/make-warning-red-so-people-read-and-i-do-not-start-seeing-red -48a8dfa19 Merge pull request #6872 from phadej/issue-6377-add-cmm-test -2f3152cd7 Merge pull request #6822 from vituscze/win-environments -b47dd2da9 Merge pull request #6870 from phadej/issue-6869 -1148ecf9b Merge pull request #6868 from phadej/issue-6819 -ee11888d0 Merge pull request #6867 from phadej/cabal-install-zinza -dde6255a4 Merge pull request #6865 from phadej/create-pipe -36ab7a0be Merge pull request #6858 from phadej/6853-test -4d64ad056 Merge pull request #6855 from phadej/refactor-d-packagedescription-module -af651abbc Merge pull request #6854 from phadej/issue-6853 -343b524bc Merge pull request #6842 from phadej/test-6038 -b83e0c915 Merge pull request #6836 from fgaz/pr-6047-3 -50d59cfc8 Merge pull request #6831 from phadej/fix-windows-gh-actions -120e5394a Merge pull request #6827 from phadej/update-bounds-20200520 -a4b1708ab Merge pull request #6826 from phadej/pr-6623 -10f33bada Merge pull request #6821 from phadej/pr-6774 -06c3eff24 Merge pull request #6818 from phadej/use-prelude-in-cli -a4f20826d Merge pull request #6817 from phadej/types-install-method-overwrite-policy -827d65586 Merge pull request #6814 from phadej/issue-6809 -f6f78d11a Merge pull request #6810 from phadej/issue-6804 -ebf8a244d Merge pull request #6808 from phadej/issue-6805 -0c41d67a4 Merge pull request #6806 from phadej/regex-list -d220810df Merge pull request #6802 from phadej/multilib-test -b4a609030 Merge pull request #6798 from phadej/dependency-non-empty-set -9c148f79c Merge pull request #6800 from phadej/mixin-described -8d9e8afe8 Merge pull request #6794 from phadej/remote-text -700414015 Merge pull request #6793 from phadej/glob-parsec -dbb2d0e04 Merge pull request #6791 from phadej/describe-refactor-b -23a1150c3 Merge pull request #6790 from phadej/more-weeder-roots -fa74c1b85 Merge pull request #6789 from phadej/Cabal-tree-diff -22405ee11 Merge pull request #6785 from phadej/text-world-pkg-info -4e7f73332 Merge pull request #6784 from phadej/text-category -0b6e49e00 Merge pull request #6786 from phadej/remove-any-none -3c0ff33ea Merge pull request #6783 from phadej/build-reports-parsec -c753f62a2 Merge pull request #6781 from phadej/more-described -e015931fd Merge pull request #6764 from phadej/remove-text-instances -05bbea3e6 Merge pull request #6780 from phadej/remove-described-vr-any-none -6736cc2fa Merge pull request #6779 from phadej/weeder -e56f0aa19 Merge pull request #6778 from phadej/described-relax-deps -4125d5209 Merge pull request #6777 from phadej/monoid-field-parsec -867e45e9c Merge pull request #6768 from phadej/issue-5570 -a6b6139ae Merge pull request #6761 from hyperreal-gopher/patch-1 -9714c5377 Merge pull request #6746 from m-renaud/m-renaud-cmd-install-refactor-installCommand -ae3486ab2 Merge pull request #6766 from phadej/described-package-version-constrain -72a3962a7 Merge pull request #6763 from vaibhavsagar/percompilerflavor-functor -c9c0cb359 Merge pull request #6724 from haskell/active-repositories -4ca3e0874 Merge pull request #6730 from phadej/remove-local-repo -5f80646b1 Merge pull request #6759 from phadej/shrinker -a6aa0bb4b Merge pull request #6747 from phadej/remove-sandbox -e140e420d Merge pull request #6735 from hsyl20/master -68320f168 Merge pull request #6745 from haskell/install-commandui -86766bf24 Merge pull request #6740 from hasufell/jospald/PR/6739 -b15210efb Merge pull request #6753 from phadej/hs-source-dirs-dot-test -f7d1b4e40 Merge pull request #6733 from phadej/issue-6728-non-empty-string-tis -05b8dfa6d Merge pull request #6734 from phadej/add-project-flags -1a6dbcfd7 Merge pull request #6742 from phadej/any-version -b89a1c634 Merge pull request #6725 from phadej/disambiguate-flags -c26cddb2c Merge pull request #6723 from m-renaud/m-renaud-init-with-comments-golden -26702a354 Merge pull request #6720 from haskell/cli-doctest -a2705dd20 Merge pull request #6708 from phadej/expose-all-unfoldings -d8a9a1268 Merge pull request #6709 from phadej/ghc-8.10.1-full-job -eef18eb31 Merge pull request #6707 from phadej/issue-6691-remove-some-hidden-commands -2d738db76 Merge pull request #6654 from haskell/more-picky-cabal-version -d711f3901 Merge pull request #6705 from m-renaud/m-renaud-init-goldens-mylib-dep -65acfcade Merge pull request #6704 from haskell/rename-regex -4b8abaab8 Merge pull request #6697 from emilypi/build-depends-docstring -6458e7aff Merge pull request #6686 from poscat0x04/fix-typo -98945162a Merge pull request #6690 from m-renaud/m-renaud-init-format-change-existing-offset -15bcd6530 Merge pull request #6678 from m-renaud/m-renaud-init-unit-tests -79649a5f3 Merge pull request #6684 from phadej/issue-6610 -4d1dcd2d2 Merge pull request #6676 from m-renaud/m-renaud-init-app-dir-default -d62c7264b Merge pull request #6682 from phadej/space-comma-in-total-index-state -9e63efb1f Merge pull request #6680 from phadej/pr-6313-6609 -244f4aaf8 Merge pull request #6681 from phadej/pr-6618 -30da456b3 Merge pull request #6677 from m-renaud/m-renaud-init-spdx-none -a09afa70e Merge pull request #6669 from m-renaud/mrenaud-docs-newcomer-tutorial -c5d4b7ce3 Merge pull request #6666 from phadej/fix-sdist-permissions -95a6ee3b6 Merge pull request #6663 from phadej/cabalspec-3.4 -d4ebb699a Merge pull request #6668 from m-renaud/m-renaud-cabal-docs-pin-pyv2 -3e22da12a Merge pull request #6637 from phadej/remove-v1-sdist -c5cfe272a Merge pull request #6661 from phadej/init-improvements -79d28cebc Merge pull request #6662 from phadej/spdx-list-3.8-2020-02-09 -adb1cbaf8 Merge pull request #6660 from phadej/v2-sdist-docs -613a2a250 Merge pull request #6653 from phadej/spec-field-cabalspecversion -26b2defed Merge pull request #6650 from phadej/pr-6641 -100880503 Merge pull request #6643 from phadej/cabal-testsuite-src-dir -8ffb885d8 Merge pull request #6644 from phadej/update-copyright-years-2020 -a1a5fc7b7 Merge pull request #6624 from m-renaud/m-renaud-default-installdir -b24a4880e Merge pull request #6642 from phadej/cabal-testsuite-src-dir -07baa6b88 Merge pull request #6640 from phadej/cabal-sdist-ignore-project -c49bb4eb1 Merge pull request #6634 from phadej/changelog.d -922f8c2d9 Merge pull request #6636 from phadej/bootstrap-resolv -b910fcf5c Merge pull request #6632 from m-renaud/m-renaud-cabal-init-comments -69030a4fd Default to cabal version 2.4 when running cabal init. (PR #6607) -8b10bd3fc Merge pull request #6625 from m-renaud/disable-remote-build-reporting-by-default -8874aba7e Merge pull request #6612 from v0d1ch/6432-implement-Representable-container -762805a9a Merge pull request #6617 from phadej/ghc-8.10.1-lib-job -7fda66f60 Merge pull request #6613 from m-renaud/mrenaud-docs-remove-sandbox -cf2574273 Merge pull request #6605 from phadej/public-libs -5392ac8c9 Merge pull request #6599 from phadej/split-client-types -03f211cc2 Merge pull request #6598 from phadej/testing -eba38fc8a Merge pull request #6597 from phadej/totalindexstate -c52fdf78d Merge pull request #6596 from phadej/indexstate-module -f8ad7bb43 Merge pull request #6594 from phadej/parser-benchmark -dde0d9c8c Merge pull request #6593 from phadej/described-flagname-reponame -3642d2dbe Merge pull request #6590 from phadej/pr-6582-show-exe-path -b71d3db61 Merge pull request #6591 from phadej/index-state-tests -e9b0a715b Merge pull request #6586 from phadej/more-checks-in-version-range-parser -3d93cdd7e Merge pull request #6588 from phadej/utf8-fix -e070dba5d Merge pull request #6585 from phadej/no-monolithic -32576917c Merge pull request #6581 from phadej/reponame-newtype -2e0323197 Merge pull request #6576 from phadej/issue-6369-install-pkgname-exename -097ee3777 Merge pull request #6579 from phadej/rename-osx-github-actions -ec0f07df0 Merge pull request #6577 from phadej/disable-test-3324-on-windows -bbcfe3f7e Merge pull request #6578 from phadej/remove-travis -866f0f8d2 Merge pull request #6258 from haskell/buildinfo-reference-generator -ab90d757c Merge pull request #6574 from phadej/bytestring-setup -c0dc30595 Merge pull request #6563 from phadej/simplified-subsumption-ryan -bbe78f88b Merge pull request #6571 from phadej/better-checkout -d45246bc9 Merge pull request #6564 from phadej/ci-8.8.3 -89396ec6a Merge pull request #6560 from Jassob/fix-outdated-reference -9520ef365 Merge pull request #6557 from phadej/Cabal-quickcheck -24e3b9b7d Merge pull request #6559 from phadej/macos-ci-fix -3e7b0e61c Merge pull request #6556 from phadej/elem-case -e6e4e62e2 Merge pull request #6553 from RyanGlScott/revert-wrapped-ppe -639738b6d Merge pull request #6552 from phadej/prelude-io -6c64494e9 Merge pull request #6550 from haskell/fix-typo -e75c9f5f4 Merge pull request #6548 from phadej/man-command -0d3e4efc7 Merge pull request #6546 from phadej/small-docs-additions -b419865c4 Merge pull request #6547 from haskell/issue-6485-unit-id-internal-lib -a4c55113f Merge pull request #6538 from phadej/stricter-build-depends-parsec -320c71697 Merge pull request #6540 from phadej/doctests-pkgconfig-version -3e05a15c0 Merge pull request #6541 from phadej/accept-any-modversion -b744cde70 Merge pull request #6536 from phadej/bgamari-use-process-jobs -e5b508e75 Merge pull request #6535 from phadej/issue-6533 -202a1787b Merge pull request #6504 from haskell/bgamari-patch-1 -11ec034cd Merge pull request #6519 from phadej/copy_on_windows -6e9d6bdc7 Merge pull request #6518 from phadej/integrations-tests2-windows-try-2 -b44a71f39 Merge pull request #6502 from haskell/zinza-cabal-macros -b1b5c6da7 Merge pull request #6499 from phadej/more-robust-test-for-3324 -d02655b92 Merge pull request #6501 from phadej/issue-6479-tmp-in-exec -f437d9497 Merge pull request #6498 from grayjay/issue-5892-2 -4026d57ec Merge pull request #6494 from phadej/github-actions-windows -2a7304bc7 Merge pull request #6496 from phadej/revert-6476 -5939cab5b Revert "Merge pull request #6476 from grayjay/issue-5892" -fbe7d73e4 Merge pull request #6476 from grayjay/issue-5892 -f6e7cdd60 Merge pull request #5918 from grayjay/version-and-goal-conflicts -0d4ee7ba3 Merge pull request #6473 from Rufflewind/master -668eaaca4 Merge pull request #6469 from haskell/workflow-validate -fc4ce6950 Merge pull request #6463 from phadej/T5677-windows -fae45e807 Merge pull request #6464 from selinger/patch-1 -8c18ad568 Merge pull request #6456 from phadej/issue-6375 -0dda5b99e Merge pull request #6448 from phadej/local-no-index -7a0000da7 Merge pull request #6457 from phadej/v2-run-z -7fd2f6041 Merge pull request #6455 from phadej/zinza-0.2 -d23057228 Merge pull request #6450 from bwignall/typo -787b1f227 Merge pull request #6447 from phadej/grayjay-update-solver-benchmarks -8f42d3fa9 Merge pull request #6439 from phadej/install-plan-internalerror-master -b3c7982e7 Merge pull request #6436 from phadej/issue-6013 -65522af9b Merge pull request #6433 from phadej/issue-6355 -009c42d36 Merge pull request #6428 from phadej/install-z -4d903d593 Merge pull request #6426 from phadej/bump-version-3.3 diff --git a/changelog.d/Cabal-QuickCheck b/changelog.d/Cabal-QuickCheck index 6a7761a25f2..e1ab7cc47ea 100644 --- a/changelog.d/Cabal-QuickCheck +++ b/changelog.d/Cabal-QuickCheck @@ -1,4 +1,4 @@ -synopsis: Cabal-QuickCheck package with Arbirary instances +synopsis: Cabal-QuickCheck package with `Arbirary` instances prs: #6557 #6891 issues: #6882 packages: Cabal diff --git a/changelog.d/Cabal-tree-diff b/changelog.d/Cabal-tree-diff index 0c3805c813a..5795cfdd888 100644 --- a/changelog.d/Cabal-tree-diff +++ b/changelog.d/Cabal-tree-diff @@ -1,3 +1,3 @@ -synopsis: Create Cabal-tree-diff package with ToExpr instances +synopsis: Create Cabal-tree-diff package with `ToExpr` instances prs: #6789 packages: Cabal diff --git a/changelog.d/PerCompilerFlavor-functor b/changelog.d/PerCompilerFlavor-functor index c6767394727..5190474ea2c 100644 --- a/changelog.d/PerCompilerFlavor-functor +++ b/changelog.d/PerCompilerFlavor-functor @@ -1,3 +1,3 @@ -synopsis: Cabal.Distribution.Compiler: add Traversable instance for PerCompilerFlavor +synopsis: `Cabal.Distribution.Compiler`: add `Traversable` instance for `PerCompilerFlavor` prs: #6763 packages: Cabal diff --git a/changelog.d/added-tests b/changelog.d/added-tests index 08e1a0efe7f..4142c62b04f 100644 --- a/changelog.d/added-tests +++ b/changelog.d/added-tests @@ -5,7 +5,7 @@ issues: #6409 description: { - Add shrinker, so writing big non-generic product shrinkers is easier -- Add hs-source-dirs: NL . test-case +- Add `hs-source-dirs: NL .` test-case - Add public multilib test(s) } diff --git a/changelog.d/build-reports b/changelog.d/build-reports index f8312b91aad..1d6f4fff06a 100644 --- a/changelog.d/build-reports +++ b/changelog.d/build-reports @@ -1,3 +1,3 @@ -synopsis: Change BuildReports parse/pretty to use FieldGrammar framework +synopsis: Change `BuildReports` parse/pretty to use FieldGrammar framework prs: #6783 packages: cabal-install diff --git a/changelog.d/cabal-project-local-tilde b/changelog.d/cabal-project-local-tilde index 7fa3c09fdce..f820f307680 100644 --- a/changelog.d/cabal-project-local-tilde +++ b/changelog.d/cabal-project-local-tilde @@ -1,3 +1,3 @@ -synopsis: Tell users about cabal.project.local~ in `cabal v2-configure` +synopsis: Tell users about `cabal.project.local~` in `cabal v2-configure` prs: #6877 packages: cabal-install diff --git a/changelog.d/cabal-sdist b/changelog.d/cabal-sdist index 2512dac53dd..e0444da875a 100644 --- a/changelog.d/cabal-sdist +++ b/changelog.d/cabal-sdist @@ -1,7 +1,7 @@ synopsis: Rework `v2-sdist` command packages: cabal-install issues: #6635 #5813 #2940 #6611 #6514 -prs: #6454 #6637 #6640 #6660 #6666 #6618 #6681 #6884 #6916 +prs: #6454 #6637 #6640 #6660 #6666 #6884 #6916 significance: significant description: { @@ -26,7 +26,6 @@ are run with explicit `sh` program. For package internal scripts, maintainers should also use interpreters explicitly as well. Scripts with shebangs are not executable on Windows. - The `v1-sdist` command is removed, as its functionality is completely superseded by `v2-sdist`. diff --git a/changelog.d/changelog b/changelog.d/changelog index 63e5da75825..18d72c2fd8f 100644 --- a/changelog.d/changelog +++ b/changelog.d/changelog @@ -1,2 +1,3 @@ synopsis: Changelog entries +packages: Cabal-internal prs: #6634 #6950 diff --git a/changelog.d/ci b/changelog.d/ci index c3e21fbc318..5903afa728c 100644 --- a/changelog.d/ci +++ b/changelog.d/ci @@ -1,4 +1,5 @@ synopsis: CI tweaks +packages: Cabal-internal prs: #6494 #6518 diff --git a/changelog.d/code-organization b/changelog.d/code-organization index 093416ad9e8..a3dae264bda 100644 --- a/changelog.d/code-organization +++ b/changelog.d/code-organization @@ -3,14 +3,14 @@ prs: #6599 #6642 #6734 #6745 #6746 #6817 #6818 #6821 #6867 description: { -- Split D.Client.Types module +- Split `Distribution.Client.Types` module - Move cabal-testsuite code into `src/` -- Add ProjectFlags -- Make NixStyleOptions +- Add `ProjectFlags` +- Add `NixStyleOptions` - Internal refactorings to install command. -- Make own modules for InstallMethod and OverwritePolicy -- Make cabal-install compilable with NoImplicitPrelude -- Refactor shared TargetProblem data types into their own module. -- Template cabal-install.cabal using zinza +- Make own modules for `InstallMethod` and `OverwritePolicy` +- Make cabal-install compilable with `NoImplicitPrelude` +- Refactor shared `TargetProblem` data types into their own module. +- Template `cabal-install.cabal` using zinza } diff --git a/changelog.d/described b/changelog.d/described index af117cb9ab5..90a10e9e16b 100644 --- a/changelog.d/described +++ b/changelog.d/described @@ -1,8 +1,8 @@ -synopsis: Grammar / Described +synopsis: The grammar of most package description fields is formally documented prs: #6591 #6593 #6704 #6766 #6778 #6780 #6781 #6791 #6800 description: { -TBW +See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html } diff --git a/changelog.d/ghc-8.12 b/changelog.d/ghc-8.12 index 43602e097cf..11f164a8822 100644 --- a/changelog.d/ghc-8.12 +++ b/changelog.d/ghc-8.12 @@ -7,13 +7,12 @@ significance: significant description: { -- Support for -this-package-key deprecation -- Use process createPipe +- Support for `-this-package-key` deprecation +- Use process `createPipe` - Add support for WINIO to Cabal - Adopt to simplfied subsumption changes -There are no magical 'IO =`WithCallStack Prelude.IO` alias in Cabal, +There are no magical 'IO = WithCallStack Prelude.IO` alias in Cabal, as it is hard to get working with GHC-8.12's simplified subsumption. -Accept "linux-androideabi" as an alias for Android } diff --git a/changelog.d/ghci-fix b/changelog.d/ghci-fix index d0456438931..4b768bd6b9c 100644 --- a/changelog.d/ghci-fix +++ b/changelog.d/ghci-fix @@ -3,6 +3,6 @@ prs: #6923 description: { -TBW. Related to foreign calls to C-sources. +Related to foreign calls to C-sources. } diff --git a/changelog.d/issue-6691 b/changelog.d/issue-6691 index eaf30eec204..3f9bbdb806c 100644 --- a/changelog.d/issue-6691 +++ b/changelog.d/issue-6691 @@ -5,6 +5,9 @@ prs: #6707 description: { -Remove unimplemented commands. TBW note about win32selfupgrade +This commands were not implemented or are special purpose. +The removal of `win32selfupgrade` might break self upgrade on windows, +when `cabal-install` tries to rewrite the binary of itself. +This shouldn't be a problem when symlinking is used. } diff --git a/changelog.d/parser-benchmark b/changelog.d/parser-benchmark index 8918ee06752..25bd5062ddb 100644 --- a/changelog.d/parser-benchmark +++ b/changelog.d/parser-benchmark @@ -1,8 +1,2 @@ -synopsis: Parser benchmark +synopsis: Package description parser benchmark prs: #6594 - -description: { - -TBW... (easier to assert parser changes) - -} diff --git a/changelog.d/pr-6878 b/changelog.d/pr-6878 index aeb769e0da6..62bbc3cbb65 100644 --- a/changelog.d/pr-6878 +++ b/changelog.d/pr-6878 @@ -1,3 +1,3 @@ -synopsis: Add licenceIsFsfLibre +synopsis: Add `licenceIsFsfLibre` packages: Cabal prs: #6878 diff --git a/changelog.d/pr-6929 b/changelog.d/pr-6929 index f46251031bd..7d1aeee4a5d 100644 --- a/changelog.d/pr-6929 +++ b/changelog.d/pr-6929 @@ -1,2 +1,2 @@ -synopsis: Add +stderr modifier to verbosity +synopsis: Add `+stderr` modifier to `Verbosity` prs: #6929 diff --git a/changelog.d/remove-sandbox b/changelog.d/remove-sandbox index cd7522c38cc..be4392525dd 100644 --- a/changelog.d/remove-sandbox +++ b/changelog.d/remove-sandbox @@ -6,6 +6,6 @@ significance: significant description: { -I should probably say something +Sandbox functionality is remove in favour of now default nix-style builds. } diff --git a/changelog.d/symlinking-windows b/changelog.d/symlinking-windows index 88d23198f2f..1d7f792f924 100644 --- a/changelog.d/symlinking-windows +++ b/changelog.d/symlinking-windows @@ -3,5 +3,9 @@ packages: cabal-install prs: #5684 #6506 #6519 description: { -TBW + +`cabal-install` will try to infer whether symlinking is supported on Windows, +and make symlinks in `install`. Otherwise it will fallback to copying files. +Either way can be forced with `--install-method`. + } diff --git a/changelog.d/utf8 b/changelog.d/utf8 index 0ceeee84312..8cf64ce0206 100644 --- a/changelog.d/utf8 +++ b/changelog.d/utf8 @@ -1,3 +1,3 @@ -synopsis: Better UTF8 handling, parsed ShortText should be valid now +synopsis: Better UTF8 handling, parsed `ShortText` is now valid. packages: Cabal prs: #6588 diff --git a/changelog.d/version-type b/changelog.d/version-type index 3cce6deb5ee..32934c9c630 100644 --- a/changelog.d/version-type +++ b/changelog.d/version-type @@ -1,10 +1,10 @@ -synopsis: Remove AnyVersion and WildcardVersion constructors from Version +synopsis: Remove `AnyVersion` and `WildcardVersion` constructors from `Version` packages: Cabal prs: #6742 description: { -Make Version type less "syntactic", i.e. contains less constructors -for semantically same version ranges. +This changes makes `Version` type less "syntactic", +i.e. contains less constructors for semantically same version ranges. } diff --git a/changelog.d/weeder b/changelog.d/weeder index dcc116356db..195f358be12 100644 --- a/changelog.d/weeder +++ b/changelog.d/weeder @@ -1,2 +1,2 @@ -synopsis: Add / use weeder +synopsis: Add and use weeder prs: #6779 #6790 diff --git a/notes/Cabal-3.4.0.0.md b/notes/Cabal-3.4.0.0.md new file mode 100644 index 00000000000..e36af02e1f0 --- /dev/null +++ b/notes/Cabal-3.4.0.0.md @@ -0,0 +1,150 @@ +### Significant changes + +- Add cabal-version: 3.4 [#6663](https://github.com/haskell/cabal/pull/6663) + + See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4 + +- Support GHC-8.12 [#6903](https://github.com/haskell/cabal/issues/6903) [#6904](https://github.com/haskell/cabal/issues/6904) [#6905](https://github.com/haskell/cabal/issues/6905) [#6545](https://github.com/haskell/cabal/pull/6545) [#6552](https://github.com/haskell/cabal/pull/6552) [#6553](https://github.com/haskell/cabal/pull/6553) [#6563](https://github.com/haskell/cabal/pull/6563) [#6735](https://github.com/haskell/cabal/pull/6735) [#6844](https://github.com/haskell/cabal/pull/6844) [#6848](https://github.com/haskell/cabal/pull/6848) [#6865](https://github.com/haskell/cabal/pull/6865) [#6908](https://github.com/haskell/cabal/pull/6908) [#6947](https://github.com/haskell/cabal/pull/6947) + + - Support for `-this-package-key` deprecation + - Use process `createPipe` + - Add support for WINIO to Cabal + - Adopt to simplfied subsumption changes + + There are no magical 'IO = WithCallStack Prelude.IO` alias in Cabal, + as it is hard to get working with GHC-8.12's simplified subsumption. + +- Treat pkg:sublib dependency syntax as is in `cabal-version: 3.4` [#6083](https://github.com/haskell/cabal/issues/6083) [#6893](https://github.com/haskell/cabal/pull/6893) [#6907](https://github.com/haskell/cabal/pull/6907) + + In `cabal-version: 3.4` cabal files the dependency definition + + ```cabal + build-depends: somesublib + ``` + + is not using in-package sublibraries. You have to be explicit and write + + ```cabal + build-depends: thispkg:somesublib + ``` + + This fixes an issue, where it was impossible to refer to extenral + library, if you had sublibrary of the same name. + +- Dependency type refactorings [#5570](https://github.com/haskell/cabal/issues/5570) [#6894](https://github.com/haskell/cabal/issues/6894) [#6768](https://github.com/haskell/cabal/pull/6768) [#6798](https://github.com/haskell/cabal/pull/6798) [#6895](https://github.com/haskell/cabal/pull/6895) [#6896](https://github.com/haskell/cabal/pull/6896) [#6897](https://github.com/haskell/cabal/pull/6897) [#6898](https://github.com/haskell/cabal/pull/6898) + + With additions of (public) sublibraries, `Dependency` type use for multiple needs become painful. + Therefore a new type `PackageVersionConstraint` was added to serve *constraint on package* use-case. + `Dependency` type is *dependency on a library component*, i.e. representing `build-depends` entry. + + - Use PackageVersionConstraint more + - Add NonEmptySet and use it in Dependency + +### Other changes + +- Tests additions [#6409](https://github.com/haskell/cabal/issues/6409) [#6753](https://github.com/haskell/cabal/pull/6753) [#6759](https://github.com/haskell/cabal/pull/6759) [#6802](https://github.com/haskell/cabal/pull/6802) [#6842](https://github.com/haskell/cabal/pull/6842) [#6872](https://github.com/haskell/cabal/pull/6872) + + - Add shrinker, so writing big non-generic product shrinkers is easier + - Add `hs-source-dirs: NL .` test-case + - Add public multilib test(s) + +- Code organization [#6599](https://github.com/haskell/cabal/pull/6599) [#6642](https://github.com/haskell/cabal/pull/6642) [#6734](https://github.com/haskell/cabal/pull/6734) [#6745](https://github.com/haskell/cabal/pull/6745) [#6746](https://github.com/haskell/cabal/pull/6746) [#6817](https://github.com/haskell/cabal/pull/6817) [#6818](https://github.com/haskell/cabal/pull/6818) [#6821](https://github.com/haskell/cabal/pull/6821) [#6867](https://github.com/haskell/cabal/pull/6867) + + - Split `Distribution.Client.Types` module + - Move cabal-testsuite code into `src/` + - Add `ProjectFlags` + - Add `NixStyleOptions` + - Internal refactorings to install command. + - Make own modules for `InstallMethod` and `OverwritePolicy` + - Make cabal-install compilable with `NoImplicitPrelude` + - Refactor shared `TargetProblem` data types into their own module. + - Template `cabal-install.cabal` using zinza + +- The grammar of most package description fields is formally documented [#6591](https://github.com/haskell/cabal/pull/6591) [#6593](https://github.com/haskell/cabal/pull/6593) [#6704](https://github.com/haskell/cabal/pull/6704) [#6766](https://github.com/haskell/cabal/pull/6766) [#6778](https://github.com/haskell/cabal/pull/6778) [#6780](https://github.com/haskell/cabal/pull/6780) [#6781](https://github.com/haskell/cabal/pull/6781) [#6791](https://github.com/haskell/cabal/pull/6791) [#6800](https://github.com/haskell/cabal/pull/6800) + + See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html + +- Documentation updates and typo-fixes [#6504](https://github.com/haskell/cabal/pull/6504) [#6550](https://github.com/haskell/cabal/pull/6550) [#6560](https://github.com/haskell/cabal/pull/6560) [#6613](https://github.com/haskell/cabal/pull/6613) [#6660](https://github.com/haskell/cabal/pull/6660) [#6668](https://github.com/haskell/cabal/pull/6668) [#6669](https://github.com/haskell/cabal/pull/6669) [#6686](https://github.com/haskell/cabal/pull/6686) [#6697](https://github.com/haskell/cabal/pull/6697) [#6761](https://github.com/haskell/cabal/pull/6761) [#6928](https://github.com/haskell/cabal/pull/6928) [#6940](https://github.com/haskell/cabal/pull/6940) [#6951](https://github.com/haskell/cabal/pull/6951) [#6953](https://github.com/haskell/cabal/pull/6953) [#6954](https://github.com/haskell/cabal/pull/6954) + + TODO: Highlight larged changes + +- Fix ghci being launched before other sources are built. [#6923](https://github.com/haskell/cabal/pull/6923) + + Related to foreign calls to C-sources. + +- Remove `-any` and `-none` syntax for version ranges in cabal-version: 3.4 [#6589](https://github.com/haskell/cabal/issues/6589) [#6786](https://github.com/haskell/cabal/pull/6786) + + Use `>=0` (or empty in dependencies) and `<0` respectively. + +- Add pijul to known repository type [#6610](https://github.com/haskell/cabal/issues/6610) [#6684](https://github.com/haskell/cabal/pull/6684) + + Pijul is now explicitly recognized version control system. + However `cabal-install` isn't yet able to use it in + `source-repository-package`. + +- Rename Flag to CompilerFlag and PackageFlag [#6710](https://github.com/haskell/cabal/issues/6710) [#6725](https://github.com/haskell/cabal/pull/6725) + + There was three Flag's. Now they are + + - `Flag` (cli parsing) + - `PackageFlag` + - `CompilerFlag` + + This allows wild-imports without `hiding (Flag)`. + +- Accept "linux-androideabi" as an alias for Android for determining buildOS [#6301](https://github.com/haskell/cabal/pull/6301) [#6949](https://github.com/haskell/cabal/pull/6949) + + `Cabal` will able to parse `linux-androideabi` from the value of `System.Info.os`. + +- Refactor Distribution.PackageDescription module [#6855](https://github.com/haskell/cabal/pull/6855) + + Now it re-exports a collection of modules, not individual symbols. + +- Use process jobs when spawning subprocesses [#6529](https://github.com/haskell/cabal/pull/6529) [#6536](https://github.com/haskell/cabal/pull/6536) + + Many toolchain tools written for POSIX systems rely on the exec system + call. Unfortunately, it is not possible to implement exec in a + POSIX-compliant manner on Windows. In particular, the semantics of the + exec implementation provided by the widely-used msvcrt C runtime + will cause process's waiting on the exec'ing process to incorrectly + conclude that the process has successfully terminated when in fact it is + still running in another process. + + For this reason, the process library exposes the use_process_jobs + flag to use a more strict (although still not POSIX-compliant) mechanism + for tracking process completion. + This is explained in [the Process.hs comment](https://github.com/haskell/process/blob/master/System/Process.hs#L399) + + Unfortunately, job support in the process library is currently quite + broken and was only recently fixed. Consequently, we only enable job + object support for process releases >= 1.6.8. + +- Remove `AnyVersion` and `WildcardVersion` constructors from `Version` [#6742](https://github.com/haskell/cabal/pull/6742) + + This changes makes `Version` type less "syntactic", + i.e. contains less constructors for semantically same version ranges. + +- Cabal-QuickCheck package with `Arbirary` instances [#6882](https://github.com/haskell/cabal/issues/6882) [#6557](https://github.com/haskell/cabal/pull/6557) [#6891](https://github.com/haskell/cabal/pull/6891) +- Create Cabal-tree-diff package with `ToExpr` instances [#6789](https://github.com/haskell/cabal/pull/6789) +- `Cabal.Distribution.Compiler`: add `Traversable` instance for `PerCompilerFlavor` [#6763](https://github.com/haskell/cabal/pull/6763) +- Improvements to cabal-testsuite framework [#6643](https://github.com/haskell/cabal/pull/6643) +- Update copyright years to 2020 [#6644](https://github.com/haskell/cabal/pull/6644) +- Flag assignment parsing refactorings [#6853](https://github.com/haskell/cabal/issues/6853) [#6854](https://github.com/haskell/cabal/pull/6854) [#6858](https://github.com/haskell/cabal/pull/6858) +- Add foo:bar syntax to mixins [#6281](https://github.com/haskell/cabal/issues/6281) [#6912](https://github.com/haskell/cabal/pull/6912) +- default-language field is optional in cabal-version: 3.4 [#6288](https://github.com/haskell/cabal/issues/6288) [#6924](https://github.com/haskell/cabal/pull/6924) [#6926](https://github.com/haskell/cabal/pull/6926) +- Split `KnownRepoType` out of `RepoType` [#6432](https://github.com/haskell/cabal/issues/6432) [#6612](https://github.com/haskell/cabal/pull/6612) +- Include component name in unit-id [#6485](https://github.com/haskell/cabal/issues/6485) [#6547](https://github.com/haskell/cabal/pull/6547) +- Change 'optional-packages' default to empty, when cabal.project is mising. [#4797](https://github.com/haskell/cabal/issues/4797) [#6739](https://github.com/haskell/cabal/issues/6739) [#6740](https://github.com/haskell/cabal/pull/6740) +- Fix rpmvercmp (trailing non-digit characters) [#6805](https://github.com/haskell/cabal/issues/6805) [#6808](https://github.com/haskell/cabal/pull/6808) +- other changes [#6556](https://github.com/haskell/cabal/pull/6556) [#6598](https://github.com/haskell/cabal/pull/6598) [#6910](https://github.com/haskell/cabal/pull/6910) +- Package description parser benchmark [#6594](https://github.com/haskell/cabal/pull/6594) +- Add `licenceIsFsfLibre` [#6878](https://github.com/haskell/cabal/pull/6878) +- Add `+stderr` modifier to `Verbosity` [#6929](https://github.com/haskell/cabal/pull/6929) +- Mark public-libs as experimental feature [#6605](https://github.com/haskell/cabal/pull/6605) +- Add rewriteFileLBS and use it to write setup wrapper [#6574](https://github.com/haskell/cabal/pull/6574) +- Add SPDX License List 3.9 [#6879](https://github.com/haskell/cabal/issues/6879) [#6662](https://github.com/haskell/cabal/pull/6662) [#6944](https://github.com/haskell/cabal/pull/6944) +- Change specVersion to have CabalSpecVersion type [#6653](https://github.com/haskell/cabal/pull/6653) +- Better UTF8 handling, parsed `ShortText` is now valid. [#6588](https://github.com/haskell/cabal/pull/6588) +- More checks in version range parser [#6586](https://github.com/haskell/cabal/pull/6586) +- Require cabal-versions `>=1.25` to be exact [#6654](https://github.com/haskell/cabal/pull/6654) +- Add and use weeder [#6779](https://github.com/haskell/cabal/pull/6779) [#6790](https://github.com/haskell/cabal/pull/6790) diff --git a/notes/cabal-install-3.4.0.0.md b/notes/cabal-install-3.4.0.0.md new file mode 100644 index 00000000000..3050ac8da0f --- /dev/null +++ b/notes/cabal-install-3.4.0.0.md @@ -0,0 +1,240 @@ +### Significant changes + +- Add cabal-version: 3.4 [#6663](https://github.com/haskell/cabal/pull/6663) + + See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4 + +- Support GHC-8.12 [#6903](https://github.com/haskell/cabal/issues/6903) [#6904](https://github.com/haskell/cabal/issues/6904) [#6905](https://github.com/haskell/cabal/issues/6905) [#6545](https://github.com/haskell/cabal/pull/6545) [#6552](https://github.com/haskell/cabal/pull/6552) [#6553](https://github.com/haskell/cabal/pull/6553) [#6563](https://github.com/haskell/cabal/pull/6563) [#6735](https://github.com/haskell/cabal/pull/6735) [#6844](https://github.com/haskell/cabal/pull/6844) [#6848](https://github.com/haskell/cabal/pull/6848) [#6865](https://github.com/haskell/cabal/pull/6865) [#6908](https://github.com/haskell/cabal/pull/6908) [#6947](https://github.com/haskell/cabal/pull/6947) + + - Support for `-this-package-key` deprecation + - Use process `createPipe` + - Add support for WINIO to Cabal + - Adopt to simplfied subsumption changes + + There are no magical 'IO = WithCallStack Prelude.IO` alias in Cabal, + as it is hard to get working with GHC-8.12's simplified subsumption. + +- Treat pkg:sublib dependency syntax as is in `cabal-version: 3.4` [#6083](https://github.com/haskell/cabal/issues/6083) [#6893](https://github.com/haskell/cabal/pull/6893) [#6907](https://github.com/haskell/cabal/pull/6907) + + In `cabal-version: 3.4` cabal files the dependency definition + + ```cabal + build-depends: somesublib + ``` + + is not using in-package sublibraries. You have to be explicit and write + + ```cabal + build-depends: thispkg:somesublib + ``` + + This fixes an issue, where it was impossible to refer to extenral + library, if you had sublibrary of the same name. + +- Add active-repositories configuration [#6819](https://github.com/haskell/cabal/issues/6819) [#6724](https://github.com/haskell/cabal/pull/6724) [#6868](https://github.com/haskell/cabal/pull/6868) + + New `active-repositories` `cabal.project` fields allows + specifying an order and ways various package repositories are combined. + + The active `active-repositories` is saved in `cabal.project.freeze`. + +- Various `cabal init` improvements [#6150](https://github.com/haskell/cabal/issues/6150) [#6675](https://github.com/haskell/cabal/issues/6675) [#6603](https://github.com/haskell/cabal/pull/6603) [#6607](https://github.com/haskell/cabal/pull/6607) [#6619](https://github.com/haskell/cabal/pull/6619) [#6632](https://github.com/haskell/cabal/pull/6632) [#6641](https://github.com/haskell/cabal/pull/6641) [#6650](https://github.com/haskell/cabal/pull/6650) [#6661](https://github.com/haskell/cabal/pull/6661) [#6676](https://github.com/haskell/cabal/pull/6676) [#6677](https://github.com/haskell/cabal/pull/6677) [#6678](https://github.com/haskell/cabal/pull/6678) [#6690](https://github.com/haskell/cabal/pull/6690) [#6705](https://github.com/haskell/cabal/pull/6705) [#6723](https://github.com/haskell/cabal/pull/6723) + + - Default to `cabal-version: 2.4` + - `cabal` doesn't force a default license choice anymore + - Licenses are always asked using SPDX expression + - Fix an infinite loop when invalid license was passed on command line + - `Setup.hs` is not written anymore + - Default to --source-dir=src and --application-dir=app + - Add FileCreators.generateCabalFile unit tests. + - Default cabal init application-dir to app, and source-dir to src. + - Default to SPDX.NONE license in cabal init interactive mode. + + TODO: complete the description + +- Rework `v2-sdist` command [#2940](https://github.com/haskell/cabal/issues/2940) [#5813](https://github.com/haskell/cabal/issues/5813) [#6514](https://github.com/haskell/cabal/issues/6514) [#6611](https://github.com/haskell/cabal/issues/6611) [#6635](https://github.com/haskell/cabal/issues/6635) [#6454](https://github.com/haskell/cabal/pull/6454) [#6637](https://github.com/haskell/cabal/pull/6637) [#6640](https://github.com/haskell/cabal/pull/6640) [#6660](https://github.com/haskell/cabal/pull/6660) [#6666](https://github.com/haskell/cabal/pull/6666) [#6884](https://github.com/haskell/cabal/pull/6884) [#6916](https://github.com/haskell/cabal/pull/6916) + + `v2-sdist` marks all files as readonly in resulting tarballs. + + The #2940 "cabal sdist should touch preprocessed .hs files" issue + is fixed by virtue of not doing any preprocessing anymore. + It's responsibility of packager. + + The #6611 "v2-sdist includes a file twice in the tarball " issue + is fixed as we don't consider only one file list, + not two separate executable and ordinary file lists. + + The #6514 "unpack doesn't preserve (executable) permissions" issue + is partially resolved, as there shouldn't be executable permissions + in the tar files. + + The rationale for above simplification is simple. The only file + Cabal machinery would run is `configure` script. These + are run with explicit `sh` program. For package internal scripts, + maintainers should also use interpreters explicitly as well. + Scripts with shebangs are not executable on Windows. + + The `v1-sdist` command is removed, as its functionality is completely + superseded by `v2-sdist`. + +- `source-repository-package` directories aren't local [#5586](https://github.com/haskell/cabal/issues/5586) [#6915](https://github.com/haskell/cabal/pull/6915) [#6917](https://github.com/haskell/cabal/pull/6917) + + Concretely these means that compiled `source-repository-package` entries + used in different projects are stored in the global nix-style store. + +- Add list-bin command [#6807](https://github.com/haskell/cabal/issues/6807) [#6931](https://github.com/haskell/cabal/pull/6931) + + `cabal list-bin executable-component` tells the path to the build artifact. + +- Remove sandboxes [#6445](https://github.com/haskell/cabal/issues/6445) [#6747](https://github.com/haskell/cabal/pull/6747) + + Sandbox functionality is remove in favour of now default nix-style builds. + +- `cabal list` accepts regular expression [#4267](https://github.com/haskell/cabal/issues/4267) [#6683](https://github.com/haskell/cabal/issues/6683) [#6618](https://github.com/haskell/cabal/pull/6618) [#6806](https://github.com/haskell/cabal/pull/6806) +- More rich `index-state` syntax. `v2-freeze` saves `index-state`. [#6728](https://github.com/haskell/cabal/issues/6728) [#6581](https://github.com/haskell/cabal/pull/6581) [#6591](https://github.com/haskell/cabal/pull/6591) [#6596](https://github.com/haskell/cabal/pull/6596) [#6597](https://github.com/haskell/cabal/pull/6597) [#6682](https://github.com/haskell/cabal/pull/6682) [#6733](https://github.com/haskell/cabal/pull/6733) +### Other changes + +- Tests additions [#6409](https://github.com/haskell/cabal/issues/6409) [#6753](https://github.com/haskell/cabal/pull/6753) [#6759](https://github.com/haskell/cabal/pull/6759) [#6802](https://github.com/haskell/cabal/pull/6802) [#6842](https://github.com/haskell/cabal/pull/6842) [#6872](https://github.com/haskell/cabal/pull/6872) + + - Add shrinker, so writing big non-generic product shrinkers is easier + - Add `hs-source-dirs: NL .` test-case + - Add public multilib test(s) + +- Code organization [#6599](https://github.com/haskell/cabal/pull/6599) [#6642](https://github.com/haskell/cabal/pull/6642) [#6734](https://github.com/haskell/cabal/pull/6734) [#6745](https://github.com/haskell/cabal/pull/6745) [#6746](https://github.com/haskell/cabal/pull/6746) [#6817](https://github.com/haskell/cabal/pull/6817) [#6818](https://github.com/haskell/cabal/pull/6818) [#6821](https://github.com/haskell/cabal/pull/6821) [#6867](https://github.com/haskell/cabal/pull/6867) + + - Split `Distribution.Client.Types` module + - Move cabal-testsuite code into `src/` + - Add `ProjectFlags` + - Add `NixStyleOptions` + - Internal refactorings to install command. + - Make own modules for `InstallMethod` and `OverwritePolicy` + - Make cabal-install compilable with `NoImplicitPrelude` + - Refactor shared `TargetProblem` data types into their own module. + - Template `cabal-install.cabal` using zinza + +- The grammar of most package description fields is formally documented [#6591](https://github.com/haskell/cabal/pull/6591) [#6593](https://github.com/haskell/cabal/pull/6593) [#6704](https://github.com/haskell/cabal/pull/6704) [#6766](https://github.com/haskell/cabal/pull/6766) [#6778](https://github.com/haskell/cabal/pull/6778) [#6780](https://github.com/haskell/cabal/pull/6780) [#6781](https://github.com/haskell/cabal/pull/6781) [#6791](https://github.com/haskell/cabal/pull/6791) [#6800](https://github.com/haskell/cabal/pull/6800) + + See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html + +- Documentation updates and typo-fixes [#6504](https://github.com/haskell/cabal/pull/6504) [#6550](https://github.com/haskell/cabal/pull/6550) [#6560](https://github.com/haskell/cabal/pull/6560) [#6613](https://github.com/haskell/cabal/pull/6613) [#6660](https://github.com/haskell/cabal/pull/6660) [#6668](https://github.com/haskell/cabal/pull/6668) [#6669](https://github.com/haskell/cabal/pull/6669) [#6686](https://github.com/haskell/cabal/pull/6686) [#6697](https://github.com/haskell/cabal/pull/6697) [#6761](https://github.com/haskell/cabal/pull/6761) [#6928](https://github.com/haskell/cabal/pull/6928) [#6940](https://github.com/haskell/cabal/pull/6940) [#6951](https://github.com/haskell/cabal/pull/6951) [#6953](https://github.com/haskell/cabal/pull/6953) [#6954](https://github.com/haskell/cabal/pull/6954) + + TODO: Highlight larged changes + +- Add -fexpose-all-unfoldings to parsec and Cabal in release project [#6708](https://github.com/haskell/cabal/pull/6708) + + This makes parser faster with acceptable code-size increase. + +- Fix ghci being launched before other sources are built. [#6923](https://github.com/haskell/cabal/pull/6923) + + Related to foreign calls to C-sources. + +- Use default install directory if not specified [#5973](https://github.com/haskell/cabal/issues/5973) [#6624](https://github.com/haskell/cabal/pull/6624) + + Cabal 3.0.0.0 added the --installdir option to specify the location that + binaries should be installed in. Running a cabal user-config update would + populate the config file with the default value, but the cabal install program + would error if it wasn't set. This change uses the default value that would be + written to the config if its unset, and outputs a warning. + +- Update GHC environment location [#6565](https://github.com/haskell/cabal/issues/6565) [#6822](https://github.com/haskell/cabal/pull/6822) + + cabal-install currently assumes that the GHC environment files are always located in `$HOME/.ghc/`. + However, GHC itself doesn't query the home directory directly. + Instead, it uses `getAppUserDataDirectory "ghc"` which happens to coincide with `$HOME/.ghc`/ on UNIX systems. + On Windows, however, GHC ends up looking in `%APPDATA%/ghc/`. + +- Remove `-any` and `-none` syntax for version ranges in cabal-version: 3.4 [#6589](https://github.com/haskell/cabal/issues/6589) [#6786](https://github.com/haskell/cabal/pull/6786) + + Use `>=0` (or empty in dependencies) and `<0` respectively. + +- Add pijul to known repository type [#6610](https://github.com/haskell/cabal/issues/6610) [#6684](https://github.com/haskell/cabal/pull/6684) + + Pijul is now explicitly recognized version control system. + However `cabal-install` isn't yet able to use it in + `source-repository-package`. + +- Remove upgrade, uninstall and win32selfupgrade commands [#6691](https://github.com/haskell/cabal/issues/6691) [#6707](https://github.com/haskell/cabal/pull/6707) + + This commands were not implemented or are special purpose. + The removal of `win32selfupgrade` might break self upgrade on windows, + when `cabal-install` tries to rewrite the binary of itself. + This shouldn't be a problem when symlinking is used. + +- Remove local-repo [#6729](https://github.com/haskell/cabal/issues/6729) [#6730](https://github.com/haskell/cabal/pull/6730) + + This functionality was mainly used by removed sandboxes. + `file+noindex` repositories are better variant for local package repositories. + +- Add support for multiple public libraries to the solver [#6039](https://github.com/haskell/cabal/issues/6039) [#6047](https://github.com/haskell/cabal/pull/6047) [#6812](https://github.com/haskell/cabal/pull/6812) [#6836](https://github.com/haskell/cabal/pull/6836) + + cabal-install can now take into account the presence and visibility of + sublibraries when solving. This also means that, when using cabal-install, + multiple public libraries support is extended to GHCs older than 8.8. + The support is limited to source packages for now. + +- Remove text type-class [#6764](https://github.com/haskell/cabal/pull/6764) [#6777](https://github.com/haskell/cabal/pull/6777) [#6784](https://github.com/haskell/cabal/pull/6784) [#6785](https://github.com/haskell/cabal/pull/6785) [#6793](https://github.com/haskell/cabal/pull/6793) [#6794](https://github.com/haskell/cabal/pull/6794) + + `Text` type-class was removed from `Cabal`, but it still lived in `cabal-install`. + Now it is finally removed. + `cabal-install` is still using `ReadP` parsers for various things though. + +- Windows install symlinks [#5684](https://github.com/haskell/cabal/pull/5684) [#6506](https://github.com/haskell/cabal/pull/6506) [#6519](https://github.com/haskell/cabal/pull/6519) + + `cabal-install` will try to infer whether symlinking is supported on Windows, + and make symlinks in `install`. Otherwise it will fallback to copying files. + Either way can be forced with `--install-method`. + +- Use process jobs when spawning subprocesses [#6529](https://github.com/haskell/cabal/pull/6529) [#6536](https://github.com/haskell/cabal/pull/6536) + + Many toolchain tools written for POSIX systems rely on the exec system + call. Unfortunately, it is not possible to implement exec in a + POSIX-compliant manner on Windows. In particular, the semantics of the + exec implementation provided by the widely-used msvcrt C runtime + will cause process's waiting on the exec'ing process to incorrectly + conclude that the process has successfully terminated when in fact it is + still running in another process. + + For this reason, the process library exposes the use_process_jobs + flag to use a more strict (although still not POSIX-compliant) mechanism + for tracking process completion. + This is explained in [the Process.hs comment](https://github.com/haskell/process/blob/master/System/Process.hs#L399) + + Unfortunately, job support in the process library is currently quite + broken and was only recently fixed. Consequently, we only enable job + object support for process releases >= 1.6.8. + +- Change `BuildReports` parse/pretty to use FieldGrammar framework [#6783](https://github.com/haskell/cabal/pull/6783) +- Tell users about `cabal.project.local~` in `cabal v2-configure` [#6877](https://github.com/haskell/cabal/pull/6877) +- Improvements to cabal-testsuite framework [#6643](https://github.com/haskell/cabal/pull/6643) +- Refactor cabalInstallVersions, add make doctest-cli [#6720](https://github.com/haskell/cabal/pull/6720) +- Update copyright years to 2020 [#6644](https://github.com/haskell/cabal/pull/6644) +- Flag assignment parsing refactorings [#6853](https://github.com/haskell/cabal/issues/6853) [#6854](https://github.com/haskell/cabal/pull/6854) [#6858](https://github.com/haskell/cabal/pull/6858) +- Remove new- command from `--help` output (there are v2-) [#6930](https://github.com/haskell/cabal/pull/6930) +- Installing (copy or symlink) executable message prints destination. [#6582](https://github.com/haskell/cabal/pull/6582) [#6590](https://github.com/haskell/cabal/pull/6590) +- Check sha256 if `#sha256=...` fragments are given to URIs [#6576](https://github.com/haskell/cabal/pull/6576) +- all extra-source-files are change-tracked [#4746](https://github.com/haskell/cabal/issues/4746) [#6889](https://github.com/haskell/cabal/pull/6889) +- `upload --help` now includes `password-command` as a config file option (#5224) [#5224](https://github.com/haskell/cabal/issues/5224) [#6313](https://github.com/haskell/cabal/pull/6313) [#6609](https://github.com/haskell/cabal/pull/6609) [#6680](https://github.com/haskell/cabal/pull/6680) +- Use PrettyField to format cabal file in `cabal init` [#5555](https://github.com/haskell/cabal/issues/5555) [#6718](https://github.com/haskell/cabal/pull/6718) +- Default to 'NoReports' for remote build reporting [#6210](https://github.com/haskell/cabal/issues/6210) [#6625](https://github.com/haskell/cabal/pull/6625) +- Add foo:bar syntax to mixins [#6281](https://github.com/haskell/cabal/issues/6281) [#6912](https://github.com/haskell/cabal/pull/6912) +- default-language field is optional in cabal-version: 3.4 [#6288](https://github.com/haskell/cabal/issues/6288) [#6924](https://github.com/haskell/cabal/pull/6924) [#6926](https://github.com/haskell/cabal/pull/6926) +- Allow cabal v2-install pkgname:exename [#6369](https://github.com/haskell/cabal/issues/6369) [#6576](https://github.com/haskell/cabal/pull/6576) +- Allow cabal v2-install http:// [#6393](https://github.com/haskell/cabal/issues/6393) [#6576](https://github.com/haskell/cabal/pull/6576) +- Include component name in unit-id [#6485](https://github.com/haskell/cabal/issues/6485) [#6547](https://github.com/haskell/cabal/pull/6547) +- cabal v2-install prints copy/symlink destination [#6575](https://github.com/haskell/cabal/issues/6575) [#6582](https://github.com/haskell/cabal/pull/6582) [#6890](https://github.com/haskell/cabal/pull/6890) +- Prepend hs-source-dir to match-component, fixes `cabal repl file` [#6622](https://github.com/haskell/cabal/issues/6622) [#6623](https://github.com/haskell/cabal/pull/6623) [#6826](https://github.com/haskell/cabal/pull/6826) [#6875](https://github.com/haskell/cabal/pull/6875) +- Change 'optional-packages' default to empty, when cabal.project is mising. [#4797](https://github.com/haskell/cabal/issues/4797) [#6739](https://github.com/haskell/cabal/issues/6739) [#6740](https://github.com/haskell/cabal/pull/6740) +- v2-update reports new index-state [#6804](https://github.com/haskell/cabal/issues/6804) [#6810](https://github.com/haskell/cabal/pull/6810) +- Fix rpmvercmp (trailing non-digit characters) [#6805](https://github.com/haskell/cabal/issues/6805) [#6808](https://github.com/haskell/cabal/pull/6808) +- Add `-z` / `--ignore-project` flag to `cabal v2-update` [#6809](https://github.com/haskell/cabal/issues/6809) [#6814](https://github.com/haskell/cabal/pull/6814) +- Adjust message indicating `--lib` is likely desired [#6856](https://github.com/haskell/cabal/issues/6856) [#6857](https://github.com/haskell/cabal/pull/6857) +- cxx-sources, asm-sources and cmm-sources are change-tracked [#6869](https://github.com/haskell/cabal/issues/6869) [#6870](https://github.com/haskell/cabal/pull/6870) +- Change manpage command to man [#6548](https://github.com/haskell/cabal/pull/6548) +- other changes [#6556](https://github.com/haskell/cabal/pull/6556) [#6598](https://github.com/haskell/cabal/pull/6598) [#6910](https://github.com/haskell/cabal/pull/6910) +- Package description parser benchmark [#6594](https://github.com/haskell/cabal/pull/6594) +- Add `+stderr` modifier to `Verbosity` [#6929](https://github.com/haskell/cabal/pull/6929) +- Mark public-libs as experimental feature [#6605](https://github.com/haskell/cabal/pull/6605) +- Add SPDX License List 3.9 [#6879](https://github.com/haskell/cabal/issues/6879) [#6662](https://github.com/haskell/cabal/pull/6662) [#6944](https://github.com/haskell/cabal/pull/6944) +- More checks in version range parser [#6586](https://github.com/haskell/cabal/pull/6586) +- Require cabal-versions `>=1.25` to be exact [#6654](https://github.com/haskell/cabal/pull/6654) +- Add and use weeder [#6779](https://github.com/haskell/cabal/pull/6779) [#6790](https://github.com/haskell/cabal/pull/6790)