Skip to content

Commit e8af2b1

Browse files
committed
Template cabal-install.cabal using zinza
1 parent dde6255 commit e8af2b1

13 files changed

+1293
-471
lines changed

.github/workflows/quick-jobs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ jobs:
4444
make spdx
4545
make templates
4646
make github-actions
47+
make cabal-install-cabal
4748
- name: Check that diff is clean
4849
run: |
4950
git status > /dev/null

.github/workflows/windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
run: cabal v2-update
5050
- uses: actions/checkout@v2
5151
- name: make cabal-install-dev
52-
run: runghc cabal-dev-scripts/src/Preprocessor.hs -o cabal-install/cabal-install.cabal -f CABAL_FLAG_LIB cabal-install/cabal-install.cabal.pp
52+
run: cp cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal
5353
# We cannot ask for all dependencies, but we can for Cabal.
5454
- name: cabal v2-build Cabal --only-dependencies
5555
run: cabal v2-build Cabal --only-dependencies

Makefile

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,19 @@ Cabal/doc/buildinfo-fields-reference.rst : phony
6464

6565
# cabal-install.cabal file generation
6666

67-
cabal-install-prod : cabal-install/cabal-install.cabal.pp
68-
runghc -package-env=- cabal-dev-scripts/src/Preprocessor.hs -o cabal-install/cabal-install.cabal cabal-install/cabal-install.cabal.pp
69-
git update-index --no-assume-unchanged cabal-install/cabal-install.cabal
67+
cabal-install-cabal : phony cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal.prod
7068

71-
cabal-install-dev : cabal-install/cabal-install.cabal.pp
72-
runghc -package-env=- cabal-dev-scripts/src/Preprocessor.hs -o cabal-install/cabal-install.cabal -f CABAL_FLAG_LIB cabal-install/cabal-install.cabal.pp
69+
cabal-install/cabal-install.cabal.dev : cabal-install/cabal-install.cabal.zinza
70+
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-cabal-install-cabal -- True cabal-install/cabal-install.cabal.zinza cabal-install/cabal-install.cabal.dev
71+
72+
cabal-install/cabal-install.cabal.prod : cabal-install/cabal-install.cabal.zinza
73+
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-cabal-install-cabal -- False cabal-install/cabal-install.cabal.zinza cabal-install/cabal-install.cabal.prod
74+
75+
cabal-install-prod : cabal-install/cabal-install.cabal.prod
76+
cp cabal-install/cabal-install.cabal.prod cabal-install/cabal-install.cabal
77+
78+
cabal-install-dev : cabal-install/cabal-install.cabal.dev
79+
cp cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal
7380
@echo "tell git to ignore changes to cabal-install.cabal:"
7481
@echo "git update-index --assume-unchanged cabal-install/cabal-install.cabal"
7582

@@ -98,7 +105,7 @@ github-actions : .github/workflows/windows.yml
98105
# We need to generate cabal-install-dev so the test modules are in .cabal file!
99106
gen-extra-source-files-cli :
100107
$(MAKE) cabal-install-dev
101-
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
108+
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-extra-source-files -- $$(pwd)/cabal-install/cabal-install.cabal.zinza $$(pwd)/cabal-install/cabal-install.cabal
102109
$(MAKE) cabal-install-prod
103110

104111
# ghcid

appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ cache:
4747
- "C:\\sr"
4848

4949
build_script:
50-
- runghc cabal-dev-scripts/src/Preprocessor.hs -o cabal-install/cabal-install.cabal -f CABAL_FLAG_LIB cabal-install/cabal-install.cabal.pp
50+
- cp cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal
5151
- cabal %CABOPTS% v2-configure --enable-tests
5252
- appveyor-retry cabal %CABOPTS% v2-build lib:Cabal --only-dependencies
5353
- cabal %CABOPTS% v2-build lib:Cabal

boot/ci-quick-jobs.template.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ jobs:
4444
make spdx
4545
make templates
4646
make github-actions
47+
make cabal-install-cabal
4748
- name: Check that diff is clean
4849
run: |
4950
git status > /dev/null

boot/ci-windows.template.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
run: cabal v2-update
5757
- uses: actions/checkout@v2
5858
- name: make cabal-install-dev
59-
run: runghc cabal-dev-scripts/src/Preprocessor.hs -o cabal-install/cabal-install.cabal -f CABAL_FLAG_LIB cabal-install/cabal-install.cabal.pp
59+
run: cp cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal
6060
# We cannot ask for all dependencies, but we can for Cabal.
6161
- name: cabal v2-build Cabal --only-dependencies
6262
run: cabal v2-build Cabal --only-dependencies

cabal-dev-scripts/cabal-dev-scripts.cabal

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,17 @@ executable gen-cabal-macros
8181
, template-haskell
8282
, zinza ^>=0.2
8383

84+
executable gen-cabal-install-cabal
85+
default-language: Haskell2010
86+
main-is: GenCabalInstallCabal.hs
87+
hs-source-dirs: src
88+
ghc-options: -Wall
89+
build-depends:
90+
, base
91+
, bytestring
92+
, Cabal
93+
, zinza ^>=0.2
94+
8495
executable analyse-imports
8596
default-language: Haskell2010
8697
main-is: AnalyseImports.hs
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{-# LANGUAGE DeriveGeneric #-}
2+
{-# LANGUAGE ScopedTypeVariables #-}
3+
module Main (main) where
4+
5+
import Control.Exception (SomeException (..), catch, displayException)
6+
import GHC.Generics (Generic)
7+
import System.Environment (getArgs)
8+
import System.Exit (exitFailure)
9+
10+
import qualified Zinza as Z
11+
12+
withIO :: (Bool -> FilePath -> FilePath -> IO a) -> IO a
13+
withIO k = do
14+
args <- getArgs
15+
case args of
16+
[dev',src,tgt]
17+
| Just dev <- parseBool dev'
18+
-> k dev src tgt `catch` \(SomeException e) -> do
19+
putStrLn $ "Exception: " ++ displayException e
20+
exitFailure
21+
_ -> do
22+
putStrLn "Usage cabal v2-run ... source.temeplate.ext target.ext"
23+
exitFailure
24+
where
25+
parseBool "True" = Just True
26+
parseBool "False" = Just False
27+
parseBool _ = Nothing
28+
29+
30+
main :: IO ()
31+
main = withIO $ \dev src tgt -> do
32+
render <- Z.parseAndCompileTemplateIO src
33+
contents <- render $ Z dev ()
34+
writeFile tgt contents
35+
36+
-------------------------------------------------------------------------------
37+
-- Data
38+
-------------------------------------------------------------------------------
39+
40+
data Z = Z
41+
{ zDev :: Bool
42+
, zUnused :: ()
43+
}
44+
deriving (Generic)
45+
46+
instance Z.Zinza Z where
47+
toType = Z.genericToTypeSFP
48+
toValue = Z.genericToValueSFP
49+
fromValue = Z.genericFromValueSFP

cabal-dev-scripts/src/Preprocessor.hs

Lines changed: 0 additions & 225 deletions
This file was deleted.

0 commit comments

Comments
 (0)