hackport 0.5.1 → 0.5.2
raw patch · 5 files changed
+32/−37 lines, 5 filesdep ~tar
Dependency ranges changed: tar
Files
- Merge.hs +3/−1
- Merge/Dependencies.hs +20/−33
- Portage/EBuild.hs +0/−1
- Portage/EMeta.hs +7/−0
- hackport.cabal +2/−2
Merge.hs view
@@ -427,15 +427,17 @@ createDirectoryIfMissing True edir now <- TC.getCurrentTime - let (existing_keywords, existing_license) = (EM.keywords existing_meta, EM.license existing_meta)+ let (existing_keywords, existing_license, existing_description) = (EM.keywords existing_meta, EM.license existing_meta, EM.description existing_meta) new_keywords = maybe (E.keywords ebuild) (map to_unstable) existing_keywords new_license = either (\err -> maybe (Left err) Right existing_license) Right (E.license ebuild)+ new_description = maybe (E.description ebuild) id existing_description ebuild' = ebuild { E.keywords = new_keywords , E.license = new_license+ , E.description = new_description } s_ebuild' = E.showEBuild now ebuild'
Merge/Dependencies.hs view
@@ -5,21 +5,8 @@ , resolveDependencies ) where -import Distribution.PackageDescription ( PackageDescription(..)- , libBuildInfo- , buildInfo- , buildable- , extraLibs- , buildTools- , pkgconfigDepends- , specVersion- , TestSuite(..)- , targetBuildDepends- )- import Data.Maybe ( isJust, isNothing ) import Data.Monoid ( Monoid, mempty, mappend)-import Data.List ( nub ) import qualified Data.List as L import qualified Data.Set as S @@ -68,7 +55,7 @@ , dep_e = dep_eA `S.union` dep_eB } -resolveDependencies :: Portage.Overlay -> PackageDescription -> Cabal.CompilerInfo+resolveDependencies :: Portage.Overlay -> Cabal.PackageDescription -> Cabal.CompilerInfo -> [Cabal.PackageName] -> Cabal.PackageName -> EDep resolveDependencies overlay pkg compiler_info ghc_package_names merged_cabal_pkg_name = edeps@@ -78,7 +65,7 @@ treatAsLibrary = isJust (Cabal.library pkg) -- without slot business raw_haskell_deps :: Portage.Dependency- raw_haskell_deps = PN.normalize_depend $ Portage.DependAllOf $ haskellDependencies overlay (buildDepends pkg)+ raw_haskell_deps = PN.normalize_depend $ Portage.DependAllOf $ haskellDependencies overlay (Cabal.buildDepends pkg) test_deps :: Portage.Dependency test_deps = Portage.mkUseDependency (True, Portage.Use "test") $ Portage.DependAllOf $@@ -146,9 +133,9 @@ -- TODO: move partitioning part to Merge:mergeGenericPackageDescription --------------------------------------------------------------- -setupDependencies :: Portage.Overlay -> PackageDescription -> [Cabal.PackageName] -> Cabal.PackageName -> [Portage.Dependency]+setupDependencies :: Portage.Overlay -> Cabal.PackageDescription -> [Cabal.PackageName] -> Cabal.PackageName -> [Portage.Dependency] setupDependencies overlay pkg ghc_package_names merged_cabal_pkg_name = deps- where cabalDeps = maybe [] id $ Cabal.setupDepends `fmap` setupBuildInfo pkg+ where cabalDeps = maybe [] id $ Cabal.setupDepends `fmap` Cabal.setupBuildInfo pkg cabalDeps' = fst $ Portage.partition_depends ghc_package_names merged_cabal_pkg_name cabalDeps deps = C2E.convertDependencies overlay (Portage.Category "dev-haskell") cabalDeps' @@ -157,9 +144,9 @@ -- TODO: move partitioning part to Merge:mergeGenericPackageDescription --------------------------------------------------------------- -testDependencies :: Portage.Overlay -> PackageDescription -> [Cabal.PackageName] -> Cabal.PackageName -> [Portage.Dependency]+testDependencies :: Portage.Overlay -> Cabal.PackageDescription -> [Cabal.PackageName] -> Cabal.PackageName -> [Portage.Dependency] testDependencies overlay pkg ghc_package_names merged_cabal_pkg_name = deps- where cabalDeps = concat $ map targetBuildDepends $ map testBuildInfo (testSuites pkg)+ where cabalDeps = concat $ map Cabal.targetBuildDepends $ map Cabal.testBuildInfo (Cabal.testSuites pkg) cabalDeps' = fst $ Portage.partition_depends ghc_package_names merged_cabal_pkg_name cabalDeps deps = C2E.convertDependencies overlay (Portage.Category "dev-haskell") cabalDeps' @@ -177,7 +164,7 @@ -- | Select the most restrictive dependency on Cabal, either the .cabal -- file's descCabalVersion, or the Cabal GHC shipped with.-cabalDependency :: Portage.Overlay -> PackageDescription -> Cabal.CompilerInfo -> Portage.Dependency+cabalDependency :: Portage.Overlay -> Cabal.PackageDescription -> Cabal.CompilerInfo -> Portage.Dependency cabalDependency overlay pkg ~(Cabal.CompilerInfo { Cabal.compilerInfoId = Cabal.CompilerId Cabal.GHC cabal_version@@ -188,7 +175,7 @@ finalCabalDep) where versionNumbers = Cabal.versionNumbers cabal_version- userCabalVersion = Cabal.orLaterVersion (specVersion pkg)+ userCabalVersion = Cabal.orLaterVersion (Cabal.specVersion pkg) shippedCabalVersion = GHCCore.cabalFromGHC versionNumbers shippedCabalDep = maybe Cabal.anyVersion Cabal.orLaterVersion shippedCabalVersion finalCabalDep = Cabal.simplifyVersionRange@@ -210,16 +197,16 @@ -- C Libraries --------------------------------------------------------------- -findCLibs :: PackageDescription -> [Portage.Dependency]-findCLibs (PackageDescription { library = lib, executables = exes }) =+findCLibs :: Cabal.PackageDescription -> [Portage.Dependency]+findCLibs (Cabal.PackageDescription { Cabal.library = lib, Cabal.executables = exes }) = [ trace ("WARNING: This package depends on a C library we don't know the portage name for: " ++ p ++ ". Check the generated ebuild.") (any_c_p "unknown-c-lib" p) | p <- notFound ] ++ found where- libE = concatMap (extraLibs . libBuildInfo) $ maybe [] return lib- exeE = concatMap extraLibs (filter buildable (map buildInfo exes))+ libE = concatMap (Cabal.extraLibs . Cabal.libBuildInfo) $ maybe [] return lib+ exeE = concatMap Cabal.extraLibs (filter Cabal.buildable (map Cabal.buildInfo exes)) allE = libE ++ exeE notFound = [ p | p <- allE, isNothing (staticTranslateExtraLib p) ]@@ -347,8 +334,8 @@ -- Build Tools --------------------------------------------------------------- -buildToolsDependencies :: PackageDescription -> [Portage.Dependency]-buildToolsDependencies (PackageDescription { library = lib, executables = exes }) = nub $+buildToolsDependencies :: Cabal.PackageDescription -> [Portage.Dependency]+buildToolsDependencies (Cabal.PackageDescription { Cabal.library = lib, Cabal.executables = exes }) = L.nub $ [ case pkg of Just p -> p Nothing -> trace ("WARNING: Unknown build tool '" ++ Cabal.display exe ++ "'. Check the generated ebuild.")@@ -358,8 +345,8 @@ ] where cabalDeps = filter notProvided $ depL ++ depE- depL = concatMap (buildTools . libBuildInfo) $ maybe [] return lib- depE = concatMap buildTools (filter buildable (map buildInfo exes))+ depL = concatMap (Cabal.buildTools . Cabal.libBuildInfo) $ maybe [] return lib+ depE = concatMap Cabal.buildTools (filter Cabal.buildable (map Cabal.buildInfo exes)) notProvided (Cabal.LegacyExeDependency pn _range) = pn `notElem` buildToolsProvided buildToolsTable :: [(String, Portage.Dependency)]@@ -388,12 +375,12 @@ -- pkg-config --------------------------------------------------------------- -pkgConfigDependencies :: Portage.Overlay -> PackageDescription -> [Portage.Dependency]-pkgConfigDependencies overlay (PackageDescription { library = lib, executables = exes }) = nub $ resolvePkgConfigs overlay cabalDeps+pkgConfigDependencies :: Portage.Overlay -> Cabal.PackageDescription -> [Portage.Dependency]+pkgConfigDependencies overlay (Cabal.PackageDescription { Cabal.library = lib, Cabal.executables = exes }) = L.nub $ resolvePkgConfigs overlay cabalDeps where cabalDeps = depL ++ depE- depL = concatMap (pkgconfigDepends . libBuildInfo) $ maybe [] return lib- depE = concatMap pkgconfigDepends (filter buildable (map buildInfo exes))+ depL = concatMap (Cabal.pkgconfigDepends . Cabal.libBuildInfo) $ maybe [] return lib+ depE = concatMap Cabal.pkgconfigDepends (filter Cabal.buildable (map Cabal.buildInfo exes)) resolvePkgConfigs :: Portage.Overlay -> [Cabal.PkgconfigDependency] -> [Portage.Dependency] resolvePkgConfigs overlay cdeps =
Portage/EBuild.hs view
@@ -93,7 +93,6 @@ showEBuild now ebuild = ss ("# Copyright 1999-" ++ this_year ++ " Gentoo Foundation"). nl. ss "# Distributed under the terms of the GNU General Public License v2". nl.- ss "# $Id$". nl. nl. ss "EAPI=6". nl. nl.
Portage/EMeta.hs view
@@ -58,10 +58,15 @@ extractCabalFlags ebuild_path s_ebuild = extract_hackport_var ebuild_path s_ebuild "flags" +extractDescription :: FilePath -> String -> Maybe String+extractDescription ebuild_path s_ebuild =+ extract_quoted_string ebuild_path s_ebuild "DESCRIPTION"+ -- aggregated (best inferred) metadata for a new ebuild of package data EMeta = EMeta { keywords :: Maybe [String] , license :: Maybe String , cabal_flags :: Maybe String+ , description :: Maybe String } findExistingMeta :: FilePath -> IO EMeta@@ -76,10 +81,12 @@ return EMeta { keywords = extractKeywords e e_conts , license = extractLicense e e_conts , cabal_flags = extractCabalFlags e e_conts+ , description = extractDescription e e_conts } let get_latest candidates = last (Nothing : filter (/= Nothing) candidates) aggregated_meta = EMeta { keywords = get_latest $ map keywords e_metas , license = get_latest $ map license e_metas , cabal_flags = get_latest $ map cabal_flags e_metas+ , description = get_latest $ map description e_metas } return aggregated_meta
hackport.cabal view
@@ -1,5 +1,5 @@ Name: hackport-Version: 0.5.1+Version: 0.5.2 License: GPL License-file: LICENSE Author: Henning Günther, Duncan Coutts, Lennart Kolmodin@@ -40,7 +40,7 @@ old-locale, regex-compat, split,- tar,+ tar >= 0.5, time, zlib, xml >= 1.3.7,