archlinux 0.3.6 → 1.0
raw patch · 4 files changed
+29/−106 lines, 4 filesdep −bytestringdep −tarPVP ok
version bump matches the API change (PVP)
Dependencies removed: bytestring, tar
API changes (from Hackage documentation)
- Distribution.ArchLinux.HackageTranslation: getCabalFromEntry :: Entry -> Maybe GenericPackageDescription
- Distribution.ArchLinux.HackageTranslation: getCabalsFromTarball :: ByteString -> [GenericPackageDescription]
- Distribution.ArchLinux.HackageTranslation: getSpecifiedCabals :: [PackageIdentifier] -> [GenericPackageDescription] -> [GenericPackageDescription]
- Distribution.ArchLinux.HackageTranslation: getSpecifiedCabalsFromTarball :: ByteString -> [String] -> [GenericPackageDescription]
- Distribution.ArchLinux.HackageTranslation: parse2maybe :: ParseResult a -> Maybe a
- Distribution.ArchLinux.HackageTranslation: parsePackageIdentifier :: String -> Maybe PackageIdentifier
Files
- Distribution/ArchLinux/CabalTranslation.hs +3/−2
- Distribution/ArchLinux/HackageTranslation.hs +6/−54
- archlinux.cabal +20/−31
- scripts/recdeps.hs +0/−19
Distribution/ArchLinux/CabalTranslation.hs view
@@ -205,7 +205,7 @@ "http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz" , arch_build = [ "cd ${srcdir}/${_hkgname}-${pkgver}"- , "runhaskell Setup configure -O --enable-split-objs --enable-shared \\"+ , "runhaskell Setup configure -O ${PKGBUILD_HASKELL_ENABLE_PROFILING:+-p } --enable-split-objs --enable-shared \\" , " --prefix=/usr --docdir=/usr/share/doc/${pkgname} --libsubdir=\\$compiler/site-local/\\$pkgid" , "runhaskell Setup build" , "runhaskell Setup haddock"@@ -219,7 +219,8 @@ , "install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh" , "install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries" , "ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}"- ,"runhaskell Setup copy --destdir=${pkgdir}"]+ , "runhaskell Setup copy --destdir=${pkgdir}"+ ] -- if its a library: , arch_install = Just "${pkgname}.install" }
Distribution/ArchLinux/HackageTranslation.hs view
@@ -6,69 +6,21 @@ -- Maintainer: Arch Haskell Team <arch-haskell@haskell.org> -- -module Distribution.ArchLinux.HackageTranslation where+module Distribution.ArchLinux.HackageTranslation+ ( getVersionConflicts+ , getLatestVersions+ )+ where+ import Distribution.ArchLinux.CabalTranslation import Distribution.ArchLinux.SystemProvides -- Cabal modules import Distribution.Package import Distribution.Version import Distribution.PackageDescription-import Distribution.PackageDescription.Parse -- Standard types-import Distribution.Text import qualified Data.Map as M-import qualified Data.Set as Set import Data.Maybe--- Read tarballs-import qualified Codec.Archive.Tar as Tar-import qualified Data.ByteString.Lazy.Char8 as Bytes------- | Reads a tarball and converts it to a list of PackageDescription's----getCabalsFromTarball :: Bytes.ByteString -> [GenericPackageDescription]-getCabalsFromTarball tarball = Tar.foldEntries insertThis [] (const []) files- where files = Tar.read tarball- insertThis file list = case getCabalFromEntry file of- Nothing -> list- Just pkg -> pkg:list--getCabalFromEntry :: Tar.Entry -> Maybe GenericPackageDescription-getCabalFromEntry file = case Tar.entryContent file of- Tar.NormalFile contents _ -> parse2maybe $ parsePackageDescription $ Bytes.unpack contents- _ -> Nothing--parse2maybe :: ParseResult a -> Maybe a-parse2maybe a = case a of- ParseOk _ pkg -> Just pkg- _ -> Nothing------- | Reads a tarball and get cabal files according to a list----getSpecifiedCabalsFromTarball :: Bytes.ByteString -> [String] -> [GenericPackageDescription]-getSpecifiedCabalsFromTarball tarball list =- getSpecifiedCabals (mapMaybe parsePackageIdentifier list) (getCabalsFromTarball tarball)------- | Parses a list of lines of the form "package-name 1.2.3.4"----parsePackageIdentifier :: String -> Maybe PackageIdentifier-parsePackageIdentifier s = case words s of- [] -> void- "#":_ -> void- name:version:_ -> case simpleParse version of- Nothing -> err- Just v -> Just $ PackageIdentifier { pkgName = PackageName name, pkgVersion = v }- _ -> err- where- void = Nothing- err = error ("Malformed package identifier " ++ show s)--getSpecifiedCabals :: [PackageIdentifier] -> [GenericPackageDescription] -> [GenericPackageDescription]-getSpecifiedCabals list packages = filter wasSpecified packages- where set = Set.fromList list- wasSpecified p = Set.member (packageId p) set -- -- | Check for inconsistencies in version requirements
archlinux.cabal view
@@ -1,8 +1,12 @@ name: archlinux-version: 0.3.6+version: 1.0 license: BSD3 license-file: LICENSE-author: Don Stewart <dons@galois.com>+author: Don Stewart <dons@galois.com>,+ Rémy Oudompheng <remyoudompheng@gmail.com>,+ Peter Simons <simons@cryp.to>,+ Magnus Therning <magnus@therning.org>,+ Linus Arver <linusarver@gmail.com> maintainer: ArchHaskell Team <arch-haskell@haskell.org> homepage: http://github.com/archhaskell/ category: Distribution@@ -19,33 +23,18 @@ location: git://github.com/archhaskell/archlinux.git library- build-depends: base >= 4 && < 6,- Cabal >= 1.6,- pretty,- containers,- directory,- filepath,- bytestring,- tar-- exposed-modules:- Distribution.ArchLinux.PkgBuild- Distribution.ArchLinux.SrcRepo- Distribution.ArchLinux.CabalTranslation- Distribution.ArchLinux.HackageTranslation- Distribution.ArchLinux.SystemProvides- other-modules:- Paths_archlinux+ ghc-Options: -Wall+ build-depends:+ base >= 4 && < 6,+ Cabal >= 1.6,+ pretty,+ containers,+ directory,+ filepath -executable recdeps- main-is: scripts/recdeps.hs- build-depends:- base >=4 && <6,- directory,- filepath,- containers,- pretty,- Cabal >= 1.6- other-modules:- Distribution.ArchLinux.PkgBuild- Distribution.ArchLinux.SrcRepo+ exposed-modules:+ Distribution.ArchLinux.PkgBuild+ Distribution.ArchLinux.SrcRepo+ Distribution.ArchLinux.CabalTranslation+ Distribution.ArchLinux.SystemProvides+ Distribution.ArchLinux.HackageTranslation
− scripts/recdeps.hs
@@ -1,19 +0,0 @@------ | This test reads the current directory and dumps a topologically sorted package list-----module Main where--import Distribution.ArchLinux.SrcRepo-import System.IO-import System.Directory-import System.Environment-import Control.Monad--main = do- [pkg] <- getArgs- dot <- getCurrentDirectory- repo <- getRepoFromDir dot- case repo of- Nothing -> return ()- Just r -> foldM (\a -> \s -> putStrLn s) () (getDependencies pkg r)