packages feed

archlinux 0.3.4 → 0.3.5

raw patch · 8 files changed

+481/−407 lines, 8 filesnew-uploaderPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Distribution.ArchLinux.PkgBuild: instance (Eq a) => Eq (ArchList a)
- Distribution.ArchLinux.PkgBuild: instance (Show a) => Show (ArchList a)
- Distribution.ArchLinux.PkgBuild: instance (Text a) => Text (ArchList a)
+ Distribution.ArchLinux.CabalTranslation: cabal2pkg' :: PackageDescription -> String -> Int -> SystemProvides -> (AnnotatedPkgBuild, Maybe String)
+ Distribution.ArchLinux.HackageTranslation: getLatestVersions :: [GenericPackageDescription] -> Map PackageName Version
+ Distribution.ArchLinux.HackageTranslation: getVersionConflicts :: [GenericPackageDescription] -> SystemProvides -> [(PackageDescription, Dependency)]
+ Distribution.ArchLinux.HackageTranslation: parse2maybe :: ParseResult a -> Maybe a
+ Distribution.ArchLinux.PkgBuild: emptyPkg :: AnnotatedPkgBuild
+ Distribution.ArchLinux.PkgBuild: hkgName :: AnnotatedPkgBuild -> String
+ Distribution.ArchLinux.PkgBuild: instance Eq a => Eq (ArchList a)
+ Distribution.ArchLinux.PkgBuild: instance Show a => Show (ArchList a)
+ Distribution.ArchLinux.PkgBuild: instance Text a => Text (ArchList a)
+ Distribution.ArchLinux.SrcRepo: insertpkg :: Map String PkgBuild -> FilePath -> IO (Map String PkgBuild)
+ Distribution.ArchLinux.SrcRepo: instance Show SrcRepo
+ Distribution.ArchLinux.SystemProvides: SystemProvides :: [Dependency] -> Map String String -> SystemProvides
+ Distribution.ArchLinux.SystemProvides: corePackages :: SystemProvides -> [Dependency]
+ Distribution.ArchLinux.SystemProvides: corePackagesFromFile :: String -> [Dependency]
+ Distribution.ArchLinux.SystemProvides: data SystemProvides
+ Distribution.ArchLinux.SystemProvides: depstr2hs :: String -> Maybe Dependency
+ Distribution.ArchLinux.SystemProvides: getDefaultSystemProvides :: IO SystemProvides
+ Distribution.ArchLinux.SystemProvides: getSystemProvidesFromFiles :: FilePath -> FilePath -> IO SystemProvides
+ Distribution.ArchLinux.SystemProvides: translationTable :: SystemProvides -> Map String String
+ Distribution.ArchLinux.SystemProvides: translationTableFromFile :: String -> Map String String
+ Distribution.ArchLinux.SystemProvides: trstr2hs :: String -> Maybe (String, String)
- Distribution.ArchLinux.CabalTranslation: cabal2pkg :: PackageDescription -> (PkgBuild, Maybe String)
+ Distribution.ArchLinux.CabalTranslation: cabal2pkg :: PackageDescription -> SystemProvides -> (AnnotatedPkgBuild, Maybe String)
- Distribution.ArchLinux.CabalTranslation: preprocessCabal :: GenericPackageDescription -> Maybe PackageDescription
+ Distribution.ArchLinux.CabalTranslation: preprocessCabal :: GenericPackageDescription -> SystemProvides -> Maybe PackageDescription
- Distribution.ArchLinux.PkgBuild: AnnotatedPkgBuild :: Maybe Version -> String -> PkgBuild -> AnnotatedPkgBuild
+ Distribution.ArchLinux.PkgBuild: AnnotatedPkgBuild :: Maybe Version -> String -> String -> PkgBuild -> AnnotatedPkgBuild
- Distribution.ArchLinux.SrcRepo: getPkgFromDir :: FilePath -> IO (Maybe PkgBuild)
+ Distribution.ArchLinux.SrcRepo: getPkgFromDir :: FilePath -> IO PkgBuild
- Distribution.ArchLinux.SrcRepo: getReverseDependencies :: String -> SrcRepo -> [String]
+ Distribution.ArchLinux.SrcRepo: getReverseDependencies :: [String] -> SrcRepo -> [String]
- Distribution.ArchLinux.SrcRepo: getReverseDependencyRepo :: String -> SrcRepo -> SrcRepo
+ Distribution.ArchLinux.SrcRepo: getReverseDependencyRepo :: [String] -> SrcRepo -> SrcRepo

Files

Distribution/ArchLinux/CabalTranslation.hs view
@@ -8,7 +8,7 @@  module Distribution.ArchLinux.CabalTranslation (          preprocessCabal,-         cabal2pkg,+         cabal2pkg, cabal2pkg',          oldCabal2Arch,          install_hook_name        ) where@@ -22,6 +22,7 @@ import Distribution.System -- Archlinux modules import Distribution.ArchLinux.PkgBuild+import Distribution.ArchLinux.SystemProvides -- Standard types import Distribution.Text import Data.Char@@ -36,20 +37,20 @@ -- -- | Configure package for system ---preprocessCabal :: GenericPackageDescription -> Maybe PackageDescription-preprocessCabal cabalsrc =+preprocessCabal :: GenericPackageDescription -> SystemProvides -> Maybe PackageDescription+preprocessCabal cabalsrc systemContext =      case finalizePackageDescription         []         (const True) -- could check against prefered pkgs....         (Platform X86_64 buildOS) -- linux/x86_64-        (CompilerId GHC (Version [6,10,3] []))+        (CompilerId GHC (Version [6,12,3] []))          -- now constrain it to solve in the context of a modern ghc only-        corePackages+        (corePackages systemContext)         cabalsrc      of         Left deps     -> trace ("Unresolved dependencies: " ++show deps) Nothing-        Right (pkg,_) -> Just pkg { buildDepends = removeCoreFrom (buildDepends pkg) }+        Right (pkg,_) -> Just pkg { buildDepends = removeCoreFrom (buildDepends pkg) systemContext }  -- attempt to filter out core packages we've already satisified -- not actuall correct, since it doesn't take any version@@ -58,122 +59,54 @@ -- TODO this should use configDependency to find the precise -- versions we have available on Arch. ---removeCoreFrom :: [Dependency] -> [Dependency]-removeCoreFrom []               = []-removeCoreFrom (x@(Dependency n vr):xs) =-  case find (\(Dependency k _) -> n == k) corePackages of+removeCoreFrom :: [Dependency] -> SystemProvides -> [Dependency]+removeCoreFrom [] _             = []+removeCoreFrom (x@(Dependency n vr):xs) systemContext =+  case find (\(Dependency k _) -> n == k) $ corePackages systemContext of     -- haskell-parsec, haskell-quickcheck-    Just (Dependency _ (ThisVersion v'))-        | withinRange v' vr         ->     removeCoreFrom xs-     Just (Dependency (PackageName "base") _)-                                    ->     removeCoreFrom xs--    Just (Dependency _ AnyVersion)  ->     removeCoreFrom xs-    _                               -> x : removeCoreFrom xs------- Core packages and their versions. These come with--- ghc, so we should be right.------ http://haskell.org/haskellwiki/Libraries_released_with_GHC------ And what Arch Linux thinks GHC provides:------ http://repos.archlinux.org/wsvn/packages/ghc/repos/extra-x86_64/PKGBUILD------ Note: we could just list these directly, and have yaourt solve them.------ NEW POLICY:---      We rely on all "provides" from the GHC library to be listed explicitly.----corePackages :: [Dependency]-corePackages =-    [---- Magic packages we have to remove-     Dependency (PackageName "base")             (ThisVersion (Version  [4,1,0,0] []))-    ,Dependency (PackageName "dph-base")           (AnyVersion)-    ,Dependency (PackageName "dph-par" )           (AnyVersion)-    ,Dependency (PackageName "dph-prim-interface") (AnyVersion)-    ,Dependency (PackageName "dph-prim-par"   )    (AnyVersion)-    ,Dependency (PackageName "dph-prim-seq"   )    (AnyVersion)-    ,Dependency (PackageName "dph-seq"        )    (AnyVersion)-    ,Dependency (PackageName "ghc")              (AnyVersion)-    ,Dependency (PackageName "ghc-prim")         (AnyVersion)-    ,Dependency (PackageName "integer")         (AnyVersion)-    ,Dependency (PackageName "integer-gmp")         (AnyVersion)-    ,Dependency (PackageName "ghc-binary")         (AnyVersion)---- Official Provides: http://repos.archlinux.org/wsvn/packages/ghc/repos/extra-x86_64/PKGBUILD---  ,Dependency (PackageName "array")            (ThisVersion (Version  [0,3,0,0] []))---  ,Dependency (PackageName "bytestring")       (ThisVersion (Version  [0,9,1,5] []))---  ,Dependency (PackageName "Cabal")            (ThisVersion (Version  [1,8,0,2] []))---  ,Dependency (PackageName "containers")       (ThisVersion (Version  [0,3,0,0] []))---  ,Dependency (PackageName "directory")        (ThisVersion (Version  [1,0,1,0] []))---  ,Dependency (PackageName "extensible-exceptions")         (AnyVersion)---  ,Dependency (PackageName "filepath")         (ThisVersion (Version  [1,1,0,3] []))---  ,Dependency (PackageName "haskell98")        (ThisVersion (Version  [1,0,1,1] []))---  ,Dependency (PackageName "hpc")              (ThisVersion (Version  [0,5,0,4] []))---  ,Dependency (PackageName "old-locale")       (ThisVersion (Version  [1,0,0,2] []))---  ,Dependency (PackageName "old-time")         (ThisVersion (Version  [1,0,0,1] []))---  ,Dependency (PackageName "pretty")           (ThisVersion (Version  [1,0,1,1] []))---  ,Dependency (PackageName "process")          (ThisVersion (Version  [1,0,1,2] []))---  ,Dependency (PackageName "random")           (ThisVersion (Version  [1,0,0,2] []))---  ,Dependency (PackageName "syb")              (ThisVersion (Version  [0,1,0,2] []))---  ,Dependency (PackageName "template-haskell") (ThisVersion (Version  [2,4,0,0] []))---  ,Dependency (PackageName "time")             (ThisVersion (Version  [1,1,4] []))---  ,Dependency (PackageName "unix")             (ThisVersion (Version  [2,4,0,0] []))---  utf8-string----- Removed in 6.12.x---  ,Dependency (PackageName "html")             (ThisVersion (Version  [1,0,1,2] []))---  ,Dependency (PackageName "integer")          (ThisVersion (Version  [0,1,0,0] []))---  ,Dependency (PackageName "QuickCheck")       (ThisVersion (Version  [1,2,0,0] []))---  ,Dependency (PackageName "haskell-src")      (ThisVersion (Version  [1,0,1,3] []))---  ,Dependency (PackageName "parsec")           (ThisVersion (Version  [2,1,0,0] []))---  ,Dependency (PackageName "packedstring")     (ThisVersion (Version  [0,1,0,1] []))---  ,Dependency (PackageName "parallel")         (ThisVersion (Version  [1,1,0,0] []))---  ,Dependency (PackageName "network")          (ThisVersion (Version  [2,2,0,1] []))---  ,Dependency (PackageName "mtl")              (ThisVersion (Version  [1,1,0,2] []))---  ,Dependency (PackageName "stm")              (ThisVersion (Version  [2,1,1,2] []))---  ,Dependency (PackageName "HUnit")            (ThisVersion (Version  [1,2,0,3] []))---  ,Dependency (PackageName "xhtml")            (ThisVersion (Version  [3000,2,0,1] []))---  ,Dependency (PackageName "regex-base")       (ThisVersion (Version  [0,72,0,2] []))---  ,Dependency (PackageName "regex-compat")     (ThisVersion (Version  [0,71,0,1] []))---  ,Dependency (PackageName "regex-posix")      (ThisVersion (Version  [0,72,0,2] []))+                                    ->     removeCoreFrom xs systemContext --- Removed in 6.10.x---  ,Dependency (PackageName "editline")         (AnyVersion)---   Dependency (PackageName "ALUT")             (ThisVersion (Version  [2,1,0,0] []))---  ,Dependency (PackageName "cgi")              (ThisVersion (Version  [3001,1,5,1] []))---  ,Dependency (PackageName "fgl")              (ThisVersion (Version  [5,4,1,1] [])) -- gone---  ,Dependency (PackageName "GLUT")             (ThisVersion (Version  [2,1,1,1] []))---  ,Dependency (PackageName "OpenAL")           (ThisVersion (Version  [1,3,1,1] [])) -- gone---  ,Dependency (PackageName "readline")         (ThisVersion (Version  [1,0,1,0] []))+    Just (Dependency _ corevr)+        | isAnyVersion corevr       ->     removeCoreFrom xs systemContext+        | isJust isspef && (withinRange (fromJust isspef) vr)+                                    ->     removeCoreFrom xs systemContext+       where isspef = isSpecificVersion corevr -    ]+    _                               -> x : removeCoreFrom xs systemContext  ------------------------------------------------------------------------------------  ----- | Translate a generic cabal file into a PGKBUILD+-- | Translate a generic cabal file into a PGKBUILD (using default+--   values for pkgname and pkgrel). ---cabal2pkg :: PackageDescription -> (PkgBuild, Maybe String)-cabal2pkg cabal+cabal2pkg :: PackageDescription -> SystemProvides -> (AnnotatedPkgBuild, Maybe String)+cabal2pkg cabal systemContext = cabal2pkg' cabal archName 1 systemContext+  where+    archName  = map toLower (if isLibrary then "haskell-" ++ display name else display name)+    name      = pkgName (package cabal)+    isLibrary = isJust (library cabal) && map toLower (display name) `notElem` shouldNotBeLibraries +--+-- | Translate a generic cabal file into a PGKBUILD, using the specified+--   ArchLinux package name and package release.+--+cabal2pkg' :: PackageDescription -> String -> Int -> SystemProvides -> (AnnotatedPkgBuild, Maybe String)+cabal2pkg' cabal archName release systemContext+ -- TODO decide if it's a library or an executable, -- handle multipackages -- extract C dependencies  -- = trace (show cabal) $-  =-  (emptyPkgBuild-    { arch_pkgname = archName+  = ( emptyPkg {+      pkgHeader = []+    , hkgName = display name+    , pkgBody = stub {+      arch_pkgname = archName     , arch_pkgver  = vers-    , arch_url     = "http://hackage.haskell.org/package/"++display name- --       else homepage cabal+    , arch_pkgrel  = release     , arch_pkgdesc = case synopsis cabal of                           [] -> take 80 (description cabal)                           s  -> s@@ -183,87 +116,45 @@                 x@GPL {} -> x                 x@LGPL {} -> x                 l    -> UnknownLicense ("custom:"++ show l)--    -- All Hackage packages depend on GHC at build time-    -- All Haskell libraries are prefixed with "haskell-"-    , arch_makedepends = if not hasLibrary-            then my_makedepends-            else ArchList [] -- makedepends should not duplicate depends--    , arch_depends =-        (if not (isLibrary)-            then-                ArchList [ArchDep (Dependency (PackageName "gmp") AnyVersion)]-                                `mappend`-                                anyClibraries-            else ArchList [])-        `mappend`-            -- libraries have 'register-time' dependencies on-            -- their dependent Haskell libraries.-            ---           (if hasLibrary then my_makedepends-                          else ArchList [])--    -- need the dependencies of all flags that are on by default, for all libraries and executables--    -- Hackage programs only need their own source to build-    , arch_source  = ArchList . return $-          "http://hackage.haskell.org/packages/archive/"-       ++ (display name </> display vers </> display name <-> display vers <.> "tar.gz")--    , arch_build =-        [ "cd ${srcdir}/" </> display name <-> display vers-        , "runhaskell Setup configure --prefix=/usr --docdir=/usr/share/doc/${pkgname}"-        , "runhaskell Setup build"-        ] ++--    -- Only needed for libraries:-        (if hasLibrary-           then-            [ "runhaskell Setup haddock"-            , "runhaskell Setup register   --gen-script"-            , "runhaskell Setup unregister --gen-script"-            ]-           else [])--    , arch_package =-        [ "cd ${srcdir}/" </> display name <-> display vers ] ++-        -- Only needed for libraries:-        (if hasLibrary-           then-            [ "install -D -m744 register.sh   ${pkgdir}/usr/share/haskell/${pkgname}/register.sh"-            , "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/" ++ (display name)-            ]-           else [])-         ++-         ["runhaskell Setup copy --destdir=${pkgdir}"]-         +++    , arch_package = (arch_package stub) ++          (if not (null (licenseFile cabal)) && (case license cabal of GPL {} -> False; LGPL {} -> False; _ -> True)           then               [ "install -D -m644 " ++ licenseFile cabal ++ " ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"               , "rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE"               ]-          else [])--    -- if its a library:-    , arch_install = if hasLibrary then Just $ install_hook_name archName-                                   else Nothing-+          else []) }     }, if hasLibrary           then Just (install_hook archName)           else Nothing     )    where-    archName = map toLower (if isLibrary then "haskell-" ++ display name else display name)+    stub = if hasLibrary+               then (stubPackageLibrary $ display name) {+                 arch_depends = (+                   if not (isLibrary)+                   then ArchList [ArchDep (Dependency (PackageName "gmp") anyVersion)]+                        `mappend` anyClibraries+            -- libraries have 'register-time' dependencies on+            -- their dependent Haskell libraries.+            --+                   else ArchList []) `mappend` my_makedepends+                 }+               else (stubPackageProgram $ display name) {+                 -- isLibrary = False automatically+                 arch_makedepends = my_makedepends+               , arch_depends = ArchList [ArchDep (Dependency (PackageName "gmp") anyVersion)]+                                `mappend` anyClibraries+               }+     name     = pkgName (package cabal)     vers     = pkgVersion (package cabal)      -- build time dependencies     my_makedepends =-     (arch_makedepends emptyPkgBuild)+      -- everything depends on ghc and Cabal 1.4.x+     ArchList+        [(ArchDep (Dependency (PackageName "ghc") anyVersion))]         `mappend`      -- Haskell libraries      -- TODO: use a real package spec to compute these names@@ -280,7 +171,7 @@                           , d@(Dependency n _) <- buildTools b                           , n /= PackageName "hsc2hs"                           , let d' | n `elem` gtkTools-                                        = Dependency (PackageName "gtk2hs-buildtools") AnyVersion+                                        = Dependency (PackageName "gtk2hs-buildtools") anyVersion                                    | otherwise        = d                           ] @@ -295,12 +186,64 @@     anyClibraries | null libs = ArchList []                   | otherwise = ArchList libs        where-         libs = [ ArchDep (Dependency (PackageName s) AnyVersion) | s <- nub (findCLibs cabal) ]+         libs = [ ArchDep (Dependency (PackageName s) anyVersion) | s <- nub (findCLibs cabal systemContext) ]  (<->) :: String -> String -> String x <-> y = x ++ "-" ++ y  --+-- | A PKGBUILD skeleton for Haskell libraries (hasLibrary = True)+--+stubPackageLibrary :: String -> PkgBuild+stubPackageLibrary _ = emptyPkgBuild {+      arch_url     = "http://hackage.haskell.org/package/${_hkgname}"+    -- All Hackage packages depend on GHC at build time+    -- All Haskell libraries are prefixed with "haskell-"+    , arch_makedepends = ArchList [] -- makedepends should not duplicate depends+    -- Hackage programs only need their own source to build+    , arch_source  = ArchList . return $+          "http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz"+    , arch_build =+        [ "cd ${srcdir}/${_hkgname}-${pkgver}"+        , "runhaskell Setup configure --prefix=/usr --docdir=/usr/share/doc/${pkgname} -O --enable-split-objs"+        , "runhaskell Setup build"+        , "runhaskell Setup haddock"+        , "runhaskell Setup register   --gen-script"+        , "runhaskell Setup unregister --gen-script"+        , "sed -i -r -e \"s|ghc-pkg.*unregister[^ ]* |&'--force' |\" unregister.sh"+        ]+    , arch_package =+        [ "cd ${srcdir}/${_hkgname}-${pkgver}"+        , "install -D -m744 register.sh   ${pkgdir}/usr/share/haskell/${pkgname}/register.sh"+        , "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}"]+    -- if its a library:+    , arch_install = Just "${pkgname}.install"+    }++--+-- | A PKGBUILD skeleton for Haskell programs (hasLibrary = False)+--+stubPackageProgram :: String -> PkgBuild+stubPackageProgram _ = emptyPkgBuild {+      arch_url     = "http://hackage.haskell.org/package/${_hkgname}"+    -- Hackage programs only need their own source to build+    , arch_source  = ArchList . return $+          "http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz"+    , arch_build =+        [ "cd ${srcdir}/${_hkgname}-${pkgver}"+        , "runhaskell Setup configure --prefix=/usr --docdir=/usr/share/doc/${pkgname} -O"+        , "runhaskell Setup build"+        ]+    , arch_package =+        [ "cd ${srcdir}/${_hkgname}-${pkgver}"+        , "runhaskell Setup copy --destdir=${pkgdir}"]+    , arch_install = Nothing+    }++-- -- post install, and pre-remove hooks to run, to sync up ghc-pkg -- install_hook_name :: String -> String@@ -325,13 +268,10 @@     , "}"     , "post_remove() {"     , "  (cd /usr/share/doc/ghc/html/libraries; ./gen_contents_index)"-    , "}"-    , "op=$1"-    , "shift"-    , "$op $*" ]+    , "}" ] -findCLibs :: PackageDescription -> [String]-findCLibs (PackageDescription { library = lib, executables = exe }) =+findCLibs :: PackageDescription -> SystemProvides -> [String]+findCLibs (PackageDescription { library = lib, executables = exe }) sysContext =     -- warn for packages not in list.     filter (not . null) $ map (canonicalise . map toLower) (some ++ rest)   where@@ -345,110 +285,10 @@                                         else n)                                         (pkgconfigDepends (libBuildInfo l)) -    canonicalise k = case M.lookup k translationTable of+    canonicalise k = case M.lookup k (translationTable sysContext) of         Nothing -> trace ("WARNING: this library depends on a C library we do not know the pacman name for (" ++ map toLower k ++ ") . Check the C library names in the generated PKGBUILD File") $ map toLower k         Just s  -> s -    -- known pacman packages for C libraries we use:-    translationTable = M.fromList-        [("Imlib2",     "imlib2")-        ,("SDL",        "sdl")-        ,("adns",       "adns")-        ,("alut",       "freealut")-        ,("bz2",        "bzip2")-        ,("cblas",      "blas")-        ,("crack",      "cracklib")-        ,("crypto",     "openssl")-        ,("curl",       "curl")-        ,("freetype",   "freetype2")-        ,("glib",       "glib2")-        ,("wmflite",    "libwmf")-        ,("il",    "devil")--        ,("jpeg",       "libjpeg")-        ,("ldap",       "libldap")-        ,("pcap",       "libpcap")-        ,("png",        "libpng")-        ,("x11",        "libx11")-        ,("xrandr",     "libxrandr")-        ,("xml2",       "libxml2")-        ,("exif",       "libexif")-        ,("tiff",       "libtiff")-        ,("sndfile",    "libsndfile")-        ,("gcrypt",     "libgcrypt")-        ,("fftw3",      "fftw")--        ,("pq",         "postgresql")-        ,("ssl",        "openssl")-        ,("wx",         "wxgtk")-        ,("xenctrl",    "xen")-        ,("odbc",       "unixodbc")-        ,("z",          "zlib")-        ,("curses",     "ncurses")-        ,("xslt",       "libxslt")-        ,("csound64",   "csound5")-        ,("uuid",       "e2fsprogs")-        ,("doublefann", "fann")-        ,("ev",         "libev")--        ,("pthread",    "")-        ,("m",          "")-        ,("gl",         "")-        ,("glu",        "")-        ,("db_cxx",     "")-        ,("db_cxx",     "")-        ,("xdamage",    "")--        ,("icui18n",          "icu")-        ,("icuuc",          "icu")-        ,("icudata",          "icu")--        ,("netsnmp",        "net-snmp")-        ,("asound",        "alsa-lib")-        ,("ffi",        "libffi")-        ,("ogg",        "libogg")-        ,("theora",        "libtheora")-        ,("mtp",        "libmtp")-        ,("zmq",        "zeromq")-        ,("cv",        "opencv")-        ,("highgui",        "opencv")-        ,("xss",        "libxss")-        ,("idn",        "libidn")-        ,("libgsasl",        "gsasl")-        ,("event",        "libevent")-        ,("gcc_s",        "gcc-libs")---        -- subsumed into glib--        ,("gobject",                "")-        ,("gmodule",                "glib2")-        ,("gio",                    "")-        ,("gthread",                "")-        ,("gnome-vfs-module",       "")-        ,("gstreamer-audio",        "")-        ,("gstreamer-base",         "")-        ,("gstreamer-controller",   "")-        ,("gstreamer-dataprotocol", "")-        ,("gstreamer-net",          "")-        ,("ogremain",          "")-        ,("gnutls-extra",      "gnutls")-        ,("pangocairo",        "pango")--        ,("webkit",      "libwebkit")-        ,("gtk+",        "gtk")-        ,("gdk",         "gtk")-        ,("gdk-x11-2.0", "gtk2")-        ,("gtk-x11-2.0", "gtk2")-        ,("xine",        "xine-lib")-        ,("ncursesw",    "ncurses")-        ,("panel",       "ncurses")--        ,("gstreamer",   "gstreamer0.10")-        ,("gstreamer-plugins-base", "gstreamer0.10-base")-        ]-        -- atlas- shouldNotBeLibraries :: [String] shouldNotBeLibraries =     ["xmonad"@@ -504,46 +344,12 @@         unDep (Dependency n _) = n -} ------------------------------------------------------------------------------{--# Contributor: Arch Haskell Team <arch-haskell@haskell.org>-# Package generated by cabal2arch 0.6.1-pkgname=haskell-pcre-light-pkgrel=2-pkgver=0.3.1-pkgdesc="A small, efficient and portable regex library for Perl 5 compatible regular expressions"-url="http://hackage.haskell.org/package/pcre-light"-license=('custom:BSD3')-arch=('i686' 'x86_64')-makedepends=()-depends=('ghc' 'haskell-cabal' 'pcre')-options=('strip')-source=(http://hackage.haskell.org/packages/archive/pcre-light/0.3.1/pcre-light-0.3.1.tar.gz)-install=haskell-pcre-light.install-md5sums=('14d8d6e2fd200c385b1d63c888794014')-build() {-    cd ${srcdir}/pcre-light-0.3.1-    runhaskell Setup configure --prefix=/usr --docdir=/usr/share/doc/${pkgname} || return 1-    runhaskell Setup build                   || return 1-    runhaskell Setup haddock || return 1-    runhaskell Setup register   --gen-script || return 1-    runhaskell Setup unregister --gen-script || return 1-    install -D -m744 register.sh   ${pkgdir}/usr/share/haskell/$pkgname/register.sh-    install    -m744 unregister.sh ${pkgdir}/usr/share/haskell/$pkgname/unregister.sh-    install -d -m755 $pkgdir/usr/share/doc/ghc/libraries-    ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/libraries/pcre-light-    runhaskell Setup copy --destdir=${pkgdir} || return 1-    install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE || return 1-    rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE-}-    -}- ------------------------------------------------------------------------ -- Checker -- -type Warnings = String+-- 2010-10-29: This code is unused. Do we still need it?+-- type Warnings = String  -- Hard code the cabal2arch version recentCabal2ArchVersion :: Maybe Version
Distribution/ArchLinux/HackageTranslation.hs view
@@ -7,22 +7,21 @@ --  module Distribution.ArchLinux.HackageTranslation 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 Data.Char---import Data.List 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--- Debugging-import Debug.Trace  -- -- | Reads a tarball and converts it to a list of PackageDescription's@@ -33,15 +32,16 @@         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-  otherwise -> Nothing+  _ -> Nothing +parse2maybe :: ParseResult a -> Maybe a parse2maybe a = case a of       ParseOk _ pkg -> Just pkg-      otherwise -> Nothing+      _ -> Nothing  -- -- | Reads a tarball and get cabal files according to a list@@ -55,16 +55,37 @@ -- parsePackageIdentifier :: String -> Maybe PackageIdentifier parsePackageIdentifier s = case words s of-  name:version:_ -> case ver of-        Nothing -> void-        Just v -> Just $ PackageIdentifier { pkgName = PackageName name ,-                                       pkgVersion = v }-      where ver = simpleParse version-  otherwise -> void+  []             -> void+  "#":_          -> void+  name:version:_ -> case simpleParse version of+        Nothing -> err+        Just v -> Just $ PackageIdentifier { pkgName = PackageName name, pkgVersion = v }+  _ -> err  where-  void = Debug.Trace.trace("Malformed package identifier " ++ s) Nothing+  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+-- returns a list of pairs (package, conflicting dep).+--+getVersionConflicts :: [GenericPackageDescription] -> SystemProvides -> [(PackageDescription, Dependency)]+getVersionConflicts packages sysProvides = concat $ map conflicts cabals+  where cabals = mapMaybe (\p -> preprocessCabal p sysProvides) packages+        versions = M.fromList $ map (\p -> (pkgName $ packageId p, pkgVersion $ packageId p)) cabals+        issatisfied (Dependency pkg range) = case M.lookup pkg versions of+                                                 Nothing -> True+                                                 Just v -> v `withinRange` range+        conflicts p = map (\d -> (p,d)) $ filter (not . issatisfied) (buildDepends p)++--+-- | Returns the latest versions+--+getLatestVersions :: [GenericPackageDescription] -> M.Map PackageName Version+getLatestVersions packages = M.fromListWith max versions+  where versions = map (\p -> (pkgName $ packageId p, pkgVersion $ packageId p)) packages
Distribution/ArchLinux/PkgBuild.hs view
@@ -12,6 +12,7 @@          PkgBuild(..),          emptyPkgBuild,          AnnotatedPkgBuild(..),+         emptyPkg,          ArchList(..),          ArchDep(..),          pkgnameFromArchDep,@@ -28,13 +29,11 @@ import Text.PrettyPrint import Data.List import Data.Monoid-import Data.Maybe import Debug.Trace  import Control.Monad import Control.Monad.Instances import Data.Char-import Numeric   --@@ -155,16 +154,8 @@     , arch_arch        = ArchList [Arch_X86, Arch_X86_64]     , arch_url         = homepage e     , arch_license     = ArchList [license e]--    -- everything depends on ghc and Cabal 1.4.x-    , arch_makedepends = ArchList-        [(ArchDep (Dependency (PackageName "ghc")    AnyVersion))-        ,(ArchDep (Dependency (PackageName "haskell-cabal") AnyVersion))---        ,(ArchDep (Dependency "haskell-cabal" (LaterVersion (Version  [1,4,0,0] []))))-        ]--        -- makedepends=('ghc>=6.6') ?     , arch_depends     = ArchList []+    , arch_makedepends = ArchList []     , arch_source      = ArchList []     , arch_md5sum      = ArchList []         -- sha1sums=('a08670e4c749850714205f425cb460ed5a0a56b2')@@ -186,39 +177,31 @@   disp Strip = text "strip"   parse = undefined --- the PKGBUILD version spec is less expressive than cabal, we can't--- really handle unions or intersections well yet.+-- the PKGBUILD version spec is less expressive than cabal, we can+-- only handle simple intervals like (0,v) or (v,+infty)+mydisp :: VersionInterval -> Doc+mydisp (LowerBound v InclusiveBound, NoUpperBound) = if v==zeroVersion then empty else text ">=" <> disp v+mydisp (LowerBound v ExclusiveBound, NoUpperBound) = text ">" <> disp v+mydisp (_, UpperBound v boundType) = text symbol <> disp v+  where symbol = if boundType == InclusiveBound then "<=" else "<" +zeroVersion :: Version+zeroVersion = Version [0] []+ instance Text ArchDep where   disp (ArchDep (Dependency name ver)) =-    text (display name) <> mydisp ver+    disp name <> mydisp2 intervals    where+      intervals = asVersionIntervals ver+      strName = display name      --  >= (greater than or equal to), <= (less than or      --  equal to), = (equal to), > (greater than), or <-      mydisp AnyVersion           = empty--      mydisp (ThisVersion    v)   = text "=" <> disp v-      mydisp (LaterVersion   v)   = char '>' <> disp v-      mydisp (EarlierVersion v)   = char '<' <> disp v--      mydisp (UnionVersionRanges (ThisVersion  v1) (LaterVersion v2))-        | v1 == v2 = text ">=" <> disp v1-      mydisp (UnionVersionRanges (LaterVersion v2) (ThisVersion  v1))-        | v1 == v2 = text ">=" <> disp v1-      mydisp (UnionVersionRanges (ThisVersion v1) (EarlierVersion v2))-        | v1 == v2 = text "<=" <> disp v1-      mydisp (UnionVersionRanges (EarlierVersion v2) (ThisVersion v1))-        | v1 == v2 = text "<=" <> disp v1--{--      mydisp (UnionVersionRanges r1 r2)-        = disp r1 <+> text "||" <+> disp r2--      mydisp (IntersectVersionRanges r1 r2)-        = disp r1 <+> text "&&" <+> disp r2--}--      mydisp x = trace ("WARNING: Can't handle this version format yet: " ++ show x ++ "\ncheck the dependencies by hand.")$ empty+      mydisp2 l | l == []      = trace ("WARNING: version requirement for " +++                                   strName ++ " is logically impossible.") empty+                | tail l == [] = mydisp $ head l+                -- If there are multiple possible ranges, take only latest versions+                | otherwise    = trace ("WARNING: multiple version ranges specified for " +++                                        strName ++ " using only the last one.") $ mydisp $ last l    parse = undefined @@ -226,7 +209,7 @@ -- | Extract just the package name from ArchDep -- pkgnameFromArchDep :: ArchDep -> String-pkgnameFromArchDep (ArchDep (Dependency (PackageName p) v)) = p+pkgnameFromArchDep (ArchDep (Dependency (PackageName p) _)) = p  -- -- | Valid linux platforms@@ -271,6 +254,7 @@      AnnotatedPkgBuild         {pkgBuiltWith :: Maybe Version   -- ^ version of cabal2arch used, if any         ,pkgHeader    :: String          -- ^ header strings+        ,hkgName      :: String          -- ^ package name on Hackage         ,pkgBody      :: PkgBuild }      -- ^ contents of pkgbuild file     deriving (Eq, Show) @@ -279,6 +263,7 @@ emptyPkg = AnnotatedPkgBuild     { pkgBuiltWith = Nothing     , pkgHeader    = []+    , hkgName      = []     , pkgBody      = emptyPkgBuild { arch_options = ArchList []                                 , arch_makedepends = ArchList []                                 }@@ -318,12 +303,14 @@ setInput   :: String -> GetPKG () setInput s  = GetPKG (\_ -> Right ((),s)) -(<$>) :: Functor f => (a -> b) -> f a -> f b-x <$> y = fmap x y+-- 2010-10-29: This code is unused. Do we still need it?+-- (<$>) :: Functor f => (a -> b) -> f a -> f b+-- x <$> y = fmap x y  ------------------------------------------------------------------------  -- read until end of line+line :: String -> GetPKG String line s = case break (== '\n') s of     (h , _ : rest) -> do         setInput rest@@ -336,7 +323,7 @@   cs <- getInput    case cs of-    _ | "# Contributor"       `isPrefixOf` cs -> do+    _ | "# Maintainer"       `isPrefixOf` cs -> do             h <- line cs             readPackage st { pkgHeader = h } @@ -348,6 +335,11 @@                     . reverse $ h             readPackage st { pkgBuiltWith = v } +      | "_hkgname="  `isPrefixOf` cs -> do+            h <- line cs+            let s = drop 9 h+            readPackage st { hkgName = s }+       | "pkgname="  `isPrefixOf` cs -> do             h <- line cs             let s = drop 8 h@@ -440,7 +432,7 @@ -- TODO : read version spec str2archdep :: String -> ArchDep str2archdep s = case v of-    Nothing -> ArchDep (Dependency (PackageName name) AnyVersion)+    Nothing -> ArchDep (Dependency (PackageName name) anyVersion)     Just w -> ArchDep (Dependency (PackageName name) w)   where name = takeWhile (\x -> x `notElem` "<=>") s         vspec = dropWhile (\x -> x `notElem` "<=>") s@@ -463,10 +455,10 @@ rawpkg2doc pkg = vcat  [ text "pkgname"     <=> text (arch_pkgname pkg)- , text "pkgrel"-    <=> int (arch_pkgrel pkg)  , text "pkgver"     <=> disp (arch_pkgver pkg)+ , text "pkgrel"+    <=> int (arch_pkgrel pkg)  , text "pkgdesc"     <=> text (show (arch_pkgdesc pkg))  , text "url"@@ -508,19 +500,19 @@ instance Text AnnotatedPkgBuild where   disp AnnotatedPkgBuild {     pkgBuiltWith = ver,-    pkgHeader = head,+    pkgHeader = header,+    hkgName = hkg,     pkgBody = pkg-  } = case ver of-      Nothing -> empty-      Just v -> text "# Package generated by cabal2arch" <+> (disp v)-   $$ text head $$ disp pkg+  } = vcat [ if null header then empty else text header+           , text "_hkgname" <=> text hkg+           , disp pkg ]   parse = undefined  ----- Display a full PKGBUILD with contributor name+-- Display a full PKGBUILD with Maintainer name. -- pkg2doc :: String -> AnnotatedPkgBuild -> Doc-pkg2doc email pkg = text "# Contributor:" <+> text email $$ disp pkg+pkg2doc email pkg = text "# Maintainer:" <+> text email $$ disp pkg  -- -- | A data type to represent a full ArchLinux package
Distribution/ArchLinux/SrcRepo.hs view
@@ -12,9 +12,7 @@ import Distribution.ArchLinux.PkgBuild as PkgBuild  import Distribution.Package-import Distribution.Text import Distribution.Version-import Text.PrettyPrint  import Data.List as L import Data.Map as M@@ -32,20 +30,17 @@         -- The path to the repository     , repo_contents :: M.Map String PkgBuild     }+    deriving (Show)  -- -- | Reads a directory into a package ---getPkgFromDir :: FilePath -> IO (Maybe PkgBuild)+getPkgFromDir :: FilePath -> IO PkgBuild getPkgFromDir p = do-  valid <- Dir.doesFileExist (p </> "PKGBUILD")-  if valid-    then do-      pkg <- readFile (p </> "PKGBUILD")-      case decodePackage pkg of-        Left _ -> return Nothing-        Right annot_pkg -> return $ Just (pkgBody annot_pkg)-    else return Nothing+  pkg <- readFile (p </> "PKGBUILD")+  case decodePackage pkg of+    Left e -> fail ("cannot parse " ++ show p ++ ": " ++ show e)+    Right annot_pkg -> return (pkgBody annot_pkg)  -- -- | Reads a specified path into a SrcRepo structure@@ -55,18 +50,18 @@   valid <- Dir.doesDirectoryExist path   if valid     then do-      subthings <- Dir.getDirectoryContents path+      subthings' <- Dir.getDirectoryContents path+      let subthings = [ path </> x | x <- subthings', head x /= '.' ]       -- Read PkgBuilds       contents <- foldM insertpkg M.empty subthings       let result = SrcRepo { repo_path = path , repo_contents = contents }       return (Just result)     else return Nothing +insertpkg :: Map String PkgBuild -> FilePath -> IO (Map String PkgBuild) insertpkg m dir = do   pkg <- getPkgFromDir dir-  case pkg of-    Nothing -> return m-    Just p -> return $ M.insert (takeBaseName dir) p m+  return $ M.insert (takeBaseName dir) pkg m  --------------------------------------------------------------------------- --@@ -104,7 +99,7 @@   (name `notMember` m) || (name `elem` archProvidedPkgs)  trueDepends :: PkgBuild -> SrcRepo -> [String]-trueDepends p repo = L.filter (\p -> not $ isExternalDep p repo) (strDepends p)+trueDepends p repo = L.filter (\p' -> not $ isExternalDep p' repo) (strDepends p)  ------------------------------------------------------------ @@ -133,18 +128,18 @@                     recDeps = L.map (repo_contents . (\d -> getDependencyRepo d repo)) trueDeps  ----- | Output reverse dependencies of a package in topological order+-- | Output reverse dependencies of a list of packages in topological order ---getReverseDependencies :: String -> SrcRepo -> [String]+getReverseDependencies :: [String] -> SrcRepo -> [String] getReverseDependencies pkg repo = dumpContentsTopo $ getReverseDependencyRepo pkg repo  ----- | Extract reverse dependencies of a package+-- | Extract reverse dependencies of a list of packages ---getReverseDependencyRepo :: String -> SrcRepo -> SrcRepo-getReverseDependencyRepo pkg repo = repo { repo_contents = revdeps }+getReverseDependencyRepo :: [String] -> SrcRepo -> SrcRepo+getReverseDependencyRepo pkgs repo = repo { repo_contents = revdeps }   where revdeps = M.filterWithKey (isarevdep) (repo_contents repo)-        isarevdep k _ = M.member pkg (repo_contents $ getDependencyRepo k repo)+        isarevdep k _ = or $ L.map (\p -> M.member p (repo_contents $ getDependencyRepo k repo)) pkgs  ---------------------------------------------------------------- --@@ -156,12 +151,12 @@ isConflicting :: SrcRepo -> Bool isConflicting repo = and areConflicting   where listOfPkgs = M.toList $ repo_contents repo-        areConflicting = L.map (\(k,pkg) -> pkg `isConflictingWith` repo) listOfPkgs+        areConflicting = L.map (\(_,pkg) -> pkg `isConflictingWith` repo) listOfPkgs  listVersionConflicts :: SrcRepo -> [String] listVersionConflicts repo = L.map fst listConflicting   where listOfPkgs = M.toList $ repo_contents repo-        listConflicting = L.filter (\(k,pkg) -> pkg `isConflictingWith` repo) listOfPkgs+        listConflicting = L.filter (\(_,pkg) -> pkg `isConflictingWith` repo) listOfPkgs  -- -- | Check package dependencies against the repo
+ Distribution/ArchLinux/SystemProvides.lhs view
@@ -0,0 +1,70 @@+Module    : Distribution.ArchLinux.SystemProvides+Copyright : (c) Rémy Oudompheng 2010+License   : BSD3++Maintainer: Arch Haskell Team <arch-haskell@haskell.org>++> module Distribution.ArchLinux.SystemProvides where++Cabal modules++> import Distribution.Package++Standard types++> import Distribution.Text+> import qualified Data.Map as M+> import Data.Maybe+> import System.FilePath++> import Paths_archlinux++A big structure holding data about ArchLinux++> data SystemProvides = SystemProvides+>   { corePackages :: [Dependency]+>      -- ^+>      -- A list of Dependencies which are automatically satified+>      -- when GHC is installed.+>   , translationTable :: M.Map String String+>      -- ^+>      -- A hash-map where keys are library names and values are+>      -- names of the corresponding ArchLinux package.+>   }++Get SystemProvides from package-installed files++> getDefaultSystemProvides :: IO SystemProvides+> getDefaultSystemProvides = do+>   fnc <- getDataFileName $ "data" </> "ghc-provides.txt"+>   fnt <- getDataFileName $ "data" </> "library-providers.txt"+>   getSystemProvidesFromFiles fnc fnt++> getSystemProvidesFromFiles :: FilePath -> FilePath -> IO SystemProvides+> getSystemProvidesFromFiles filePkg fileTranslation = do+>   fc <- readFile filePkg+>   ft <- readFile fileTranslation+>   return SystemProvides { corePackages = corePackagesFromFile fc+>                         , translationTable = translationTableFromFile ft }++Extract GHC-provided dependencies from a file++> depstr2hs :: String -> Maybe Dependency+> depstr2hs s | s == "" || head s == '#' = Nothing+>             | otherwise = simpleParse s++> corePackagesFromFile :: String -> [Dependency]+> corePackagesFromFile srcfile1 = mapMaybe depstr2hs $ lines srcfile1++Now we translate the "library-providers" file. Any line beginning with "# "+or lines with something else than two words are discarded. Lines should have+the form "libraryname packagename".++> trstr2hs :: String -> Maybe (String, String)+> trstr2hs s = case words s of+>   "#":_ -> Nothing+>   a:b:_ -> Just (a,b)+>   _ -> Nothing++> translationTableFromFile :: String -> M.Map String String+> translationTableFromFile srcfile2 = M.fromList $ mapMaybe trstr2hs $ lines srcfile2
archlinux.cabal view
@@ -1,5 +1,5 @@ name:           archlinux-version:        0.3.4+version:        0.3.5 license:        BSD3 license-file:   LICENSE author:         Don Stewart <dons@galois.com>@@ -13,6 +13,7 @@ build-type:     Simple stability:      stable cabal-version:  >= 1.8+data-files:     data/*.txt  source-repository head   type:         git@@ -33,6 +34,9 @@         Distribution.ArchLinux.SrcRepo         Distribution.ArchLinux.CabalTranslation         Distribution.ArchLinux.HackageTranslation+        Distribution.ArchLinux.SystemProvides+    other-modules:+        Paths_archlinux  executable recdeps     main-is: scripts/recdeps.hs
+ data/ghc-provides.txt view
@@ -0,0 +1,77 @@+##+## Core packages and their versions. These come with+## ghc, so we should be right.+##+## http://haskell.org/haskellwiki/Libraries_released_with_GHC+##+## And what Arch Linux thinks GHC provides:+##+## http://repos.archlinux.org/wsvn/packages/ghc/repos/extra-x86_64/PKGBUILD+##+## Note: we could just list these directly, and have yaourt solve them.+##+## NEW POLICY:+##      We rely on all "provides" from the GHC library to be listed explicitly.+##++base==4.1.0.0+dph-base+dph-par+dph-prim-interface+dph-prim-par+dph-prim-seq+dph-seq+ghc+ghc-prim+integer+integer-gmp+ghc-binary++## Official Provides: http://repos.archlinux.org/wsvn/packages/ghc/repos/extra-x86_64/PKGBUILD+#array==0.3.0.1+#bytestring==0.9.1.7+#cabal==1.8.0.6+#containers==0.3.0.0+#directory==1.0.1.1+#extensible-exceptions==0.1.1.1+#filepath==1.1.0.4+#haskell98==1.0.1.1+#hpc==0.5.0.5+#old-locale==1.0.0.2+#old-time==1.0.0.5+#pretty==1.0.1.1+#process==1.0.1.3+#random==1.0.0.2+#syb==0.1.0.2+#template-haskell==2.4.0.1+#time==1.1.4+#unix==2.4.0.2+#haddock==2.6.0+## utf8-string+#+#+## Removed in 6.12.x+# html==1.0.1.2+# integer==0.1.0.0+# QuickCheck==1.2.0.0+# haskell-src==1.0.1.3+# parsec==2.1.0.0+# packedstring==0.1.0.1+# parallel==1.1.0.0+# network==2.2.0.1+# mtl==1.1.0.2+# stm==2.1.1.2+# HUnit==1.2.0.3+# xhtml==3000.2.0.1+# regex-base==0.72.0.2+# regex-compat==0.71.0.1+# regex-posix==0.72.0.2+#+## Removed in 6.10.x+# editline+# ALUT==2.1.0.0+# cgi==3001.1.5.1+# fgl==5.4.1.1 -- gone+# GLUT==2.1.1.1+# OpenAL==1.3.1.1 -- gone+# readline==1.0.1.0
+ data/library-providers.txt view
@@ -0,0 +1,109 @@+# This file lists external library dependencies and the ArchLinux+# packages providing them. For example, if the openssl package+# provides libssl.so, there should be a line+#+# ssl openssl+#++Imlib2     imlib2+SDL        sdl+adns       adns+alut       freealut+bz2        bzip2+cblas      blas+crack      cracklib+crypto     openssl+curl       curl+freetype   freetype2+glib       glib2+wmflite    libwmf+il         devil++jpeg       libjpeg+ldap       libldap+pcap       libpcap+png        libpng+x11        libx11+xrandr     libxrandr+xml2       libxml2+exif       libexif+tiff       libtiff+sndfile    libsndfile+gcrypt     libgcrypt+gnutls     gnutls+gnutls-extra      gnutls+fftw3      fftw++pq         postgresql+ssl        openssl+wx         wxgtk+odbc       unixodbc+z          zlib+curses     ncurses+xslt       libxslt+uuid       e2fsprogs+ev         libev+pthread    glibc+m          glibc+gl         libgl+glu        mesa+glut       freeglut+db_cxx     db+sqlite3    sqlite3+xdamage    libxdamage++icui18n          icu+icuuc            icu+icudata          icu++netsnmp        net-snmp+asound         alsa-lib+ffi            libffi+ogg            libogg+theora         libtheora+mtp            libmtp+cv             opencv+highgui        opencv+xss            libxss+idn            libidn+libgsasl       gsasl+event          libevent+gcc_s          gcc-libs+stdc++         gcc-libs++# subsumed into glib++gobject                glib2+gmodule                glib2+gio                    glib2+gthread                glib+gnome-vfs-module+gstreamer-audio        gstreamer0.10-base+gstreamer-base         gstreamer0.10+gstreamer-controller   gstreamer0.10+gstreamer-dataprotocol gstreamer0.10+gstreamer-net          gstreamer0.10+ogremain++webkit      libwebkit+cairo       cairo+pango       pango+pangocairo  pango+gtk+        gtk2+gdk         gtk+gdk-x11-2.0 gtk2+gtk-x11-2.0 gtk2+vte         vte+xine        xine-lib+ncurses     ncurses+ncursesw    ncurses+panel       ncurses++gstreamer              gstreamer0.10+gstreamer-plugins-base gstreamer0.10-base++# Packages from AUR+xenctrl    xen+csound64   csound5+doublefann fann+zmq        zeromq