Skip to content

Commit

Permalink
Template cabal-install.cabal using zinza
Browse files Browse the repository at this point in the history
  • Loading branch information
phadej committed Jun 2, 2020
1 parent dde6255 commit e8af2b1
Show file tree
Hide file tree
Showing 13 changed files with 1,293 additions and 471 deletions.
1 change: 1 addition & 0 deletions .github/workflows/quick-jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ jobs:
make spdx
make templates
make github-actions
make cabal-install-cabal
- name: Check that diff is clean
run: |
git status > /dev/null
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
run: cabal v2-update
- uses: actions/checkout@v2
- name: make cabal-install-dev
run: runghc cabal-dev-scripts/src/Preprocessor.hs -o cabal-install/cabal-install.cabal -f CABAL_FLAG_LIB cabal-install/cabal-install.cabal.pp
run: cp cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal
# We cannot ask for all dependencies, but we can for Cabal.
- name: cabal v2-build Cabal --only-dependencies
run: cabal v2-build Cabal --only-dependencies
Expand Down
19 changes: 13 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,19 @@ Cabal/doc/buildinfo-fields-reference.rst : phony

# cabal-install.cabal file generation

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

cabal-install-dev : cabal-install/cabal-install.cabal.pp
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
cabal-install/cabal-install.cabal.dev : cabal-install/cabal-install.cabal.zinza
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

cabal-install/cabal-install.cabal.prod : cabal-install/cabal-install.cabal.zinza
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

cabal-install-prod : cabal-install/cabal-install.cabal.prod
cp cabal-install/cabal-install.cabal.prod cabal-install/cabal-install.cabal

cabal-install-dev : cabal-install/cabal-install.cabal.dev
cp cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal
@echo "tell git to ignore changes to cabal-install.cabal:"
@echo "git update-index --assume-unchanged cabal-install/cabal-install.cabal"

Expand Down Expand Up @@ -98,7 +105,7 @@ github-actions : .github/workflows/windows.yml
# We need to generate cabal-install-dev so the test modules are in .cabal file!
gen-extra-source-files-cli :
$(MAKE) cabal-install-dev
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
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
$(MAKE) cabal-install-prod

# ghcid
Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ cache:
- "C:\\sr"

build_script:
- runghc cabal-dev-scripts/src/Preprocessor.hs -o cabal-install/cabal-install.cabal -f CABAL_FLAG_LIB cabal-install/cabal-install.cabal.pp
- cp cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal
- cabal %CABOPTS% v2-configure --enable-tests
- appveyor-retry cabal %CABOPTS% v2-build lib:Cabal --only-dependencies
- cabal %CABOPTS% v2-build lib:Cabal
Expand Down
1 change: 1 addition & 0 deletions boot/ci-quick-jobs.template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ jobs:
make spdx
make templates
make github-actions
make cabal-install-cabal
- name: Check that diff is clean
run: |
git status > /dev/null
Expand Down
2 changes: 1 addition & 1 deletion boot/ci-windows.template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
run: cabal v2-update
- uses: actions/checkout@v2
- name: make cabal-install-dev
run: runghc cabal-dev-scripts/src/Preprocessor.hs -o cabal-install/cabal-install.cabal -f CABAL_FLAG_LIB cabal-install/cabal-install.cabal.pp
run: cp cabal-install/cabal-install.cabal.dev cabal-install/cabal-install.cabal
# We cannot ask for all dependencies, but we can for Cabal.
- name: cabal v2-build Cabal --only-dependencies
run: cabal v2-build Cabal --only-dependencies
Expand Down
11 changes: 11 additions & 0 deletions cabal-dev-scripts/cabal-dev-scripts.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,17 @@ executable gen-cabal-macros
, template-haskell
, zinza ^>=0.2

executable gen-cabal-install-cabal
default-language: Haskell2010
main-is: GenCabalInstallCabal.hs
hs-source-dirs: src
ghc-options: -Wall
build-depends:
, base
, bytestring
, Cabal
, zinza ^>=0.2

executable analyse-imports
default-language: Haskell2010
main-is: AnalyseImports.hs
Expand Down
49 changes: 49 additions & 0 deletions cabal-dev-scripts/src/GenCabalInstallCabal.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Main (main) where

import Control.Exception (SomeException (..), catch, displayException)
import GHC.Generics (Generic)
import System.Environment (getArgs)
import System.Exit (exitFailure)

import qualified Zinza as Z

withIO :: (Bool -> FilePath -> FilePath -> IO a) -> IO a
withIO k = do
args <- getArgs
case args of
[dev',src,tgt]
| Just dev <- parseBool dev'
-> k dev src tgt `catch` \(SomeException e) -> do
putStrLn $ "Exception: " ++ displayException e
exitFailure
_ -> do
putStrLn "Usage cabal v2-run ... source.temeplate.ext target.ext"
exitFailure
where
parseBool "True" = Just True
parseBool "False" = Just False
parseBool _ = Nothing


main :: IO ()
main = withIO $ \dev src tgt -> do
render <- Z.parseAndCompileTemplateIO src
contents <- render $ Z dev ()
writeFile tgt contents

-------------------------------------------------------------------------------
-- Data
-------------------------------------------------------------------------------

data Z = Z
{ zDev :: Bool
, zUnused :: ()
}
deriving (Generic)

instance Z.Zinza Z where
toType = Z.genericToTypeSFP
toValue = Z.genericToValueSFP
fromValue = Z.genericFromValueSFP
225 changes: 0 additions & 225 deletions cabal-dev-scripts/src/Preprocessor.hs

This file was deleted.

Loading

0 comments on commit e8af2b1

Please sign in to comment.