From f864a5eae8262752162c6b0d124aea4601ed9ac1 Mon Sep 17 00:00:00 2001 From: Daniel Gröber Date: Mon, 18 Sep 2017 01:23:22 +0200 Subject: Fix literally everything :) Sorry for the megacommit - Seperate modules into: - Compiletime, modules which are only used while building the package - Runtime, modues included in the wrapper binary to be compiled on the users machine at runtime - Shared, modues used in both contexts - Refactor runtime compilation - Completely revamp output paths - Don't chdir when invoking ghc - Require cabal-version 1.14 in cabal file --- CabalHelper/Shared/Types.hs | 73 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 CabalHelper/Shared/Types.hs (limited to 'CabalHelper/Shared/Types.hs') diff --git a/CabalHelper/Shared/Types.hs b/CabalHelper/Shared/Types.hs new file mode 100644 index 0000000..18d532b --- /dev/null +++ b/CabalHelper/Shared/Types.hs @@ -0,0 +1,73 @@ +-- cabal-helper: Simple interface to Cabal's configuration state +-- Copyright (C) 2015 Daniel Gröber +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . + +{-# LANGUAGE DeriveGeneric, DeriveDataTypeable, DefaultSignatures #-} +module CabalHelper.Shared.Types where + +import GHC.Generics +import Data.Version + +newtype ChModuleName = ChModuleName String + deriving (Eq, Ord, Read, Show, Generic) + +data ChComponentName = ChSetupHsName + | ChLibName + | ChSubLibName String + | ChFLibName String + | ChExeName String + | ChTestName String + | ChBenchName String + deriving (Eq, Ord, Read, Show, Generic) + +data ChResponse + = ChResponseCompList [(ChComponentName, [String])] + | ChResponseEntrypoints [(ChComponentName, ChEntrypoint)] + | ChResponseList [String] + | ChResponsePkgDbs [ChPkgDb] + | ChResponseLbi String + | ChResponseVersion String Version + | ChResponseLicenses [(String, [(String, Version)])] + | ChResponseFlags [(String, Bool)] + deriving (Eq, Ord, Read, Show, Generic) + +data ChEntrypoint = ChSetupEntrypoint -- ^ Almost like 'ChExeEntrypoint' but + -- @main-is@ could either be @"Setup.hs"@ + -- or @"Setup.lhs"@. Since we don't know + -- where the source directory is you have + -- to find these files. + | ChLibEntrypoint { chExposedModules :: [ChModuleName] + , chOtherModules :: [ChModuleName] + } + | ChExeEntrypoint { chMainIs :: FilePath + , chOtherModules :: [ChModuleName] + } deriving (Eq, Ord, Read, Show, Generic) + +data ChPkgDb = ChPkgGlobal + | ChPkgUser + | ChPkgSpecific FilePath + deriving (Eq, Ord, Read, Show, Generic) + +data Options = Options { + verbose :: Bool + , ghcProgram :: FilePath + , ghcPkgProgram :: FilePath + , cabalProgram :: FilePath + , cabalVersion :: Maybe Version + , cabalPkgDb :: Maybe FilePath +} + +defaultOptions :: Options +defaultOptions = Options False "ghc" "ghc-pkg" "cabal" Nothing Nothing -- cgit v1.2.3