-- -- Copyright (C) 2005 Sean Seefried - http://www.cse.unsw.edu.au/~sseefried -- -- This library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- This library 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with this library; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -- USA -- -- We export an abstract interface to package conf`s because we have -- to handle either traditional or Cabal style package conf`s. -- module System.Plugins.PackageAPI ( PackageName , PackageConfig , packageName , packageName_ , importDirs , hsLibraries , libraryDirs , extraLibraries , ldOptions , packageDeps , updImportDirs , updLibraryDirs ) where #include "../../../config.h" #if CABAL == 1 || __GLASGOW_HASKELL__ >= 604 import Distribution.InstalledPackageInfo import Distribution.Package hiding (depends, packageName, PackageName(..)) import Distribution.Text #else import System.Plugins.Package #endif packageName :: PackageConfig -> PackageName packageDeps :: PackageConfig -> [PackageName] updImportDirs :: ([FilePath] -> [FilePath]) -> PackageConfig -> PackageConfig updLibraryDirs :: ([FilePath] -> [FilePath]) -> PackageConfig -> PackageConfig -- We use different package.conf parsers when running on 6.2.x or 6.4 #if CABAL == 1 || __GLASGOW_HASKELL__ >= 604 type PackageName = String type PackageConfig = InstalledPackageInfo packageName = display . pkgName . sourcePackageId packageName_ = pkgName . sourcePackageId packageDeps = (map display) . depends updImportDirs f pk@(InstalledPackageInfo { importDirs = idirs }) = pk { importDirs = f idirs } updLibraryDirs f pk@(InstalledPackageInfo { libraryDirs = ldirs }) = pk { libraryDirs = f ldirs } #else packageName = name packageName_ = name packageDeps = package_deps updImportDirs f pk@(Package {import_dirs = idirs}) = pk {import_dirs = f idirs} updLibraryDirs f pk@(Package {library_dirs = ldirs}) = pk {library_dirs = f ldirs} importDirs :: PackageConfig -> [FilePath] importDirs = import_dirs hsLibraries :: PackageConfig -> [String] hsLibraries = hs_libraries libraryDirs :: PackageConfig -> [FilePath] libraryDirs = library_dirs extraLibraries :: PackageConfig -> [String] extraLibraries = extra_libraries ldOptions :: PackageConfig -> [String] ldOptions = extra_ld_opts #endif