hackport 0.2.7 → 0.2.8
raw patch · 7 files changed
+30/−33 lines, 7 files
Files
- Cabal2Ebuild.hs +9/−4
- DistroMap.hs +2/−3
- Main.hs +2/−2
- Merge/Dependencies.hs +1/−0
- Portage/EBuild.hs +14/−6
- cabal2ebuild.hs +0/−17
- hackport.cabal +2/−1
Cabal2Ebuild.hs view
@@ -32,8 +32,7 @@ import qualified Distribution.Package as Cabal (PackageIdentifier(..) , Dependency(..) , PackageName(..))-import qualified Distribution.Version as Cabal (VersionRange, foldVersionRange', versionBranch, Version)-import qualified Distribution.License as Cabal (License(..))+import qualified Distribution.Version as Cabal (VersionRange, foldVersionRange') import Distribution.Text (display) import Data.Char (toLower,isUpper)@@ -53,8 +52,8 @@ E.version = display (Cabal.pkgVersion (Cabal.package pkg)), E.description = if null (Cabal.synopsis pkg) then Cabal.description pkg else Cabal.synopsis pkg,- E.homepage = Cabal.homepage pkg,- E.src_uri = Cabal.pkgUrl pkg,+ E.homepage = thisHomepage,+ E.src_uri = thisSRC_URI, E.license = Cabal.license pkg, E.my_pn = if any isUpper cabalPkgName then Just cabalPkgName else Nothing, E.features = E.features E.ebuildTemplate@@ -65,6 +64,12 @@ } where cabalPkgName = display $ Cabal.pkgName (Cabal.package pkg) hasExe = (not . null) (Cabal.executables pkg) + thisHomepage = if (null $ Cabal.homepage pkg)+ then E.homepage E.ebuildTemplate+ else Cabal.homepage pkg+ thisSRC_URI = if (null $ Cabal.pkgUrl pkg)+ then E.src_uri E.ebuildTemplate+ else Cabal.pkgUrl pkg convertDependencies :: Portage.Category -> [Cabal.Dependency] -> [Dependency] convertDependencies category = concatMap (convertDependency category)
DistroMap.hs view
@@ -47,20 +47,19 @@ import Distribution.Verbosity import Distribution.Text ( display ) import Distribution.Client.Types ( Repo, AvailablePackageDb(..), AvailablePackage(..) )-import Distribution.Simple.Utils ( warn, notice, info )+import Distribution.Simple.Utils ( info ) import qualified Data.Version as Cabal import qualified Distribution.Package as Cabal import qualified Distribution.Client.PackageIndex as CabalInstall import qualified Distribution.Client.IndexUtils as CabalInstall -import Portage.Overlay ( Overlay(..), readOverlayByPackage, getDirectoryTree, DirectoryTree )+import Portage.Overlay ( readOverlayByPackage, getDirectoryTree ) import qualified Portage.PackageId as Portage import qualified Portage.Version as Portage type PVU = (Cabal.PackageName, Cabal.Version, Maybe String) type PVU_Map = Map Portage.PackageName [(Cabal.Version, Maybe String)]-type PVU_Item = (Portage.PackageName, [(Cabal.Version, Maybe String)]) distroMap :: Verbosity -> Repo -> FilePath -> FilePath -> [String] -> IO () distroMap verbosity repo portagePath overlayPath args = do
Main.hs view
@@ -11,7 +11,7 @@ import Distribution.Simple.Setup ( Flag(..), fromFlag , trueArg- , flagToMaybe, flagToList+ , flagToList , optionVerbosity ) import Distribution.PackageDescription.Configuration@@ -34,7 +34,7 @@ import Portage.Host as Host ( getInfo, portage_dir ) import Portage.PackageId ( normalizeCabalPackageId ) -import Network.URI+import Network.URI ( URI(..), URIAuth(..), parseURI ) import System.Environment ( getArgs, getProgName ) import System.Directory ( doesDirectoryExist ) import System.Exit ( exitFailure )
Merge/Dependencies.hs view
@@ -176,6 +176,7 @@ , ("mysqlclient", Portage.LaterVersionOf (Portage.Version [4,0] Nothing [] 0) (Portage.mkPackageName "virtual" "mysql")) , ("pq", Portage.LaterVersionOf (Portage.Version [7] Nothing [] 0) (Portage.mkPackageName "virtual" "postgresql-base")) , ("ev", Portage.AnyVersionOf (Portage.mkPackageName "dev-libs" "libev"))+ , ("expat", Portage.AnyVersionOf (Portage.mkPackageName "dev-libs" "expat")) ] ---------------------------------------------------------------
Portage/EBuild.hs view
@@ -10,9 +10,13 @@ import Distribution.License as Cabal +import Data.Version(Version(..))+import qualified Paths_hackport(version)+ data EBuild = EBuild { name :: String, version :: String,+ hackportVersion :: String, description :: String, homepage :: String, src_uri :: String,@@ -28,13 +32,18 @@ my_pn :: Maybe String --If the package's name contains upper-case } +getHackportVersion :: Version -> String+getHackportVersion Version {versionBranch=(x:s)} = foldl (\y z -> y ++ "." ++ (show z)) (show x) s+getHackportVersion Version {versionBranch=[]} = ""+ ebuildTemplate :: EBuild ebuildTemplate = EBuild { name = "foobar", version = "0.1",+ hackportVersion = getHackportVersion Paths_hackport.version, description = "",- homepage = "",- src_uri = "",+ homepage = "http://hackage.haskell.org/package/${PN}",+ src_uri = "http://hackage.haskell.org/packages/archive/${PN}/${PV}/${P}.tar.gz", license = Cabal.UnknownLicense "xxx UNKNOWN xxx", slot = "0", keywords = ["~amd64","~x86"],@@ -56,6 +65,8 @@ ss "# Distributed under the terms of the GNU General Public License v2". nl. ss "# $Header: $". nl. nl.+ ss ("# ebuild generated by hackport " ++ hackportVersion ebuild). nl.+ nl. ss "CABAL_FEATURES=". quote' (sepBy " " $ features ebuild). nl. ss "inherit haskell-cabal". nl. nl.@@ -65,9 +76,7 @@ ss "MY_P=". quote "${MY_PN}-${PV}". nl. nl). ss "DESCRIPTION=". quote (description ebuild). nl. ss "HOMEPAGE=". quote (homepage ebuild). nl.- ss "SRC_URI=". quote (replaceVars (src_uri ebuild)).- (if null (src_uri ebuild) then ss "\t#Fixme: please fill in manually"- else id). nl.+ ss "SRC_URI=". quote (replaceVars (src_uri ebuild)). nl. nl. ss "LICENSE=". quote (convertLicense . license $ ebuild). (if null (licenseComment . license $ ebuild) then id@@ -78,7 +87,6 @@ nl. dep_str "RDEPEND" (rdepend_extra ebuild) (rdepend ebuild). dep_str "DEPEND" ( depend_extra ebuild) ( depend ebuild).- nl. (case my_pn ebuild of Nothing -> id Just _ -> nl. ss "S=". quote ("${WORKDIR}/${MY_P}"). nl)
− cabal2ebuild.hs
@@ -1,17 +0,0 @@-module Main where--import System.Environment-import qualified Distribution.PackageDescription as Cabal-import Distribution.Verbosity (normal)-import Cabal2Ebuild--main :: IO ()-main = do- args <- getArgs- case args of- [cabalFileName] -> do- pkg <- Cabal.readPackageDescription normal cabalFileName- let ebuild = cabal2ebuild (Cabal.flattenPackageDescription pkg)- let ebuildFileName = name ebuild ++ "-" ++ version ebuild ++ ".ebuild"- writeFile ebuildFileName (showEBuild ebuild)- _ -> putStrLn "usage: cabal2ebuild package.cabal"
hackport.cabal view
@@ -1,5 +1,5 @@ Name: hackport-Version: 0.2.7+Version: 0.2.8 License: GPL License-file: LICENSE Author: Henning Günther, Duncan Coutts, Lennart Kolmodin@@ -56,6 +56,7 @@ CacheFile Diff Error+ Paths_hackport Main MaybeRead Overlays