Navigation Menu

Skip to content
This repository has been archived by the owner on Nov 4, 2019. It is now read-only.

Commit

Permalink
refactor out Builder.hs to xournal-builder package.. Custom build sup…
Browse files Browse the repository at this point in the history
…porting pkg-config check for gtk+-2.0
  • Loading branch information
wavewave committed Dec 17, 2011
1 parent 2e70ee0 commit bd42661
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 88 deletions.
91 changes: 91 additions & 0 deletions Config.hs
@@ -0,0 +1,91 @@
{-# LANGUAGE ScopedTypeVariables #-}

module Config where

import Data.List
import Data.Maybe

import Control.Applicative
import Control.Monad


import Distribution.Simple
import Distribution.Simple.BuildPaths

import Distribution.Simple.Setup
import Distribution.PackageDescription
import Distribution.Simple.LocalBuildInfo

import Distribution.System

import System.Exit
import System.Process

import System.FilePath
import System.Directory

import System.Info

myConfigHook :: UserHooks
myConfigHook = simpleUserHooks {
confHook = hookfunction
}

hookfunction :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags
-> IO LocalBuildInfo
hookfunction x cflags = do
binfo <- confHook simpleUserHooks x cflags
let pkg_descr = localPkgDescr binfo
r_pbi <- config binfo
let newbinfo =
case r_pbi of
Just pbi -> binfo { localPkgDescr =
updatePackageDescription pbi pkg_descr }
Nothing -> do
let r_lib = library pkg_descr
case r_lib of
Just lib ->
let binfo2 = libBuildInfo lib
newlib = lib { libBuildInfo = binfo2 { cSources = [] }}
in binfo {localPkgDescr = pkg_descr {library = Just newlib}}
Nothing -> error "some library setting is wrong."
return newbinfo


config :: LocalBuildInfo -> IO (Maybe HookedBuildInfo)
config bInfo = do
(excode,out,err) <- readProcessWithExitCode "pkg-config" ["--cflags", "gtk+-2.0"] ""
incdirs <- case excode of
ExitSuccess -> return . extractIncDir $ out
_ -> error $ ("failure when running pkg-config --cflags gtk+-2.0 :\n" ++ err)


let Just lib = library . localPkgDescr $ bInfo
buildinfo = libBuildInfo lib
let hbi = emptyBuildInfo { extraLibs = extraLibs buildinfo
, extraLibDirs = extraLibDirs buildinfo
, includeDirs = incdirs ++ includeDirs buildinfo
}
let (r :: Maybe HookedBuildInfo) = Just (Just hbi, [])
-- putStrLn $ show hbi
return r

-- data CFlagsOptionSet = CFlagsOptionSet {
-- includedirs :: [String]
-- others :: [String]
-- }

extractIncDir :: String -> [String]
extractIncDir = (mapMaybe parseCFlags) . words

parseCFlags :: String -> Maybe String
parseCFlags [] = Nothing
parseCFlags str@(x:xs) =
case x of
'-' -> if null xs
then Nothing
else let (y:ys) = xs
in case y of
'I' -> Just ys
_ -> Nothing
_ -> Nothing
13 changes: 6 additions & 7 deletions Setup.lhs
@@ -1,10 +1,9 @@
#! /usr/bin/env runhaskell

>
> import Distribution.Simple
> import Distribution.PackageDescription
> --import System.Process
> main = defaultMain
> --main = defaultMainWithHooks testUserHooks
> --testUserHooks = simpleUserHooks {
> -- preConf = \_ _ -> runCommand "cd rootcode; make; cd .." >>return emptyHookedBuildInfo
> -- }
> import Config
>
> main :: IO ()
> main = defaultMainWithHooks myConfigHook
>
11 changes: 8 additions & 3 deletions hxournal.cabal
Expand Up @@ -9,11 +9,12 @@ Author: Ian-Woo Kim
Maintainer: Ian-Woo Kim <ianwookim@gmail.com>
Category: Application
Tested-with: GHC == 7.0.3
Build-Type: Simple
Build-Type: Custom
Cabal-Version: >= 1.8
data-files: template/*.html.st
resource/*.png
CHANGES
Config.hs
Source-repository head
type: git
location: https://www.github.com/wavewave/hxournal
Expand Down Expand Up @@ -46,16 +47,17 @@ Library
xournal-types == 0.1.*,
xournal-parser >= 0.2.999 && < 0.4,
xournal-render >= 0.2.999 && < 0.4,
xournal-builder == 0.1.*,
containers == 0.4.*,
template-haskell == 2.*,
blaze-builder == 0.3.*,
bytestring == 0.9.*,
double-conversion == 0.2.*,
fclabels == 1.0.*,
cmdargs >= 0.7 && <= 0.10,
configurator == 0.1.*

-- >= 0.1 && < 0.3
-- blaze-builder == 0.3.*,
Exposed-Modules:
Application.HXournal.ProgType
Application.HXournal.Job
Expand Down Expand Up @@ -95,9 +97,12 @@ Library
Application.HXournal.Util.Verbatim
Application.HXournal.Draw
Application.HXournal.Device
Application.HXournal.Builder
Application.HXournal.Accessor
Application.HXournal.Config

-- Application.HXournal.Builder


Other-Modules:
Paths_hxournal
c-sources:
Expand Down
75 changes: 0 additions & 75 deletions lib/Application/HXournal/Builder.hs

This file was deleted.

2 changes: 1 addition & 1 deletion lib/Application/HXournal/Coroutine/File.hs
Expand Up @@ -7,7 +7,7 @@ import Application.HXournal.Accessor
import Application.HXournal.ModelAction.File
import Application.HXournal.Coroutine.Draw
import Application.HXournal.ModelAction.Window
import Application.HXournal.Builder
import Text.Xournal.Builder
import Control.Monad.Trans
import Control.Applicative
import Data.Xournal.Generic
Expand Down
5 changes: 3 additions & 2 deletions lib/Application/HXournal/Job.hs
Expand Up @@ -3,7 +3,7 @@
module Application.HXournal.Job where

import Application.HXournal.GUI
import Application.HXournal.Builder
-- import Application.HXournal.Builder
import qualified Data.ByteString.Lazy as L
import Text.Xournal.Parse

Expand All @@ -12,9 +12,10 @@ startJob mfname = do
putStrLn "job started"
startGUI mfname

{-
startTestBuilder :: FilePath -> IO ()
startTestBuilder fname = do
putStrLn fname
xojcontent <- read_xojgz fname
L.writeFile "mytest.xoj" $ builder xojcontent
-}

0 comments on commit bd42661

Please sign in to comment.