packages feed

HROOT-math 0.9 → 0.9.0.1

raw patch · 2 files changed

+87/−1 lines, 2 files

Files

+ Config.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE ScopedTypeVariables #-}++module Config where+ +import Distribution.Simple+import Distribution.Simple.Setup+import Distribution.PackageDescription+import Distribution.Simple.LocalBuildInfo++import System.Exit+import System.Process++config :: LocalBuildInfo -> IO (Maybe HookedBuildInfo)+config bInfo = do +  (excode, out, err) <- readProcessWithExitCode "root-config" ["--glibs"] ""+  liboptset' <- case excode of +                  ExitSuccess -> do  +                    return . Just .  mkLibraryOptionSet . words $ out+                  _ -> do +                    putStrLn $ "root-config failure but I am installing HROOT without ROOT. It will not work. This is only for documentation." +                    return Nothing              +  (excode2,out2,err2) <- readProcessWithExitCode "root-config" ["--incdir"] ""+  incdir' <- case excode2 of +               ExitSuccess -> do  +                 return . Just . head . words $ out2+               _ -> do +                 putStrLn $ "root-config failure but I am installing HROOT without ROOT. It will not work. This is only for documentation." +                 return Nothing+  let Just lib = library . localPkgDescr $ bInfo+      buildinfo = libBuildInfo lib+  let (r :: Maybe HookedBuildInfo) = case liboptset' of +            Nothing -> Nothing+            Just liboptset -> +              case incdir' of +                Nothing -> Nothing +                Just incdir -> +                  let hbi = emptyBuildInfo { extraLibs = extraLibs buildinfo +                                                         ++ libs liboptset+                                           , extraLibDirs = libdirs liboptset +                                           , includeDirs = incdir : includeDirs buildinfo+                                           }+                  in Just (Just hbi, []) +  return r +++data LibraryOptionSet = LibraryOptionSet { +  libs :: [String], +  libdirs :: [String], +  libopts :: [String]+} deriving Show++data LibraryOption = Lib String +                   | Dir String+                   | Opt String +                   deriving Show++mkLibraryOptionSet :: [String] -> LibraryOptionSet+mkLibraryOptionSet strs = let opts = libraryOptions strs+                          in  foldr f (LibraryOptionSet [] [] []) opts +  where f x (LibraryOptionSet l d o) = case x of+                                         Lib st -> LibraryOptionSet (st:l) d o +                                         Dir st -> LibraryOptionSet l (st:d) o +                                         Opt st -> LibraryOptionSet l d (st:o) ++libraryOptions :: [String] -> [LibraryOption] -- LibraryOptionSet +libraryOptions = map f +  where f x = let r = parseLibraryOptionClassifier x+              in  case r of +                    Left msg -> error (show msg)+                    Right result -> result+++parseLibraryOptionClassifier :: String -> Either String LibraryOption +parseLibraryOptionClassifier [] = Left "empty option"+parseLibraryOptionClassifier str@(x:xs) = +  case x of+    '-' -> if null xs +             then Left "parse error"+             else let (y:ys) = xs+                  in  case y of+                        'L' -> Right (Dir ys)+                        'l' -> Right (Lib ys)+                        _ -> Right (Opt str)+    _ -> Right (Opt str) +
HROOT-math.cabal view
@@ -1,5 +1,5 @@ Name:                HROOT-math-Version:     0.9+Version:     0.9.0.1 Synopsis:    Haskell binding to ROOT Math modules Description:         HROOT is a haskell Foreign Function Interface (FFI) binding to ROOT. ROOT(http://root.cern.ch) is an object-oriented program and library developed by CERN for physics data analysis. Homepage:       http://ianwookim.org/HROOT@@ -12,6 +12,7 @@ Build-Type:  Custom cabal-version:  >=1.10 Extra-source-files:+                       Config.hs                        csrc/HROOTMathTRandom.h                        csrc/HROOTMathTRandom.cpp