Skip to content

Support Cabal 3.0 #9

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
dist
dist
dist-*
27 changes: 1 addition & 26 deletions Setup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,5 @@ import Distribution.Simple (defaultMainWithHooks)
import Distribution.Simple.UUAGC (uuagcLibUserHook)
import UU.UUAGC (uuagc)

{-
main :: IO ()
main = defaultMainWithHooks $
uuagcLibUserHook uuagc
-}

{-
-}
import Distribution.PackageDescription
import Distribution.Simple.UserHooks
import Distribution.Package
import Distribution.Version
-- import Data.Version

main :: IO ()
main = defaultMainWithHooks $
addHook $
uuagcLibUserHook uuagc
where addHook hooks = hooks {
postConf = postConf_InsertVersion hooks
}
-- postConf_InsertVersion :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()
postConf_InsertVersion hooks args cfg pkgDescr bi = do
postConf hooks args cfg pkgDescr bi
writeFile "src/UHC/Shuffle/Version.hs" $
"module UHC.Shuffle.Version where\n" ++
"version = \"" ++ showVersion (pkgVersion $ package pkgDescr) ++ "\"\n"
main = defaultMainWithHooks $ uuagcLibUserHook uuagc
36 changes: 21 additions & 15 deletions shuffle.cabal
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
Cabal-Version: 2.4
Name: shuffle
Version: 0.1.4.0
Copyright: Utrecht University, Department of Information and Computing Sciences, Software Technology group
Description: Shuffle tool used by UHC (Utrecht Haskell Compiler)
Synopsis: Shuffle tool for UHC
Homepage: https://github.com/UU-ComputerScience/shuffle
Bug-Reports: https://github.com/UU-ComputerScience/shuffle/issues
License: BSD3
License: BSD-3-Clause
License-file: LICENSE
Author: UHC Team
Maintainer: [email protected]
Category: Development
Build-Type: Custom
Cabal-Version: >= 1.23
Extra-Source-Files: uuagc_options,
changelog.md,
src/UHC/Shuffle/AspectExprAbsSyn.ag,
src/UHC/Shuffle/CDocAbsSyn.ag,
src/UHC/Shuffle/CDocCommonAG.ag,
src/UHC/Shuffle/ChunkAbsSyn.ag
src/**/*.ag

Source-Repository head
Type: git
Expand All @@ -32,27 +29,36 @@ Library
default-language: Haskell2010
default-extensions:RankNTypes, TypeSynonymInstances, FlexibleInstances, FlexibleContexts
Exposed-Modules: UHC.Shuffle,
UHC.Shuffle.Version,
Distribution.Simple.Shuffle
Distribution.Simple.Shuffle,
UHC.Shuffle.Version
Other-Modules: UHC.Shuffle.AspectExpr,
UHC.Shuffle.AspectExprEval,
UHC.Shuffle.Common,
UHC.Shuffle.CDoc,
UHC.Shuffle.CDocCommon,
UHC.Shuffle.CDocSubst,
UHC.Shuffle.CDocInline,
UHC.Shuffle.CDocSubst,
UHC.Shuffle.ChunkParser,
UHC.Shuffle.MainAG
UHC.Shuffle.Common,
UHC.Shuffle.MainAG,
Paths_shuffle
autogen-modules: UHC.Shuffle.AspectExpr,
UHC.Shuffle.AspectExprEval,
UHC.Shuffle.CDoc,
UHC.Shuffle.CDocInline,
UHC.Shuffle.CDocSubst,
UHC.Shuffle.MainAG,
Paths_shuffle
Build-Depends: base >= 4 && < 5,
containers >= 0.4,
directory >= 1.1,
process >= 1.1,
array >= 0.4,
uulib >= 0.9,
uuagc >= 0.9.40.3,
uuagc-cabal >= 1.1.0.0,
uuagc-cabal >= 1.2.0.0,
uhc-util >= 0.1.5.5,
Cabal >= 2.0.0.2,
Cabal >= 3.0.0.0,
parsec >= 3.1.13.0,
filepath >= 1.2
if flag(network-uri)
build-depends: network-uri >= 2.6,
Expand All @@ -69,6 +75,6 @@ Executable shuffle

custom-setup
setup-depends: base >= 4 && < 5,
uuagc-cabal >= 1.1.0.0,
uuagc-cabal >= 1.2.0.0,
uuagc >= 0.9.40.3,
Cabal >= 2.0.0.2
Cabal >= 3.0.0.0
22 changes: 13 additions & 9 deletions src/Distribution/Simple/Shuffle.hs
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
module Distribution.Simple.Shuffle (shuffleHooks) where

import qualified Text.Parsec as Parsec

import Distribution.Simple (UserHooks (..))
import Distribution.Simple.PreProcess (PreProcessor (..), mkSimplePreProcessor)
import Distribution.PackageDescription (PackageDescription (..), BuildInfo (..), Executable (..),
Library (..), TestSuite (..))
import Distribution.Simple.LocalBuildInfo (LocalBuildInfo (..))
import Distribution.Simple.Utils (dieNoVerbosity, warn, info, notice, findFileWithExtension',
import Distribution.Simple.Utils (dieNoVerbosity, warn, info, notice, findFileWithExtension',
createDirectoryIfMissingVerbose, getDirectoryContentsRecursive)
import Distribution.Simple.Setup (BuildFlags(..), SDistFlags(..), fromFlagOrDefault)
import Distribution.Verbosity (Verbosity, normal)
import Distribution.ParseUtils (runP, parseOptCommaList, parseFilePathQ, ParseResult (..))
import Distribution.Parsec (unPP, parsecOptCommaList, parsecFilePath)
import Distribution.ModuleName (fromString, ModuleName)
import Distribution.Types.UnqualComponentName (unUnqualComponentName)
import Distribution.CabalSpecVersion (cabalSpecLatest)
import Distribution.Parsec.FieldLineStream (fieldLineStreamFromString)

import Control.Monad (forM, forM_, when)
import Data.Char (isSpace)
Expand Down Expand Up @@ -54,14 +58,14 @@ import UHC.Shuffle (shuffleCompile, parseOpts, getDeps, Opts, FPathWithAlias)
-- > Another.cag
--
shuffleHooks :: UserHooks -> UserHooks
shuffleHooks h = h { buildHook = shuffleBuildHook (buildHook h)
, sDistHook = mySDist (sDistHook h) }
shuffleHooks h = h { buildHook = shuffleBuildHook (buildHook h) }
-- , sDistHook = mySDist (sDistHook h) }

parseFileList :: String -> String -> Verbosity -> IO [FilePath]
parseFileList fieldName field verbosity =
case runP 0 fieldName (parseOptCommaList parseFilePathQ) field of
ParseFailed err -> dieNoVerbosity $ show err
ParseOk warnings r -> mapM_ (warn verbosity . show) warnings >> return r
case Parsec.runParser ((,) <$> unPP (parsecOptCommaList parsecFilePath) cabalSpecLatest <*> Parsec.getState <* Parsec.eof) [] fieldName (fieldLineStreamFromString field) of
Left err -> dieNoVerbosity $ show err
Right (r, warnings) -> mapM_ (warn verbosity . show) warnings >> return r

toModuleName :: FilePath -> ModuleName
toModuleName = fromString . map (\x -> if x == pathSeparator then '.' else x) . dropExtension
Expand Down Expand Up @@ -251,7 +255,7 @@ chsFiles ignore bi = do
fs <- forM (hsSourceDirs bi) $ \dir -> do
contents <- getDirectoryContentsRecursive dir
return $
map (\file -> normalise $ dir </> file) $
map (\file -> normalise $ dir </> file) $
filter (not . (`elem` ignore)) $
filter ((==".chs") . takeExtension) contents
return $ concat fs
Expand Down Expand Up @@ -285,7 +289,7 @@ mapBuildInfos pd f = do
exes <- forM (executables pd) (f . buildInfo)
tests <- forM (testSuites pd) (f . testBuildInfo)
libs <- case library pd of
Just lib -> do l <- f (libBuildInfo lib)
Just lib -> do l <- f (libBuildInfo lib)
return [l]
Nothing -> return []
return $ exes ++ tests ++ libs
7 changes: 7 additions & 0 deletions src/UHC/Shuffle/Version.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module UHC.Shuffle.Version (version) where

import qualified Paths_shuffle (version)
import Data.Version (showVersion)

version :: String
version = showVersion Paths_shuffle.version