Skip to content

Commit 6279b6f

Browse files
authored
Merge pull request #6401 from phadej/backport-batch-2
Backport batch 2 into 3.0
2 parents b12ac19 + 2245d56 commit 6279b6f

30 files changed

+340
-410
lines changed

.dockerignore

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Note: some cabal-testsuite tests need .git, so we cannot ignore that.
2+
3+
cabal.project.local
4+
.ghc.environment.*
5+
6+
**/.hpc
7+
**/*.hi
8+
**/*.o
9+
**/*.p_hi
10+
**/*.prof
11+
**/*.tix
12+
13+
**/*.sw*
14+
15+
**/Setup
16+
**/*.dist
17+
18+
Cabal/dist/
19+
Cabal/.python-sphinx-virtualenv/
20+
Cabal/tests/Setup
21+
Cabal/Setup
22+
Cabal/source-file-list
23+
24+
cabal-install/dist/
25+
cabal-install/Setup
26+
cabal-install/source-file-list
27+
28+
.github/
29+
dist-newstyle/
30+
dist-newstyle-*/
31+
32+
Cabal/.python-sphinx-virtualenv

.travis.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ matrix:
6262
- env: GHCVER=8.6.5 SCRIPT=script USE_GOLD=YES
6363
os: linux
6464
sudo: required
65+
- env: GHCVER=8.8.1 SCRIPT=script USE_GOLD=YES
66+
os: linux
67+
sudo: required
6568
#- env: GHCVER=8.8.1 SCRIPT=script USE_GOLD=YES
6669
# os: linux
6770
# sudo: required
@@ -125,7 +128,7 @@ before_install:
125128
- export PATH=$HOME/bin:$PATH
126129
- export PATH=$HOME/.cabal/bin:$PATH
127130
- export PATH=$HOME/.local/bin:$PATH
128-
- export PATH=/opt/cabal/2.4/bin:$PATH
131+
- export PATH=/opt/cabal/3.0/bin:$PATH
129132
- if [ "$USE_GOLD" = "YES" ]; then sudo update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 20; fi
130133
- if [ "$USE_GOLD" = "YES" ]; then sudo update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.bfd" 10; fi
131134
- ld -v

Cabal/Cabal.cabal

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,10 @@ library
281281
ghc-options: -Wall -fno-ignore-asserts -fwarn-tabs
282282
if impl(ghc >= 8.0)
283283
ghc-options: -Wcompat -Wnoncanonical-monad-instances
284-
-Wnoncanonical-monadfail-instances
285-
else
284+
if impl(ghc <8.8)
285+
ghc-options: -Wnoncanonical-monadfail-instances
286+
287+
if !impl(ghc >= 8.0)
286288
-- at least one of lib:Cabal's dependency (i.e. `parsec`)
287289
-- already depends on `fail` and `semigroups` transitively
288290
build-depends: fail == 4.9.*, semigroups >= 0.18.3 && < 0.20
@@ -605,14 +607,14 @@ test-suite unit-tests
605607
directory,
606608
filepath,
607609
integer-logarithms >= 1.0.2 && <1.1,
608-
tasty >= 1.1.0.3 && < 1.2,
610+
tasty >= 1.2.3 && < 1.3,
609611
tasty-hunit,
610612
tasty-quickcheck,
611613
tagged,
612614
temporary,
613615
text,
614616
pretty,
615-
QuickCheck >= 2.11.3 && < 2.12,
617+
QuickCheck >= 2.13.2 && < 2.14,
616618
Cabal
617619
ghc-options: -Wall
618620
default-language: Haskell2010
@@ -623,22 +625,22 @@ test-suite parser-tests
623625
main-is: ParserTests.hs
624626
build-depends:
625627
base,
626-
base-compat >=0.10.4 && <0.11,
628+
base-compat >=0.11.0 && <0.12,
627629
bytestring,
628630
directory,
629631
filepath,
630-
tasty >= 1.1.0.3 && < 1.2,
632+
tasty >= 1.2.3 && < 1.3,
631633
tasty-hunit,
632634
tasty-quickcheck,
633635
tasty-golden >=2.3.1.1 && <2.4,
634-
Diff >=0.3.4 && <0.4,
636+
Diff >=0.4 && <0.5,
635637
Cabal
636638
ghc-options: -Wall
637639
default-language: Haskell2010
638640

639641
if impl(ghc >= 7.8)
640642
build-depends:
641-
tree-diff >= 0.0.2 && <0.1
643+
tree-diff >= 0.1 && <0.2
642644
other-modules:
643645
Instances.TreeDiff
644646
Instances.TreeDiff.Language
@@ -654,9 +656,9 @@ test-suite check-tests
654656
bytestring,
655657
directory,
656658
filepath,
657-
tasty >= 1.1.0.3 && < 1.2,
659+
tasty >= 1.2.3 && < 1.3,
658660
tasty-golden >=2.3.1.1 && <2.4,
659-
Diff >=0.3.4 && <0.4,
661+
Diff >=0.4 && <0.5,
660662
Cabal
661663
ghc-options: -Wall
662664
default-language: Haskell2010
@@ -696,15 +698,15 @@ test-suite hackage-tests
696698
filepath
697699

698700
build-depends:
699-
base-compat >=0.10.4 && <0.11,
701+
base-compat >=0.11.0 && <0.12,
700702
base-orphans >=0.6 && <0.9,
701-
optparse-applicative >=0.13.2.0 && <0.15,
703+
optparse-applicative >=0.13.2.0 && <0.16,
702704
stm >=2.4.5.0 && <2.6,
703705
tar >=0.5.0.3 && <0.6
704706

705707
if impl(ghc >= 7.8)
706708
build-depends:
707-
tree-diff >= 0.0.2 && <0.1
709+
tree-diff >= 0.1 && <0.2
708710
other-modules:
709711
Instances.TreeDiff
710712
Instances.TreeDiff.Language
@@ -726,7 +728,7 @@ test-suite rpmvercmp
726728
bytestring
727729

728730
build-depends:
729-
tasty >= 1.1.0.3 && < 1.2,
731+
tasty >= 1.2.3 && < 1.3,
730732
tasty-hunit,
731733
tasty-quickcheck,
732734
QuickCheck

Cabal/tests/CheckTests.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module Main
55
import Test.Tasty
66
import Test.Tasty.Golden.Advanced (goldenTest)
77

8-
import Data.Algorithm.Diff (Diff (..), getGroupedDiff)
8+
import Data.Algorithm.Diff (PolyDiff (..), getGroupedDiff)
99
import Distribution.Fields (runParseResult)
1010
import Distribution.PackageDescription.Check (checkPackage)
1111
import Distribution.PackageDescription.Parsec (parseGenericPackageDescription)

Cabal/tests/ParserTests.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import Test.Tasty.Golden.Advanced (goldenTest)
1111
import Test.Tasty.HUnit
1212

1313
import Control.Monad (unless, void)
14-
import Data.Algorithm.Diff (Diff (..), getGroupedDiff)
14+
import Data.Algorithm.Diff (PolyDiff (..), getGroupedDiff)
1515
import Data.Maybe (isNothing)
1616
import Distribution.Fields (runParseResult)
1717
import Distribution.PackageDescription (GenericPackageDescription)

Makefile

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ LEXER_HS:=Cabal/Distribution/Fields/Lexer.hs
66
SPDX_LICENSE_HS:=Cabal/Distribution/SPDX/LicenseId.hs
77
SPDX_EXCEPTION_HS:=Cabal/Distribution/SPDX/LicenseExceptionId.hs
88

9-
CABALBUILD := cabal new-build --enable-tests
10-
CABALRUN := cabal new-run --enable-tests
9+
CABALBUILD := cabal v2-build
10+
CABALRUN := cabal v2-run
1111

1212
# default rules
1313

@@ -19,6 +19,10 @@ lib : $(LEXER_HS)
1919
exe : $(LEXER_HS)
2020
$(CABALBUILD) cabal-install:exes
2121

22+
# Build library with oldest supported GHC
23+
lib-ghc-7.6 :
24+
$(CABALBUILD) --project-file=cabal.project.libonly --with-compiler=ghc-7.6.3 Cabal:libs
25+
2226
# source generation: Lexer
2327

2428
lexer : $(LEXER_HS)
@@ -33,10 +37,10 @@ $(LEXER_HS) : boot/Lexer.x
3337
spdx : $(SPDX_LICENSE_HS) $(SPDX_EXCEPTION_HS)
3438

3539
$(SPDX_LICENSE_HS) : boot/SPDX.LicenseId.template.hs cabal-dev-scripts/src/GenUtils.hs cabal-dev-scripts/src/GenSPDX.hs license-list-data/licenses-3.0.json license-list-data/licenses-3.2.json
36-
cabal new-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-spdx -- boot/SPDX.LicenseId.template.hs license-list-data/licenses-3.0.json license-list-data/licenses-3.2.json license-list-data/licenses-3.6.json $(SPDX_LICENSE_HS)
40+
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-spdx -- boot/SPDX.LicenseId.template.hs license-list-data/licenses-3.0.json license-list-data/licenses-3.2.json license-list-data/licenses-3.6.json $(SPDX_LICENSE_HS)
3741

3842
$(SPDX_EXCEPTION_HS) : boot/SPDX.LicenseExceptionId.template.hs cabal-dev-scripts/src/GenUtils.hs cabal-dev-scripts/src/GenSPDXExc.hs license-list-data/exceptions-3.0.json license-list-data/exceptions-3.2.json
39-
cabal new-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-spdx-exc -- boot/SPDX.LicenseExceptionId.template.hs license-list-data/exceptions-3.0.json license-list-data/exceptions-3.2.json license-list-data/exceptions-3.6.json $(SPDX_EXCEPTION_HS)
43+
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-spdx-exc -- boot/SPDX.LicenseExceptionId.template.hs license-list-data/exceptions-3.0.json license-list-data/exceptions-3.2.json license-list-data/exceptions-3.6.json $(SPDX_EXCEPTION_HS)
4044

4145
# cabal-install.cabal file generation
4246

@@ -59,21 +63,21 @@ cabal-install-monolithic : cabal-install/cabal-install.cabal.pp
5963
gen-extra-source-files : gen-extra-source-files-lib gen-extra-source-files-cli
6064

6165
gen-extra-source-files-lib :
62-
cabal new-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-extra-source-files -- $$(pwd)/Cabal/Cabal.cabal
66+
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-extra-source-files -- $$(pwd)/Cabal/Cabal.cabal
6367

6468
# We need to generate cabal-install-dev so the test modules are in .cabal file!
6569
gen-extra-source-files-cli :
6670
$(MAKE) cabal-install-dev
67-
cabal new-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-extra-source-files -- $$(pwd)/cabal-install/cabal-install.cabal.pp $$(pwd)/cabal-install/cabal-install.cabal
71+
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-extra-source-files -- $$(pwd)/cabal-install/cabal-install.cabal.pp $$(pwd)/cabal-install/cabal-install.cabal
6872
$(MAKE) cabal-install-prod
6973

7074
# ghcid
7175

7276
ghcid-lib :
73-
ghcid -c 'cabal new-repl Cabal'
77+
ghcid -c 'cabal v2-repl Cabal'
7478

7579
ghcid-cli :
76-
ghcid -c 'cabal new-repl cabal-install'
80+
ghcid -c 'cabal v2-repl cabal-install'
7781

7882
# doctests (relies on .ghc.environment files)
7983

@@ -83,7 +87,7 @@ doctest :
8387
# tests
8488

8589
check-tests :
86-
$(CABALRUN) --enable-tests check-tests -- --cwd Cabal ${TEST}
90+
$(CABALRUN) check-tests -- --cwd Cabal ${TEST}
8791

8892
parser-tests :
8993
$(CABALRUN) parser-tests -- --cwd Cabal ${TEST}
@@ -105,3 +109,6 @@ cabal-install-test:
105109
$(CABALBUILD) -j3 cabal-tests cabal
106110
rm -rf .ghc.environment.*
107111
cd cabal-testsuite && `cabal-plan list-bin cabal-tests` --with-cabal=`cabal-plan list-bin cabal` --hide-successes -j3 ${TEST}
112+
113+
validate-via-docker:
114+
docker build -t cabal-validate -f validate.dockerfile .

cabal-install/Distribution/Client/CmdBuild.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ module Distribution.Client.CmdBuild (
1111
selectComponentTarget
1212
) where
1313

14+
import Prelude ()
15+
import Distribution.Client.Compat.Prelude
16+
1417
import Distribution.Client.ProjectOrchestration
1518
import Distribution.Client.CmdErrorMessages
1619

17-
import Distribution.Compat.Semigroup ((<>))
1820
import Distribution.Client.Setup
1921
( GlobalFlags, ConfigFlags(..), ConfigExFlags, InstallFlags
2022
, liftOptions, yesNoOpt )

cabal-install/Distribution/Client/CmdSdist.hs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ module Distribution.Client.CmdSdist
99
, SdistFlags(..), defaultSdistFlags
1010
, OutputFormat(..)) where
1111

12+
import Prelude ()
13+
import Distribution.Client.Compat.Prelude
14+
1215
import Distribution.Client.CmdErrorMessages
1316
( Plural(..), renderComponentKind )
1417
import Distribution.Client.ProjectOrchestration
@@ -29,9 +32,6 @@ import Distribution.Client.DistDirLayout
2932
import Distribution.Client.ProjectConfig
3033
( findProjectRoot, readProjectConfig )
3134

32-
import Distribution.Compat.Semigroup
33-
((<>))
34-
3535
import Distribution.Package
3636
( Package(packageId) )
3737
import Distribution.PackageDescription.Configuration
@@ -64,8 +64,6 @@ import qualified Codec.Archive.Tar.Entry as Tar
6464
import qualified Codec.Compression.GZip as GZip
6565
import Control.Exception
6666
( throwIO )
67-
import Control.Monad
68-
( when, forM_ )
6967
import Control.Monad.Trans
7068
( liftIO )
7169
import Control.Monad.State.Lazy
@@ -77,7 +75,7 @@ import qualified Data.ByteString.Lazy.Char8 as BSL
7775
import Data.Either
7876
( partitionEithers )
7977
import Data.List
80-
( find, sortOn, nub )
78+
( sortOn )
8179
import qualified Data.Set as Set
8280
import System.Directory
8381
( getCurrentDirectory, setCurrentDirectory
@@ -192,7 +190,7 @@ sdistAction SdistFlags{..} targetStrings globalFlags = do
192190
| length pkgs > 1, not listSources, Just "-" <- mOutputPath' ->
193191
die' verbosity "Can't write multiple tarballs to standard output!"
194192
| otherwise ->
195-
mapM_ (\pkg -> packageToSdist verbosity (distProjectRootDirectory distLayout) format (outputPath pkg) pkg) pkgs
193+
traverse_ (\pkg -> packageToSdist verbosity (distProjectRootDirectory distLayout) format (outputPath pkg) pkg) pkgs
196194

197195
data IsExec = Exec | NoExec
198196
deriving (Show, Eq)
@@ -256,7 +254,7 @@ packageToSdist verbosity projectRootDir format outputFile pkg = do
256254
Left err -> liftIO $ die' verbosity ("Error packing sdist: " ++ err)
257255
Right path -> tell [Tar.directoryEntry path]
258256

259-
forM_ files $ \(perm, file) -> do
257+
for_ files $ \(perm, file) -> do
260258
let fileDir = takeDirectory (prefix </> file)
261259
perm' = case perm of
262260
Exec -> Tar.executableFilePermissions
@@ -276,9 +274,9 @@ packageToSdist verbosity projectRootDir format outputFile pkg = do
276274

277275
entries <- execWriterT (evalStateT entriesM mempty)
278276
let -- Pretend our GZip file is made on Unix.
279-
normalize bs = BSL.concat [first, "\x03", rest']
277+
normalize bs = BSL.concat [pfx, "\x03", rest']
280278
where
281-
(first, rest) = BSL.splitAt 9 bs
279+
(pfx, rest) = BSL.splitAt 9 bs
282280
rest' = BSL.tail rest
283281
-- The Unix epoch, which is the default value, is
284282
-- unsuitable because it causes unpacking problems on

0 commit comments

Comments
 (0)