debian 3.35 → 3.40
raw patch · 13 files changed
+84/−948 lines, 13 filesdep −Extradep ~parsec
Dependencies removed: Extra
Dependency ranges changed: parsec
Files
- Debian/Changes.hs +1/−1
- Debian/Extra/CIO.hs +0/−61
- Debian/GenBuildDeps.hs +9/−1
- Debian/URI.hs +17/−1
- Debian/VersionPolicy.hs +0/−267
- Distribution/Package/Debian.hs +1/−0
- cbits/gwinsz.c +9/−0
- debian.cabal +7/−8
- debian/changelog +0/−493
- debian/compat +0/−1
- debian/control +0/−110
- debian/rules +0/−2
- utils/Report.hs +40/−3
Debian/Changes.hs view
@@ -104,7 +104,7 @@ Just (before, _, _, _) -> Just (Left ("Parse error in changelog at:\n" ++ show before ++ "\nin:\n" ++ text)) where entryRE = mkRegex $ bol ++ blankLines ++ headerRE ++ nonSigLines ++ blankLines ++ signature ++ blankLines- nonSigLines = "((( .*)|([ \t]*)\n)+)"+ nonSigLines = "((( .*|\t.*| \t.*)|([ \t]*)\n)+)" -- In the debian repository, sometimes the extra space in front of the -- day-of-month is missing, sometimes an extra one is added. signature = "( -- ([^\n]*) (..., ? ?.. ... .... ........ .....))[ \t]*\n"
− Debian/Extra/CIO.hs
@@ -1,61 +0,0 @@-module Debian.Extra.CIO- ( tMessage- , vMessage- , printStdout- , printStderr- , printOutput- , dotOutput- ) where--import qualified Data.ByteString.Char8 as B-import Extra.CIO-import Prelude hiding (putStr)-import System.Unix.Process---- |Print a message without forcing the command's output-tMessage :: CIO m => String -> a -> m a-tMessage message output = ePutStrBl message >> return output---- |Print a message without forcing the command's output-vMessage :: CIO m => Int -> String -> a -> m a-vMessage v message output = vEPutStrBl v message >> return output---- |Print stdout to stdout-printStdout :: CIO m => [Output] -> m [Output]-printStdout output =- bol >> mapM print output- where- print x@(Stdout s) = putStr (B.unpack s) >> return x- print x = return x---- |Print stderr to stderr-printStderr :: CIO m => [Output] -> m [Output]-printStderr output =- eBOL >> mapM print output- where- print x@(Stderr s) = ePutStr (B.unpack s) >> return x- print x = return x---- |Print all the output to the appropriate output channel-printOutput :: CIO m => [Output] -> m [Output]-printOutput output =- eBOL >> mapM print output- where- print x@(Stdout s) = putStr (B.unpack s) >> return x- print x@(Stderr s) = ePutStr (B.unpack s) >> return x- print x = return x---- |Print one dot to stderr for every COUNT characters of output.-dotOutput :: CIO m => Int -> [Output] -> m [Output]-dotOutput groupSize output =- mapM (\ (count, elem) -> ePutStr (replicate count '.') >> return elem) pairs- where- pairs = zip (dots 0 (map length output)) output- dots _ [] = []- dots rem (count : more) =- let (count', rem') = divMod (count + rem) groupSize in- count' : dots rem' more- length (Stdout s) = B.length s- length (Stderr s) = B.length s- length _ = 0-
Debian/GenBuildDeps.hs view
@@ -22,13 +22,13 @@ import Control.Monad (filterM) import Debian.Control+import Data.Either import Data.Graph (Graph,buildG,topSort,reachable, transposeG, vertices, edges) import Data.List import qualified Data.Map as Map import Data.Maybe import qualified Data.Set as Set import Debian.Relation-import Extra.Either (concatEithers) import System.Directory (getDirectoryContents, doesFileExist) import System.IO @@ -39,6 +39,14 @@ type DepInfo = (SrcPkgName, -- source package name Relations, -- dependency relations [BinPkgName]) -- binary package names++-- |Turn a list of eithers into an either of lists+-- copied from Extra.Either+concatEithers :: [Either a b] -> Either [a] [b]+concatEithers xs =+ case partitionEithers xs of + ([], rs) -> Right rs+ (ls, _) -> Left ls -- |Return the dependency info for a source package with the given dependency relaxation. -- |According to debian policy, only the first paragraph in debian\/control can be a source package
Debian/URI.hs view
@@ -9,11 +9,12 @@ import Control.OldException (Exception(..), try) --import Control.Monad.Trans (MonadIO) import qualified Data.ByteString.Lazy.Char8 as L-import Extra.Net (webServerDirectoryContents)+import Data.Maybe (catMaybes) import Network.URI import System.Directory (getDirectoryContents) import System.Exit import System.Unix.Process (lazyCommand, collectOutput)+import Text.Regex (mkRegex, matchRegex) uriToString' uri = uriToString id uri "" @@ -31,6 +32,19 @@ " cat " ++ show (uriPath uri)) _ -> cmdOutput ("curl -s -g '" ++ uriToString' uri ++ "'") +-- | Parse the text returned when a directory is listed by a web+-- server. This is currently only known to work with Apache.+-- NOTE: there is a second copy of this function in+-- Extra:Extra.Net. Please update both locations if you make changes.+webServerDirectoryContents :: L.ByteString -> [String]+webServerDirectoryContents text =+ catMaybes . map (second . matchRegex re) . lines . L.unpack $ text+ where+ re = mkRegex "( <A HREF|<a href)=\"([^/][^\"]*)/\""+ second (Just [_, b]) = Just b+ second _ = Nothing++ dirFromURI :: URI -> IO (Either Exception [String]) dirFromURI uri = case (uriScheme uri, uriAuthority uri) of@@ -39,6 +53,8 @@ " ls -1 " ++ uriPath uri) >>= return . either Left (Right . lines . L.unpack) _ -> cmdOutput ("curl -s -g '" ++ uriToString' uri ++ "/'") >>= return . either Left (Right . webServerDirectoryContents)++ cmdOutput :: String -> IO (Either Exception L.ByteString) cmdOutput cmd =
− Debian/VersionPolicy.hs
@@ -1,267 +0,0 @@--- |This module contains functions governing the assignment of version--- numbers, patterned after Ubuntu version number policy:------ (1) To distinguish packages which have been pulled out of one vendor's--- repository to build for another, we add a vendor name and a build--- number, so version "1.2-3" becomes "1.2-3vendorname1". Subsequent--- builds (perhaps due to changes in build dependencies) would be numbered--- "1.2-3vendorname2" and so on.------ (2) In addition, packages which are backported, (i.e. built for a--- non-development release such as Debian etch or Ubuntu feisty) need--- another tag to distinguish them from the version that would go into--- the development release (sid or, as of this writing, heron.) So if--- we pulled the source for version "1.2-3vendorname4" out of our pool--- to build for feisty, it would become "1.2-3vendorname4~feisty1".------ (3) The first two policies combine if we--- are building a package pulled directly from the other vendor into--- our feisty pool, then "1.2-3" would become 1.2-3vendorname0~feisty1.--- Subsequent builds of "1.2-3" (perhaps due to changes in build--- dependencies) would get increasing build numbers,--- "1.2-3vendorname0~feisty2" etc.------ (4) If the original version number does not end with a digit, a "0" is--- inserted before the vendor name to facilitate parsing of these tags.------ (5) Finally, an additional tag format is supported for the benefit of--- one autobuilder client, where before the vendor name an "r" and an--- integer are inserted.-module Debian.VersionPolicy- ( VersionTag- , parseTag- , getTag- , dropTag- , setTag- , appendTag- , tagCmp- , tagMax- , bumpTag- , newTag- , compareSourceAndDist- ) where--import Debian.Version-import Text.Regex-import Data.List-import Data.Maybe---- |We implement two types of version number tags. One has the format--- @r<releasenumber>vendor<buildnumber>~release<buildnumber>@--- the other simply--- @vendor<buildnumber>~release<buildnumber>@--- There are notes from a meeting that explains why ReleaseTagBuild is--- more future friendly, but it is also more ugly.-data VersionTag- = VersionTag { extraNumber :: Maybe Int -- The number following the "r" (do not- -- use in new applications.)- , vendorTag :: (String, Int) -- The vendor name and build number- , releaseTag :: Maybe (String, Int) -- The release name and build number- } deriving (Show, Eq)---- | Parse a Debian revision string (the portion of the version number--- following the final dash) into a prefix and a VersionTag.-parseTag :: String -> DebianVersion -> (DebianVersion, Maybe VersionTag)-parseTag vendor version =- let (e, v, r) = evr version in- let (prefix, tag) =- case r of- Nothing -> (Nothing, Nothing)- Just s ->- case matchRegex re s of- Nothing -> (Just s, Nothing)- Just [prefix1, prefix2, buildNo, "", _, _, _, _] ->- (Just (prefix1 ++ prefix2),- Just (VersionTag { extraNumber = Nothing- , vendorTag = (vendor, read buildNo)- , releaseTag = Nothing }))- Just [prefix1, prefix2, buildNo, _, releaseName, _, _, releaseNo] ->- (Just (prefix1 ++ prefix2),- Just (VersionTag { extraNumber = Nothing- , vendorTag = (vendor, read buildNo)- , releaseTag = Just (releaseName, read releaseNo) }))- Just result -> error $ "Internal error: " ++ show result in- -- Try to parse the r5 from the end of the prefix.- let (prefix', tag') =- case (maybe Nothing (matchRegex extraRE) prefix, tag) of- (Just [prefix1, prefix2, digits], Just tag) -> - (Just (prefix1 ++ prefix2), Just (tag {extraNumber = Just (read digits)}))- _ -> (prefix, tag) in- (buildDebianVersion e v (if prefix' == Just "0" then Nothing else prefix'), tag')- where- re = mkRegex (prefixRE ++ digitsRE ++ vendorRE ++ "(" ++ releaseRE ++ ")?$")- prefixRE = "^(.*[^0-9])?"- digitsRE = "([0-9]+)"- vendorRE = vendor ++ "([0-9]+)"- releaseRE = "~(([^0-9]+)|(bpo[0-9]+\\+))([0-9]+)"- extraRE = mkRegex "^(.*)([0-9]+)r([0-9]+)"---- | The tag returned by splitTag-getTag :: String -> DebianVersion -> Maybe VersionTag-getTag vendor version = snd (parseTag vendor version)---- | The prefix returned by splitTag-dropTag :: String -> DebianVersion -> DebianVersion-dropTag vendor version = fst (parseTag vendor version)---- |Modify a version number by adding or changing the vendor tag. The--- result will be newer than the distVersion (the newest already--- uploaded version.) It will also be different from (though not--- necessarily newer than) any of the elements of allVersions-setTag :: (String -> String)- -- ^ The release name alias function. As an example, this would map- -- the repository etch to the tag bpo40+, as specified by Debian policy.- -> String- -- ^ The vendor tag- -> Maybe String- -- ^ The build release, or Nothing if this is a development release- -> Maybe Int- -- ^ Use old "r0vendor1" format- -> Maybe DebianVersion- -- ^ The newst version that is already present in the dist. We need- -- to generate a version number newer than this.- -> [DebianVersion]- -- ^ All the versions that are currently available in the pool. The- -- result must not be a member of this list.- -> DebianVersion- -- ^ The version number that appears in the newest change log- -- entry of the source package. The result will be this number- -- with a version tag added. If this version is older than the- -- current version with its tag stripped, the package cannot be- -- built.- -> Either String DebianVersion- -- ^ The modified version number-{-setTag alias vendor release extra distVersion allVersions sourceVersion =- error ("vendor=" ++ show vendor ++ ", release=" ++ show release ++ ", extra=" ++ show extra ++ ", distVersion=" ++ show distVersion ++ ", allVersions=" ++ show allVersions ++ ", sourceVersion=" ++ show sourceVersion)-}-setTag alias vendor release extra distVersion allVersions sourceVersion =- let oldTag = - case maybe Nothing (Just . parseTag vendor) distVersion of- Nothing -> Right Nothing- Just (distUpstreamVersion, distTag) ->- case compare sourceUpstreamVersion distUpstreamVersion of- LT -> Left ("Source version " ++ show sourceVersion ++- " is too old to trump uploaded version " ++ show distUpstreamVersion)- GT -> Right Nothing- EQ -> Right distTag in- either Left (Right . appendTag alias sourceUpstreamVersion . Just . findAvailableTag . newTag) oldTag- where- -- The new tag must- -- 1) be newer than the old tag- -- 2) be at least as new as the tag in the source code changelog.- -- 3) have the appropriate releaseTag- -- The oldTag may not have an appropriate releaseTag, because the- -- distribution may have recently switched from development to- -- non-development. In that case we will have to bump the- -- vendor build number, not the release build number, and then- -- add the release tag.- newTag Nothing =- VersionTag {vendorTag = (vendor, 1), releaseTag = maybe Nothing (\ relName -> Just (relName, 1)) release, extraNumber = extra}- newTag (Just distTag) =- let distTag' = fixReleaseName release (bumpTag distTag) in- let sourceTag' = maybe Nothing (Just . setReleaseName release) sourceTag in- case tagMax [Just distTag', sourceTag'] of- Nothing -> error $ "Internal error"- Just tag -> tag- (sourceUpstreamVersion, sourceTag) = parseTag vendor sourceVersion- -- All the tags of existing packages whose upstream version matches the source- allTags = catMaybes (map snd (filter (\ (v, _) -> v == sourceUpstreamVersion) (map (parseTag vendor) allVersions)))- -- Repeatedly increment candidate until it differs from the- -- elements of all. Note that this is not the same as taking- -- the maximum element and incrementing it, the value we want- -- only needs to be not less than candidate.- findAvailableTag :: VersionTag -> VersionTag- findAvailableTag candidate =- if elem candidate allTags then findAvailableTag (bumpTag candidate) else candidate--tagCmp (Just tagA) (Just tagB) =- let (_, a) = vendorTag tagA- (_, b) = vendorTag tagB in- case compare a b of- EQ -> case (releaseTag tagA, releaseTag tagB) of- (Just (_, a), Just (_, b)) -> compare a b- (Nothing, Nothing) -> EQ- (Nothing, _) -> LT- (_, Nothing) -> GT- x -> x-tagCmp Nothing Nothing = EQ-tagCmp Nothing _ = LT-tagCmp _ Nothing = GT--tagMax :: [Maybe VersionTag] -> Maybe VersionTag-tagMax tags = head (sortBy (flip tagCmp) tags)--bumpTag tag@(VersionTag {releaseTag = Just (relName, relBuild)}) = tag {releaseTag = Just (relName, relBuild + 1)}-bumpTag tag@(VersionTag {vendorTag = (name, build), releaseTag = Nothing}) = tag {vendorTag = (name, build + 1)}---- If one of the version number candidates has the wrong release name--- this function fixes it, ensuring that the new tag isn't trumped by--- the old.-fixReleaseName release tag@(VersionTag {vendorTag = (vendorName, vendorBuild)}) =- case (release, releaseTag tag) of- (Just relName, Just (oldRelName, _)) | relName == oldRelName -> tag- -- If the release name doesn't match we need to bump the vendor build- (Just relName, _) -> tag {vendorTag = (vendorName, vendorBuild+1), releaseTag = Just (relName, 1)}- -- Removing an existing release tag always increases the version- (Nothing, Just _) -> tag {releaseTag = Nothing}- (Nothing, Nothing) -> tag {vendorTag = (vendorName, vendorBuild+1)}---- This is similer to fixReleaseName, but we don't require the result to--- trump the argument. This is applied to the source package version number,--- which is not necessarily present in the dist.-setReleaseName release tag =- case (release, releaseTag tag) of- (Just relName, Just (oldRelName, _)) | relName == oldRelName -> tag- (Just relName, Just _) -> tag {releaseTag = Just (relName, 1)}- (Just relName, Nothing) -> tag {releaseTag = Just (relName, 1)}- (Nothing, _) -> tag {releaseTag = Nothing}---- Create a tag which is one click newer.-newTag vendor Nothing extra = VersionTag { extraNumber = extra, vendorTag = (vendor, 1), releaseTag = Nothing }-newTag vendor (Just name) extra = VersionTag { extraNumber = extra, vendorTag = (vendor, 0), releaseTag = Just (name, 1) }---- | Format a tag as a string.-showTag :: (String -> String) -> VersionTag -> String-showTag alias (VersionTag { extraNumber = extra- , vendorTag = (vendor, vendorBuildNumber)- , releaseTag = releaseInfo }) =- maybe "" (("r" ++) . show) extra ++- vendor ++ show vendorBuildNumber ++- maybe "" (\ (relname, relbuild) -> "~" ++ alias relname ++ show relbuild) releaseInfo---- | Append a vendor tag to a string containing the revision portion--- of a debian version number.-appendTag :: (String -> String) -> DebianVersion -> Maybe VersionTag -> DebianVersion-appendTag _ ver Nothing = ver-appendTag alias ver (Just tag) =- case revision ver of- Nothing -> setRevision ver (Just ("0" ++ showTag alias tag))- Just rev -> case matchRegex numericSuffixRE rev of- Just [_, ""] -> setRevision ver (Just (rev ++ "0" ++ showTag alias tag))- Just [_, _] -> setRevision ver (Just (rev ++ showTag alias tag))- _ -> error "internal error"- where numericSuffixRE = mkRegex "^(.*[^0-9])?([0-9]*)$"---- | Change the revision part of a Debian version number. (This may--- belong in Debian.Version.)-setRevision :: DebianVersion -> Maybe String -> DebianVersion-setRevision ver rev = buildDebianVersion (epoch ver) (version ver) rev---- Compare the version seen in the source code changelog to a version--- seen in the distribution. Since the autobuilder adds tags to the--- version number of the packages it builds, the distribution version--- may have been built from the source version even if they differ.--- Specifically, we must assume that if the version matches when we--- strip off one or both sections of the tag on the distribution--- version number.-compareSourceAndDist vendor s d =- let (verS, tagS) = parseTag vendor s- (verD, tagD) = parseTag vendor d in- let venS = maybe Nothing (Just . vendorTag) tagS- venD = maybe Nothing (Just . vendorTag) tagD- relS = maybe Nothing releaseTag tagS- relD = maybe Nothing releaseTag tagD in- case () of- _ | verS /= verD -> compare verS verD- | isNothing venS && isJust venD -> EQ- | isNothing relS && isJust relD -> EQ- | True -> compare s d
Distribution/Package/Debian.hs view
@@ -606,6 +606,7 @@ nub $ [[D.Rel "debhelper" (Just (D.GRE (parseDebianVersion "7.0"))) Nothing], [D.Rel "haskell-devscripts" (Just (D.GRE (parseDebianVersion "0.6.15+nmu7"))) Nothing],+ [D.Rel "hscolour" Nothing Nothing], [D.Rel "cdbs" Nothing Nothing], [D.Rel "ghc6" (Just (D.GRE (parseDebianVersion "6.8"))) Nothing]] ++ (if debLibProf flags then [[D.Rel "ghc6-prof" Nothing Nothing]] else []) ++
+ cbits/gwinsz.c view
@@ -0,0 +1,9 @@+#include <sys/ioctl.h>++unsigned long c_get_window_size(void) {+ struct winsize w;+ if (ioctl (0, TIOCGWINSZ, &w) >= 0)+ return (w.ws_row << 16) + w.ws_col;+ else+ return 0x190050;+}
debian.cabal view
@@ -1,12 +1,12 @@ Name: debian-Version: 3.35+Version: 3.40 License: BSD3 License-File: debian/copyright Author: David Fox Category: System Maintainer: david@seereason.com-Homepage: http://src.seereason.com/ghc610/haskell-debian-3-Build-Depends: base >= 4 && < 5, syb, bytestring, containers, directory, filepath, mtl, network, old-locale, parsec, pretty, process, regex-compat, regex-posix, time, unix, bzlib, Extra >= 0.4, HaXml, Unixutils, zlib+Homepage: http://src.seereason.com/ghc6103/haskell-debian-3+Build-Depends: base >= 4 && < 5, syb, bytestring, containers, directory, filepath, mtl, network, old-locale, parsec >= 3, pretty, process, regex-compat, regex-posix, time, unix, bzlib, HaXml, Unixutils, zlib Build-Type: Simple Synopsis: Modules for working with the Debian package system Description:@@ -26,7 +26,6 @@ Debian.Control.ByteString, Debian.Control.String, Debian.Deb,- Debian.Extra.CIO, Debian.Extra.Files, Debian.GenBuildDeps, Debian.Relation,@@ -39,7 +38,6 @@ Debian.Version.Common, Debian.Version.String, Debian.Version.ByteString,- Debian.VersionPolicy, Debian.Report, Debian.Time, Debian.URI,@@ -51,9 +49,7 @@ Distribution.Package.Debian.Main, Distribution.Package.Debian extra-source-files:- tests/Main.hs debian/changelog - debian/compat debian/control debian/copyright- debian/rules+ tests/Main.hs Executable: fakechanges Main-is: utils/FakeChanges.hs@@ -62,6 +58,9 @@ Executable: debian-report Main-is: utils/Report.hs ghc-options: -O2 -threaded -W+C-Sources: cbits/gwinsz.c+Include-Dirs: cbits+Install-Includes: gwinsz.h Executable: cabal-debian Main-is: utils/CabalDebian.hs
− debian/changelog
@@ -1,493 +0,0 @@-haskell-debian (3.35) unstable; urgency=low-- * removed dependencies on Extra.HaXml- * Updated to base >= 4 && < 5- * Fixed test suite-- -- Jeremy Shaw <jeremy@seereason.com> Wed, 01 Jul 2009 09:48:00 -0500--haskell-debian (3.34) unstable; urgency=low-- * cabal-debian: move -doc packages to Build-Depends-Indep- * cabal-debian: properly nub Build-Depends and Build-Depends-Indep-- -- Jeremy Shaw <jeremy@seereason.com> Sun, 03 May 2009 12:15:52 -0500--haskell-debian (3.33) unstable; urgency=low-- * cabal-debian: Setion: libdevel -> haskell-- -- Jeremy Shaw <jeremy@seereason.com> Thu, 16 Apr 2009 16:22:35 -0500--haskell-debian (3.32) unstable; urgency=low-- * Add fields to Debian.Changes.ChangedFileSpec for SHA1 and SHA256- checksums.-- -- David Fox <dsf@seereason.com> Fri, 03 Apr 2009 07:14:59 -0700--haskell-debian (3.31) unstable; urgency=low-- * update to use newer haskell-devscripts which includes hlibrary.mk- * change libghc6-*-doc to haskell-*-doc- * move haskell-*-doc to Section: doc- * build haskell-*-doc for Architecture 'all' instead of 'any'- * make ghc6-doc and haddock Build-Depends-Indep- * update Standards-Version to 3.8.1- * depend on cdbs and haskell-devscripts instead of haskell-cdbs- * only use one space at the beginning of lines in the long description- * add ${misc:Depends} to Depends lines-- -- Jeremy Shaw <jeremy@seereason.com> Mon, 23 Mar 2009 20:18:41 -0500--haskell-debian (3.30) unstable; urgency=low-- * Move the modules for dealing with the repository into a new package- named haskell-debian-repo. The cabal-debian tool remains in this- package, so this split means that the repo package can change without- triggering massive rebuilding due to build dependencies on- cabal-debian.-- -- David Fox <dsf@seereason.com> Wed, 18 Feb 2009 06:36:25 -0800--haskell-debian (3.29) unstable; urgency=low-- * Add System.Chroot to list of exported modules- * Reduce number of modules loaded by CabalDebian.-- -- David Fox <dsf@seereason.com> Tue, 10 Feb 2009 17:06:47 -0800--haskell-debian (3.28) unstable; urgency=low-- * Add System.Chroot.useEnv, and use it to allow contact with the ssh- agent from inside of changeroots.-- -- David Fox <dsf@seereason.com> Mon, 09 Feb 2009 11:18:59 -0800--haskell-debian (3.27) unstable; urgency=low-- * Added apt-get-build-deps. not librarized yet :(-- -- Jeremy Shaw <jeremy@seereason.com> Fri, 06 Feb 2009 18:52:36 -0600--haskell-debian (3.26) unstable; urgency=low-- * Improve the code that decides whether the sources.list has changed,- to avoid recreating the build environment as often.-- -- David Fox <dsf@seereason.com> Thu, 05 Feb 2009 08:56:32 -0800--haskell-debian (3.25) unstable; urgency=low-- * Use State monad instead of RWS monad for AptIO- * Rename IOState to AptState-- -- David Fox <dsf@seereason.com> Wed, 04 Feb 2009 09:34:24 -0800--haskell-debian (3.24) unstable; urgency=low-- * Use Data.Time instead of System.Time- * Fix code to compute the elapsed time for the dpkg-buildpackage.- * Restore some generated dependencies that got dropped out of- cabal-debian.-- -- David Fox <dsf@seereason.com> Sat, 31 Jan 2009 08:45:51 -0800--haskell-debian (3.23) unstable; urgency=low-- * Eliminate the use of EnvPath in most places, just use a regular- path instead. There were very few places where we actually were- inside a changeroot.-- -- David Fox <dsf@seereason.com> Thu, 29 Jan 2009 16:48:23 -0800--haskell-debian (3.22) unstable; urgency=low-- * cabal-debian now has autodetection of ghc6 bundled packages-- -- Jeremy Shaw <jeremy@seereason.com> Thu, 29 Jan 2009 15:26:25 -0600--haskell-debian (3.21) unstable; urgency=low-- * Don't write out postinst and postrm for the doc package, they are- now automatically added by haskell-cdbs.-- -- David Fox <dsf@seereason.com> Tue, 27 Jan 2009 10:14:20 -0800--haskell-debian (3.20) unstable; urgency=low-- * Modify the buildable function in GenBuildDeps so it returns more- info about the ready packages and what packages each one blocks.-- -- David Fox <dsf@seereason.com> Tue, 27 Jan 2009 06:55:39 -0800--haskell-debian (3.19) unstable; urgency=low-- * Make cabal-debian depend on haskell-cdbs, it used to be the opposite.-- -- David Fox <dsf@seereason.com> Sun, 25 Jan 2009 15:22:41 -0800--haskell-debian (3.18) unstable; urgency=low-- * Modify cabal-debian to it creates debianizations that use the new- haskell-cdbs package instead of our modified haskell-devscripts with- the cdbs file hlibrary.mk added in.- * Have cabal-debian explain what changes it is making to the dependency- list.-- -- David Fox <dsf@seereason.com> Sat, 24 Jan 2009 07:27:47 -0800--haskell-debian (3.17) unstable; urgency=low-- * Have cabal-debian --substvar print its result to stderr.-- -- David Fox <dsf@seereason.com> Fri, 23 Jan 2009 10:33:48 -0800--haskell-debian (3.16) unstable; urgency=low-- * Back out register/unregister stuff, just have cabal-debian die if the- package doesn't have a library section.-- -- David Fox <dsf@seereason.com> Thu, 22 Jan 2009 15:33:43 -0800--haskell-debian (3.15) unstable; urgency=low-- * Don't leave package registered after computing lbi.-- -- David Fox <dsf@seereason.com> Thu, 22 Jan 2009 14:19:23 -0800--haskell-debian (3.14) unstable; urgency=low-- * Fix a bug that resulted in a fromJust Nothing error.-- -- David Fox <dsf@seereason.com> Thu, 22 Jan 2009 09:59:16 -0800--haskell-debian (3.13) unstable; urgency=low-- * Add the cabal-debian executable to this package to ease bootstrapping.-- -- David Fox <dsf@seereason.com> Fri, 16 Jan 2009 06:41:40 -0800--haskell-debian (3.12) unstable; urgency=low-- * Export some functions and types from Debian.Apt.Index that were- already being used by other applications- * Allow relation parser to skip empty relations like such as: a, ,c-- -- Jeremy Shaw <jeremy@n-heptane.com> Fri, 09 Jan 2009 18:22:09 -0600--haskell-debian (3.11) unstable; urgency=low-- * Gather code to retrieve the text an URI points to into the Debian.URI- module.-- -- David Fox <dsf@seereason.com> Tue, 04 Nov 2008 13:53:33 -0800--haskell-debian (3.10) unstable; urgency=low-- * Change name and arch of doc package.-- -- David Fox <dsf@seereason.com> Sat, 20 Sep 2008 12:07:38 -0700--haskell-debian (3.9) unstable; urgency=low-- * Compute exactly which packages participate in dependency cycles.-- -- David Fox <dsf@seereason.com> Mon, 18 Aug 2008 12:42:56 -0700--haskell-debian (3.8) unstable; urgency=low-- * Don't add an extra newline at the end of the Files section when- editing the .changes file.-- -- David Fox <dsf@seereason.com> Mon, 21 Jul 2008 10:57:49 -0700--haskell-debian (3.7) unstable; urgency=low-- * Eliminate all direct uses of TIO, we always use CIO m => so- that all functions can be called from the regular IO monad.-- -- David Fox <dsf@seereason.com> Sat, 19 Jul 2008 10:27:49 -0700--haskell-debian (3.6) unstable; urgency=low-- * Remove useless arguments from insertRelease.- * Replace debianization-- -- David Fox <dsf@seereason.com> Tue, 01 Jul 2008 10:41:22 -0700--haskell-debian (3.5) unstable; urgency=low-- * Debianization generated by cabal-debian-- -- David Fox <dsf@seereason.com> Sat, 28 Jun 2008 15:49:07 -0700--haskell-debian (3.4) unstable; urgency=low-- * Even correcter code for doing Relax-Depends. The relaxDeps function- is now seperate from the other build depenency functions, which makes- things a bit simpler and easier to document.-- -- David Fox <dsf@seereason.com> Wed, 18 Jun 2008 21:00:36 +0000--haskell-debian (3.3) unstable; urgency=low-- * Add code to correctly implement Relax-Depends for non-global- dependencies.-- -- David Fox <dsf@seereason.com> Sat, 31 May 2008 07:31:15 +0000--haskell-debian (3.2) unstable; urgency=low-- * Redo the buildable function in GenBuildDeps.- * Improve message from OSImage.updateLists.-- -- David Fox <dsf@seereason.com> Sat, 24 May 2008 13:06:09 +0000--haskell-debian (3.1-1) unstable; urgency=low-- * Version number follies.-- -- David Fox <dsf@seereason.com> Thu, 22 May 2008 16:18:47 -0700--haskell-debian (3.1) unstable; urgency=low-- * Re-worked the build dependency computation-- -- David Fox <dsf@seereason.com> Thu, 22 May 2008 10:59:22 -0700--haskell-debian (3.0) unstable; urgency=low-- * Re-organization of module heirarchy.-- -- David Fox <dsf@seereason.com> Mon, 19 May 2008 12:47:25 -0700--haskell-debian (2.28) unstable; urgency=low-- * Eliminate use of haskell-ugly library.-- -- David Fox <dsf@seereason.com> Wed, 14 May 2008 12:30:40 -0700--haskell-debian (2.27) unstable; urgency=low-- * Changes for switch to lazy bytestrings in haskell-unixutils.-- -- David Fox <dsf@seereason.com> Tue, 06 May 2008 05:52:51 -0700--haskell-debian (2.26) unstable; urgency=low-- * Improve error report from "Missing control file or changelog"-- -- David Fox <dsf@seereason.com> Mon, 05 May 2008 05:59:27 -0700--haskell-debian (2.25) unstable; urgency=low-- * Packaging changes for haskell-devscripts 0.6.10.-- -- David Fox <dsf@seereason.com> Sat, 29 Mar 2008 10:25:54 -0700--haskell-debian (2.24) unstable; urgency=low-- * New version of dupload reads both /etc/dupload.conf and ~/.dupload.conf, so- we have to explicitly unset $preupload in ~/.dupload.conf.-- -- David Fox <dsf@seereason.com> Tue, 25 Mar 2008 05:49:08 -0700--haskell-debian (2.23) unstable; urgency=low-- * Fix a divide by zero error in Debian.Shell. This should also improve- the behavior of the code that outputs one dot per 128 characters of- shell command output.-- -- David Fox <dsf@seereason.com> Wed, 12 Mar 2008 16:55:59 +0000--haskell-debian (2.22) unstable; urgency=low-- * Add a chars/dot argument to Shell.dotOutput- * Moved some functions from Shell to haskell-unixutils- * Moved TIO module to haskell-extra-- -- David Fox <dsf@seereason.com> Sun, 02 Mar 2008 10:14:13 -0800--haskell-debian (2.21) unstable; urgency=low-- * Change some writeFile calls to avoid lazyness in evaluating the- second argument, which appears to lead to locked file errors.-- -- David Fox <dsf@seereason.com> Sun, 24 Feb 2008 11:06:53 -0800--haskell-debian (2.20) unstable; urgency=low-- * Message Improvements- * Discard duplicate dependency relations- * Fix rfc822DateFormat-- -- Jeremy Shaw <jeremy@n-heptane.com> Wed, 20 Feb 2008 13:34:34 -0800--haskell-debian (2.19) unstable; urgency=low-- * Added more functions for working with index files-- -- Jeremy Shaw <jeremy@n-heptane.com> Tue, 19 Feb 2008 16:07:46 -0800--haskell-debian (2.18) unstable; urgency=low-- * Hack: Debian.Local.Insert.addPackagesToIndexes work-around for optimizer bug- * Debian.Package: use controlFromIndex instead of calling zcat-- -- Jeremy Shaw <jeremy@n-heptane.com> Mon, 11 Feb 2008 23:08:30 -0800--haskell-debian (2.17) unstable; urgency=low-- * TIO module fixes and cleanups.-- -- David Fox <dsf@seereason.com> Thu, 07 Feb 2008 05:45:00 -0800--haskell-debian (2.16) unstable; urgency=low-- * Add setRepoMap to install cached repository info- * Print more info about what happened when a repository appears not to exist.-- -- David Fox <ddssff@gmail.com> Wed, 06 Feb 2008 16:00:45 -0800--haskell-debian (2.15) unstable; urgency=low-- * Fix bug in Debian.VersionPolicy- * Split a simple TIO monad out of the AptIO monad.- * Simplify Repository type, eliminate parameterized Release etc.- * Improve type safety of the SourcesList related types-- -- David Fox <ddssff@gmail.com> Wed, 06 Feb 2008 05:38:12 -0800--haskell-debian (2.14) unstable; urgency=low-- * Rewrite of Debian.VersionPolicy.- * Run unit tests during build-- -- David Fox <ddssff@gmail.com> Mon, 28 Jan 2008 13:07:00 -0800--haskell-debian (2.13) unstable; urgency=low-- * Improvements in code currently used to compute the build dependencies.- This allows builds of packages which previously caused an combinatoric- explosion in memory and time use. The specific modifications are to- avoid making a huge list of all the solution candidates that failed,- and to put the relations into a normal form which only involves equals- dependencies on packages that are actually available for installation.- Finally, a bug in handling of architecture specific dependencies was- fixed which might have been causing the extremely long and fruitless- searches for some packages' build dependencies.-- -- David Fox <ddssff@gmail.com> Sat, 19 Jan 2008 19:28:32 +0000--haskell-debian (2.12) unstable; urgency=low-- * Add Debian.Apt.Dependecies and Debian.Apt.Package to debian.cabal-- -- Jeremy Shaw <jeremy.shaw@linspireinc.com> Fri, 18 Jan 2008 17:13:24 -0800--haskell-debian (2.11) unstable; urgency=low-- * Added trump detector- * Added code to find parents and siblings of a binary package from the- Packages/Sources files- * Packaging updates-- -- Jeremy Shaw <jeremy.shaw@linspireinc.com> Fri, 14 Dec 2007 13:55:20 -0800--haskell-debian (2.10) unstable; urgency=low-- * Added new interface, Apt.Debian.Methods.fetch which allows the UI- portion of fetching (status, authentication), to be controlled by- providing a set of callback functions.-- -- Jeremy Shaw <jeremy.shaw@linspireinc.com> Tue, 20 Nov 2007 14:07:43 -0800--haskell-debian (2.9) unstable; urgency=low-- * Add caching of loaded package indexes based on the path and the- file status of the cached index file. Also splits Debian.Types- into several modules.-- -- David Fox <dsf@seereason.org> Fri, 9 Nov 2007 11:05:11 -0800--haskell-debian (2.8) unstable; urgency=low-- * Last version had bogus dependencies due to an unknown build error.- Make loading of package indexes less lazy in an attempt to reduce- memory usage.-- -- David Fox <dsf@seereason.org> Wed, 7 Nov 2007 10:54:27 -0800--haskell-debian (2.7) unstable; urgency=low-- * Make loading of package indexes lazy.-- -- David Fox <dsf@seereason.org> Mon, 22 Oct 2007 11:11:34 -0700--haskell-debian (2.6) unstable; urgency=low-- * Pass --immediate-configure-false to build-env so we can create- environments for gutsy, lenny, and sid.-- -- David Fox <dsf@seereason.org> Sat, 20 Oct 2007 16:17:59 -0700--haskell-debian (2.5) unstable; urgency=low-- * Reduce amount of apt-get updating that occurs.-- -- David Fox <ddssff@gmail.com> Sat, 20 Oct 2007 13:50:25 +0000--haskell-debian (2.4) unstable; urgency=low-- * Fix parsing of version tags in VersionPolicy. It was always failing- and therefore not understanding versions we had generated.-- -- David Fox <ddssff@gmail.com> Sat, 13 Oct 2007 04:44:39 -0700--haskell-debian (2.3) unstable; urgency=low-- * The EnvPath and EnvRoot types had show methods that were not- invertable by read. Now they use deriving Show, and use rootPath- and the new outsidePath to convert EnvRoot and EnvPath to the- FilePath type. This is a big looking change, but safe.- * Replace code that looked at the "Package" and "Version" fields- of a parsed control file with calls to packageName and- packageVersion, which just returns values already computed and- saved in the Package object.- * Use EnvPath instead of FilePath in places where it makes sense, such- as the copyDebianBuildTree and other places in Debian.SourceTree.- This change propagated down in various places, and the cutoff may be- a little out of whack in some places, but it is all typesafe (and- therefore wonderful?)-- -- David Fox <ddssff@gmail.com> Thu, 11 Oct 2007 15:43:03 +0000--haskell-debian (2.2) unstable; urgency=low-- * Fix a bug in parsing of dependency relations when there is- whitespace after a right square brace.-- -- David Fox <ddssff@gmail.com> Tue, 9 Oct 2007 21:00:24 +0000--haskell-debian (2.1) unstable; urgency=low-- * Fix show method of SliceList, the elements need to be- terminated by newlines.-- -- David Fox <ddssff@gmail.com> Fri, 5 Oct 2007 00:11:33 -0700--haskell-debian (2.0) unstable; urgency=low-- * Change Apt. to Debian.- * Added Debian.Apt.Methods- * Added Debian.Deb- * Added Debian.Time-- -- Jeremy Shaw <jeremy.shaw@linspire.com> Wed, 19 Sep 2007 15:14:10 -0700--haskell-apt (1.0) unstable; urgency=low-- * Initial Debian package.-- -- David Fox <ddssff@gmail.com> Tue, 18 Sep 2007 09:33:24 -0700
− debian/compat
@@ -1,1 +0,0 @@-5
− debian/control
@@ -1,110 +0,0 @@-Source: haskell-debian-Priority: optional-Section: misc-Maintainer: David Fox <dsf@seereason.com>-Build-Depends: debhelper (>= 5.0),- haskell-cdbs, haskell-devscripts (>= 0.6.15),- ghc6 (>= 6.10),- ghc6-doc,- haddock (>= 2.1.0),- ghc6-prof,- libghc6-unixutils-prof (>= 1.18),- libghc6-unixutils-doc (>= 1.18),- libghc6-time-prof,- libghc6-time-doc,- libghc6-extra-prof (>= 1.26),- libghc6-extra-doc (>= 1.26),- libghc6-bzlib-prof,- libghc6-bzlib-doc,- libghc6-zlib-prof,- libghc6-zlib-doc,- libghc6-haxml-dev,- haxml-doc-Standards-Version: 3.7.2.2-Homepage: http://seereason.org/--Package: libghc6-debian-dev-Architecture: any-Section: libdevel-Depends: ${haskell:Depends}-Description: Modules for working with the Debian package system- This library includes modules covering almost every aspect of the Debian- packaging system, including low level data types such as version numbers- and dependency relations, on up to the types necessary for computing and- installing build dependencies, building source and binary packages,- and inserting them into a repository.- .- Author: David Fox- .- This package contains the normal library files.--Package: libghc6-debian-prof-Architecture: any-Section: libdevel-Depends: ${haskell:Depends},- libghc6-debian-dev,- libghc6-extra-prof,- libghc6-haxml-dev,- libghc6-unixutils-prof,- libghc6-bzlib-prof,- libghc6-zlib-prof-Description: Modules for working with the Debian package system- This library includes modules covering almost every aspect of the Debian- packaging system, including low level data types such as version numbers- and dependency relations, on up to the types necessary for computing and- installing build dependencies, building source and binary packages,- and inserting them into a repository.- .- Author: David Fox- .- This package contains the profiling library files.--Package: libghc6-debian-doc-Architecture: any-Section: libdevel-Depends: ${haskell:Depends},- libghc6-unixutils-doc,- libghc6-extra-doc,- libghc6-bzlib-doc,- libghc6-zlib-doc,- haxml-doc-Description: Modules for working with the Debian package system- This library includes modules covering almost every aspect of the Debian- packaging system, including low level data types such as version numbers- and dependency relations, on up to the types necessary for computing and- installing build dependencies, building source and binary packages,- and inserting them into a repository.- .- Author: David Fox- .- This package contains the documentation files.--Package: fakechanges-Architecture: any-Section: devel-Depends: ${shlibs:Depends}, ${haskell:Depends}-Description: create a fake .changes file- Sometimes you have the .debs, .dsc, .tar.gz, .diff.gz, etc from a- package build, but not the .changes file. This package lets you- create a fake .changes file in case you need one.--Package: debian-report-Architecture: any-Section: devel-Depends: ${shlibs:Depends}, ${haskell:Depends}-Description: create reports about Debian repositories- Analyze Debian repositories and generate reports about their contents- and relations. For example, a list of all packages in a distribution- that are trumped by another distribution.--Package: cabal-debian-Architecture: any-Section: devel-Depends: ${shlibs:Depends}, ${haskell:Depends}, haskell-utils, haskell-cdbs, haskell-devscripts (>= 0.6.15), libghc6-cabal-prof-Description: Tool for creating debianizations of Haskell packages based on the .cabal file.--Package: apt-get-build-depends-Architecture: any-Section: devel-Depends: ${shlibs:Depends}, ${haskell:Depends}, haskell-utils, haskell-cdbs, haskell-devscripts (>= 0.6.15), libghc6-cabal-prof-Description: Tool which will parse the Build-Depends{-Indep} lines from debian/control and apt-get install the required packages
− debian/rules
@@ -1,2 +0,0 @@-#!/usr/bin/make -f-include /usr/share/cdbs/1/rules/hlibrary.mk
utils/Report.hs view
@@ -1,18 +1,22 @@-{-# OPTIONS_GHC -fglasgow-exts #-}+{-# LANGUAGE ForeignFunctionInterface #-} module Main where import Control.Monad import Data.List+import Data.Maybe (fromMaybe) import Debian.Apt.Methods import Debian.Report import Debian.Sources-import Extra.Exit-import System.Environment+import Foreign.C.Types+import System.Environment (getArgs, getProgName)+import System.Exit (exitFailure) import Text.XML.HaXml import Text.XML.HaXml.Pretty (document) import Text.PrettyPrint.HughesPJ import System.IO+import System.Posix.Env + -- * main main :: IO ()@@ -57,3 +61,36 @@ case args of [dista, distb] -> return (dista, distb) _ -> exitWithHelp helpText+ where+ -- |exitFailure with nicely formatted help text on stderr+ exitWithHelp :: (String -> Doc) -- ^ generate help text, the argument is the result of getProgName+ -> IO a -- ^ no value is returned, this function always calls exitFailure+ exitWithHelp helpText =+ do progName <- getProgName+ hPutStrLn stderr =<< renderWidth (helpText progName)+ exitFailure+ -- |render a Doc using the current terminal width+ renderWidth :: Doc -> IO String + renderWidth doc =+ do columns <- return . fromMaybe 80 =<< getWidth+ return $ renderStyle (Style PageMode columns 1.0) doc++foreign import ccall "gwinsz.h c_get_window_size" c_get_window_size :: IO CLong++-- get the number of rows and columns using ioctl (0, TIOCGWINSZ, &w)+-- @see also: getWidth+getWinSize :: IO (Int,Int)+getWinSize = do (a,b) <- (`divMod` 65536) `fmap` c_get_window_size+ return (fromIntegral b, fromIntegral a)++-- get the number of colums.+-- First tries getWinSize, if that returns 0, then try the COLUMNS+-- shell variable.+getWidth :: IO (Maybe Int)+getWidth =+ do (cols, _) <- getWinSize+ case cols of+ 0 -> return . fmap read =<< getEnv "COLUMNS"+ _ -> return (Just cols)++