-
Add cabal-version: 3.4 !6663
See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4
-
Support GHC-8.12 #6903 #6904 #6905 !6545 !6552 !6553 !6563 !6735 !6844 !6848 !6865 !6908 !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. - Support for
-
Treat
pkg:sublib
dependency syntax as is incabal-version: 3.4
#6083 !6893 !6907In
cabal-version: 3.4
cabal files the dependency definitionbuild-depends: somesublib
is not using in-package sublibraries. You have to be explicit and write
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 !6724 !6868
New
active-repositories
cabal.project
fields allows specifying an order and ways various package repositories are combined.The active
active-repositories
is saved incabal.project.freeze
. -
Various
cabal init
improvements #6150 #6675 !6603 !6607 !6619 !6632 !6641 !6650 !6661 !6676 !6677 !6678 !6690 !6705 !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 tosrc
. - Default to SPDX.NONE license in cabal init interactive mode.
- Default to
-
Rework
v2-sdist
command #2940 #5813 #6514 #6611 #6635 !6454 !6637 !6640 !6660 !6666 !6884 !6916v2-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 explicitsh
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 byv2-sdist
. -
source-repository-package
directories aren't local #5586 !6915 !6917Concretely 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 !6931
cabal list-bin executable-component
tells the path to the build artifact. -
Sandbox functionality is remove in favour of now default nix-style builds.
-
cabal list
accepts regular expression #4267 #6683 !6618 !6806 -
More rich
index-state
syntax.v2-freeze
savesindex-state
. #6728 !6581 !6591 !6596 !6597 !6682 !6733
-
Tests additions #6409 !6753 !6759 !6802 !6842 !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 !6642 !6734 !6745 !6746 !6817 !6818 !6821 !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
andOverwritePolicy
- Make cabal-install compilable with
NoImplicitPrelude
- Refactor shared
TargetProblem
data types into their own module. - Template
cabal-install.cabal
using zinza
- Split
-
The grammar of most package description fields is formally documented !6591 !6593 !6704 !6766 !6778 !6780 !6781 !6791 !6800
See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html
-
Add -fexpose-all-unfoldings to parsec and Cabal in release project !6708
This makes parser faster with acceptable code-size increase.
-
Fix ghci being launched before other sources are built. !6923
Related to foreign calls to C-sources.
-
Use default install directory if not specified #5973 !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 !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 usesgetAppUserDataDirectory "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 !6786Use
>=0
(or empty in dependencies) and<0
respectively. -
Add pijul to known repository type #6610 !6684
Pijul is now explicitly recognized version control system. However
cabal-install
isn't yet able to use it insource-repository-package
. -
Remove upgrade, uninstall and win32selfupgrade commands #6691 !6707
This commands were not implemented or are special purpose. The removal of
win32selfupgrade
might break self upgrade on windows, whencabal-install
tries to rewrite the binary of itself. This shouldn't be a problem when symlinking is used. -
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 !6047 !6812 !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 !6777 !6784 !6785 !6793 !6794
Text
type-class was removed fromCabal
, but it still lived incabal-install
. Now it is finally removed.cabal-install
is still usingReadP
parsers for various things though. -
Windows install symlinks !5684 !6506 !6519
cabal-install
will try to infer whether symlinking is supported on Windows, and make symlinks ininstall
. Otherwise it will fallback to copying files. Either way can be forced with--install-method
. -
Use process jobs when spawning subprocesses !6529 !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
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 -
Tell users about
cabal.project.local~
incabal v2-configure
!6877 -
Improvements to cabal-testsuite framework !6643
-
Refactor cabalInstallVersions, add make doctest-cli !6720
-
Update copyright years to 2020 !6644
-
Documentation updates and typo-fixes !6504 !6550 !6560 !6613 !6660 !6668 !6669 !6686 !6697 !6761 !6928 !6940 !6951 !6953 !6954
-
Remove new- command from
--help
output (there are v2-) !6930 -
Installing (copy or symlink) executable message prints destination. !6582 !6590
-
Check sha256 if
#sha256=...
fragments are given to URIs !6576 -
upload --help
now includespassword-command
as a config file option (#5224) #5224 !6313 !6609 !6680 -
Use PrettyField to format cabal file in
cabal init
#5555 !6718 -
Default to 'NoReports' for remote build reporting #6210 !6625
-
default-language field is optional in cabal-version: 3.4 #6288 !6924 !6926
-
cabal v2-install prints copy/symlink destination #6575 !6582 !6890
-
Prepend hs-source-dir to match-component, fixes
cabal repl file
#6622 !6623 !6826 !6875 -
Change 'optional-packages' default to empty, when cabal.project is mising. #4797 #6739 !6740
-
Add
-z
/--ignore-project
flag tocabal v2-update
#6809 !6814 -
Adjust message indicating
--lib
is likely desired #6856 !6857 -
cxx-sources, asm-sources and cmm-sources are change-tracked #6869 !6870
-
Change manpage command to man !6548
-
Package description parser benchmark !6594
-
Add
+stderr
modifier toVerbosity
!6929 -
Mark public-libs as experimental feature !6605
-
More checks in version range parser !6586
-
Require cabal-versions
>=1.25
to be exact !6654