Good afternoon everyone,I'm fond of Haskell and I have used Debian since early childhood and I wanted to play about with the packaging tools, so I took a look at your darcs repo and I tried to make a package for yi 0.6.7.0 (the current packaging is for yi 0.6.6.0). I changed the debian/control according to the dependencies indicated by yi.cabal and found out that it used a newer version of dyre (0.8.11 whereas darcs.debian.org/pkg-haskell contained only 0.8.9) so I updated the packaging for dyre too. I also found out that yi-contrib was not packaged at all so I worked on it too.
Everything was validated by lintian and pbuilder. I would like you to take a look at the attached tarball and outputs of darcs diff and also to answer two questions : - yi-contrib.cabal says that yi-contrib 0.6.7.0 depends on yi 0.6.7.0 exactly. Every other dependency I've seen requires a version higher or lower than a certain one. In order that dpkg-checkbuilddeps not fail, I had to put "yi-contrib (= 0.6.7.0-1.1)" as a build dependency which seems too specific. Is there another solution ? - When using pbuilder, if a package depends on another one that isn't in the aptitude sid repo because I built it, what should I do ? I used pbuilder --execute --save-after-exec on a script that installed all the dependencies of the package with aptitude (I had to find them by hand with dpkg -f) and then installed the .deb file located in /var/cache/pbuilder/result (bind-mounted). Is there a better way, at least an aptitude or apt-get command installing a .deb file with its dependencies ?
Thank you, I hope that my work will be useful, Yours faithfully, Louis
Mon Jul 1 16:03:42 CEST 2013 Louis Bettens <louis@bettens.info> * 0.8.11-1.1 diff -rN -u old-debian/changelog new-debian/changelog --- old-debian/changelog 2013-07-01 16:41:14.000000000 +0200 +++ new-debian/changelog 2013-07-01 16:41:14.000000000 +0200 @@ -1,3 +1,10 @@ +haskell-dyre (0.8.11-1.1) UNRELEASED; urgency=low + + * Non-maintainer upload + * New upstream version, required by yi-0.6.7.0 + + -- Louis Bettens <louis@bettens.info> Sat, 29 Jun 2013 17:29:45 +0200 + haskell-dyre (0.8.9-2) unstable; urgency=low * Enable compat level 9 diff -rN -u old-debian/control new-debian/control --- old-debian/control 2013-07-01 16:41:14.000000000 +0200 +++ new-debian/control 2013-07-01 16:41:14.000000000 +0200 @@ -3,18 +3,22 @@ Priority: extra Maintainer: Debian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org> Uploaders: Clint Adams <clint@debian.org> + Louis Bettens <louis@bettens.info> Build-Depends: debhelper (>= 9) , cdbs , haskell-devscripts (>= 0.8.15) , ghc , ghc-prof - , libghc-ghc-paths-dev + , libghc-executable-path-dev + , libghc-executable-path-prof + , libghc-ghc-paths-dev , libghc-ghc-paths-prof , libghc-io-storage-dev , libghc-io-storage-prof , libghc-xdg-basedir-dev , libghc-xdg-basedir-prof Build-Depends-Indep: ghc-doc + , libghc-executable-path-doc , libghc-ghc-paths-doc , libghc-io-storage-doc , libghc-xdg-basedir-doc
Attachment:
yi-contrib.tar.gz
Description: application/gzip
Mon Jul 1 17:14:14 CEST 2013 Louis Bettens <louis@bettens.info> * 0.6.7.0-1.1 diff -rN -u old-debian/changelog new-debian/changelog --- old-debian/changelog 2013-07-01 17:14:54.000000000 +0200 +++ new-debian/changelog 2013-07-01 17:14:54.000000000 +0200 @@ -1,3 +1,15 @@ +yi (0.6.7.0-1.1) UNRELEASED; urgency=low + + * Non-maintainer upload + * New upstream version + * Upstream has made patches workaround-unicode and use-pointedlist-0.4 + obsolete, removed them. + * libghc-old-time-{dev,prof} are virtual packages provided by ghc. Since ghc + is already a build-dependency, I removed them from the list so that + dpkg-checkbuilddeps doesn't fail. + + -- Louis Bettens <louis@bettens.info> Sat, 29 Jun 2013 18:15:13 +0200 + yi (0.6.6.0-2) UNRELEASED; urgency=low * Enable compat level 9 diff -rN -u old-debian/control new-debian/control --- old-debian/control 2013-07-01 17:14:54.000000000 +0200 +++ new-debian/control 2013-07-01 17:14:54.000000000 +0200 @@ -9,9 +9,9 @@ , ghc , ghc-prof , libghc-diff-dev (>= 0.1) - , libghc-diff-dev (<< 0.2) + , libghc-diff-dev (<< 0.3) , libghc-diff-prof (>= 0.1) - , libghc-diff-prof (<< 0.2) + , libghc-diff-prof (<< 0.3) , libghc-quickcheck2-dev (>= 2.1.0.2) , libghc-quickcheck2-prof (>= 2.1.0.2) , libghc-cautious-file-dev (>= 1.0.1) @@ -38,24 +38,26 @@ , libghc-derive-prof (<< 2.7) , libghc-dlist-dev (>= 0.4.1) , libghc-dlist-prof (>= 0.4.1) - , libghc-dyre-dev (>= 0.7) - , libghc-dyre-prof (>= 0.7) + , libghc-dyre-dev (>= 0.8.11) + , libghc-dyre-prof (>= 0.8.11) , libghc-fingertree-dev (<< 0.1) , libghc-fingertree-prof (<< 0.1) , libghc-ghc-paths-dev (>= 0.1) , libghc-ghc-paths-dev (<< 0.2) , libghc-ghc-paths-prof (>= 0.1) , libghc-ghc-paths-prof (<< 0.2) - , libghc-hashable-dev (<< 1.2) - , libghc-hashable-prof (<< 1.2) + , libghc-hashable-dev (>= 1.1) + , libghc-hashable-dev (<< 1.3) + , libghc-hashable-prof (>= 1.1) + , libghc-hashable-prof (<< 1.3) , libghc-hint-dev (>> 0.3.1) , libghc-hint-prof (>> 0.3.1) , libghc-mtl-dev (>= 0.1.0.1) , libghc-mtl-prof (>= 0.1.0.1) , libghc-pointedlist-dev (>= 0.4) - , libghc-pointedlist-dev (<< 0.5) + , libghc-pointedlist-dev (<< 0.6) , libghc-pointedlist-prof (>= 0.4) - , libghc-pointedlist-prof (<< 0.5) + , libghc-pointedlist-prof (<< 0.6) , libghc-puremd5-dev (>= 0.2.3) , libghc-puremd5-prof (>= 0.2.3) , libghc-random-dev @@ -73,15 +75,15 @@ , libghc-rosezipper-prof (>= 0.1) , libghc-rosezipper-prof (<< 0.3) , libghc-split-dev (>= 0.1) - , libghc-split-dev (<< 0.2) + , libghc-split-dev (<< 0.3) , libghc-split-prof (>= 0.1) - , libghc-split-prof (<< 0.2) + , libghc-split-prof (<< 0.3) , libghc-uniplate-dev , libghc-uniplate-prof , libghc-unix-compat-dev (>= 0.1) - , libghc-unix-compat-dev (<< 0.4) + , libghc-unix-compat-dev (<< 0.5) , libghc-unix-compat-prof (>= 0.1) - , libghc-unix-compat-prof (<< 0.4) + , libghc-unix-compat-prof (<< 0.5) , libghc-unordered-containers-dev (>= 0.1.3) , libghc-unordered-containers-dev (<< 0.3) , libghc-unordered-containers-prof (>= 0.1.3) @@ -92,6 +94,10 @@ , libghc-vty-dev (<< 5) , libghc-vty-prof (>= 4.7.0.0) , libghc-vty-prof (<< 5) + , libghc-xdg-basedir-dev (>= 0.2.1) + , libghc-xdg-basedir-dev (<< 0.3) + , libghc-xdg-basedir-prof (>= 0.2.1) + , libghc-xdg-basedir-prof (<< 0.3) , alex , libghc-gtk-dev , libghc-gtk-prof @@ -99,7 +105,7 @@ , libghc-vte-prof Build-Depends-Indep: ghc-doc , libghc-diff-doc (>= 0.1) - , libghc-diff-doc (<< 0.2) + , libghc-diff-doc (<< 0.3) , libghc-quickcheck2-doc (>= 2.1.0.2) , libghc-cautious-file-doc (>= 1.0.1) , libghc-concrete-typerep-doc (>= 0.1) @@ -113,15 +119,16 @@ , libghc-derive-doc (>= 2.4) , libghc-derive-doc (<< 2.7) , libghc-dlist-doc (>= 0.4.1) - , libghc-dyre-doc (>= 0.7) + , libghc-dyre-doc (>= 0.8.11) , libghc-fingertree-doc (<< 0.1) , libghc-ghc-paths-doc (>= 0.1) , libghc-ghc-paths-doc (<< 0.2) - , libghc-hashable-doc (<< 1.2) + , libghc-hashable-doc (>= 1.1) + , libghc-hashable-doc (<< 1.3) , libghc-hint-doc (>> 0.3.1) , libghc-mtl-doc (>= 0.1.0.1) , libghc-pointedlist-doc (>= 0.4) - , libghc-pointedlist-doc (<< 0.5) + , libghc-pointedlist-doc (<< 0.6) , libghc-puremd5-doc (>= 0.2.3) , libghc-random-doc , libghc-regex-base-doc (>= 0.93) @@ -131,10 +138,10 @@ , libghc-rosezipper-doc (>= 0.1) , libghc-rosezipper-doc (<< 0.3) , libghc-split-doc (>= 0.1) - , libghc-split-doc (<< 0.2) + , libghc-split-doc (<< 0.3) , libghc-uniplate-doc , libghc-unix-compat-doc (>= 0.1) - , libghc-unix-compat-doc (<< 0.4) + , libghc-unix-compat-doc (<< 0.5) , libghc-unordered-containers-doc (>= 0.1.3) , libghc-unordered-containers-doc (<< 0.3) , libghc-utf8-string-doc (>= 0.3.1) diff -rN -u old-debian/patches/series new-debian/patches/series --- old-debian/patches/series 2013-07-01 17:14:54.000000000 +0200 +++ new-debian/patches/series 2013-07-01 17:14:54.000000000 +0200 @@ -1,4 +1,2 @@ xpm-icons.diff -workaround-unicode.diff man-page.diff -use-pointedlist-0.4.diff diff -rN -u old-debian/patches/use-pointedlist-0.4.diff new-debian/patches/use-pointedlist-0.4.diff --- old-debian/patches/use-pointedlist-0.4.diff 2013-07-01 17:14:54.000000000 +0200 +++ new-debian/patches/use-pointedlist-0.4.diff 1970-01-01 01:00:00.000000000 +0100 @@ -1,207 +0,0 @@ ---- a/src/library/Yi/Editor.hs -+++ b/src/library/Yi/Editor.hs -@@ -32,7 +32,7 @@ - import Yi.Window - import qualified Data.Rope as R - import qualified Data.DelayList as DelayList --import qualified Data.List.PointedList as PL (atEnd) -+import qualified Data.List.PointedList as PL (atEnd, moveTo) - import qualified Data.List.PointedList.Circular as PL - import qualified Data.Map as M - import {-# source #-} Yi.Keymap (extractTopKeymap) -@@ -142,7 +142,7 @@ - tabsA = tabs_A . fixCurrentBufferA_ - - currentTabA :: Accessor Editor Tab --currentTabA = PL.focusA . tabsA -+currentTabA = focusA . tabsA - - dynA :: YiVariable a => Accessor Editor a - dynA = dynamicValueA . dynamicA -@@ -314,7 +314,7 @@ - withGivenBufferAndWindow0 w (bufkey w) f - - currentWindowA :: Accessor Editor Window --currentWindowA = PL.focusA . windowsA -+currentWindowA = focusA . windowsA - - -- | Return the current buffer - currentBuffer :: Editor -> BufferRef -@@ -460,7 +460,7 @@ - -- | Attach the specified buffer to the current window - switchToBufferE :: BufferRef -> EditorM () - switchToBufferE bk = do -- modA (PL.focusA . windowsA) (\w -> -+ modA (focusA . windowsA) (\w -> - w { bufkey = bk, - bufAccessList = forceFold1 $ ((bufkey w):) . filter (bk/=) $ bufAccessList w }) - -@@ -506,7 +506,7 @@ - - -- | Swaps the focused window with the first window. Useful for layouts such as 'HPairOneStack', for which the first window is the largest. - swapWinWithFirstE :: EditorM () --swapWinWithFirstE = modA windowsA (swapFocus (fromJust . PL.move 0)) -+swapWinWithFirstE = modA windowsA (swapFocus (fromJust . PL.moveTo 0)) - - -- | Moves the focused window to the first window, and moves all other windows down the stack. - pushWinToFirstE :: EditorM () -@@ -514,7 +514,7 @@ - where - pushToFirst ws = case PL.delete ws of - Nothing -> ws -- Just ws' -> PL.insertLeft (ws ^. PL.focusA) (fromJust $ PL.move 0 ws') -+ Just ws' -> PL.insertLeft (ws ^. focusA) (fromJust $ PL.moveTo 0 ws') - - -- | Swap focused window with the next one - moveWinNextE :: EditorM () -@@ -530,7 +530,7 @@ - fixCurrentBufferA_ :: Accessor Editor Editor - fixCurrentBufferA_ = fromSetGet (\new _old -> let - ws = windows new -- b = findBufferWith (bufkey $ PL.focus ws) new -+ b = findBufferWith (bufkey $ PL._focus ws) new - newBufferStack = nub (bkey b : bufferStack new) - -- make sure we do not hold to old versions by seqing the length. - in length newBufferStack `seq` new { bufferStack = newBufferStack } ) id -@@ -541,7 +541,7 @@ - fixCurrentWindow :: EditorM () - fixCurrentWindow = do - b <- gets currentBuffer -- modA (PL.focusA . windowsA) (\w -> w {bufkey = b}) -+ modA (focusA . windowsA) (\w -> w {bufkey = b}) - - withWindowE :: Window -> BufferM a -> EditorM a - withWindowE w = withGivenBufferAndWindow0 w (bufkey w) -@@ -577,8 +577,8 @@ - case foldl searchWindowSet (False, 0, 0) ts of - (False, _, _) -> fail $ "No window with key " ++ show wkey ++ "found. (focusWindowE)" - (True, tabIndex, winIndex) -> do -- putA tabsA (fromJust $ PL.move tabIndex ts) -- modA windowsA (\ws -> fromJust $ PL.move winIndex ws) -+ putA tabsA (fromJust $ PL.moveTo tabIndex ts) -+ modA windowsA (\ws -> fromJust $ PL.moveTo winIndex ws) - - -- | Split the current window, opening a second window onto current buffer. - -- TODO: unfold newWindowE here? -@@ -604,7 +604,7 @@ - go lms lm = - case findPL (layoutManagerSameType lm) lms of - Nothing -> head lms -- Just lmsPL -> f lmsPL ^. PL.focusA -+ Just lmsPL -> f lmsPL ^. focusA - - -- | Next variant of the current layout manager, as given by 'nextVariant' - layoutManagerNextVariantE :: EditorM () -@@ -645,8 +645,8 @@ - -- | Moves the focused tab to the given index, or to the end if the index is not specified. - moveTab :: Maybe Int -> EditorM () - moveTab Nothing = do count <- getsA tabsA PL.length -- modA tabsA $ fromJust . PL.move (pred count) --moveTab (Just n) = do newTabs <- getsA tabsA (PL.move n) -+ modA tabsA $ fromJust . PL.moveTo (pred count) -+moveTab (Just n) = do newTabs <- getsA tabsA (PL.moveTo n) - when (isNothing newTabs) failure - putA tabsA $ fromJust newTabs - where failure = fail $ "moveTab " ++ show n ++ ": no such tab" ---- a/src/library/Yi/Prelude.hs -+++ b/src/library/Yi/Prelude.hs -@@ -37,6 +37,7 @@ - dummyGet, - every, - findPL, -+focusA, - fromIntegral, - fst, - fst3, -@@ -232,9 +233,14 @@ - go ls (f:rs) | p f = Just (PL.PointedList ls f rs) - | otherwise = go (f:ls) rs - -+focusA :: Accessor (PL.PointedList a) a -+focusA = accessor getter setter where -+ getter (PL.PointedList _ x _) = x -+ setter y (PL.PointedList x _ z) = PL.PointedList x y z -+ - -- | Given a function which moves the focus from index A to index B, return a function which swaps the elements at indexes A and B and then moves the focus. See Yi.Editor.swapWinWithFirstE for an example. - swapFocus :: (PL.PointedList a -> PL.PointedList a) -> (PL.PointedList a -> PL.PointedList a) --swapFocus moveFocus xs = PL.focusA ^= (xs ^. PL.focusA) $ moveFocus $ PL.focusA ^= (moveFocus xs ^. PL.focusA) $ xs -+swapFocus moveFocus xs = focusA ^= (xs ^. focusA) $ moveFocus $ focusA ^= (moveFocus xs ^. focusA) $ xs - ---------------------- - -- Acessor stuff - ---- a/src/library/Yi/Tab.hs -+++ b/src/library/Yi/Tab.hs -@@ -40,7 +40,7 @@ - deriving Typeable - - tabFocus :: Tab -> Window --tabFocus = PL.focus . tabWindows -+tabFocus = PL._focus . tabWindows - - -- | Returns a list of all mini windows associated with the given tab - tabMiniWindows :: Tab -> [Window] ---- a/src/library/Yi/UI/Pango.hs -+++ b/src/library/Yi/UI/Pango.hs -@@ -13,6 +13,7 @@ - import Data.Prototype - import Data.IORef - import Data.List (drop, intercalate, zip) -+import qualified Data.List.PointedList as PL (moveTo) - import qualified Data.List.PointedList.Circular as PL - import Data.Maybe - import qualified Data.Map as M -@@ -198,7 +199,7 @@ - let ui = UI win tabs status tc actionCh (configUI cfg) fontRef im - - -- Keep the current tab focus up to date -- let move n pl = maybe pl id (PL.move n pl) -+ let move n pl = maybe pl id (PL.moveTo n pl) - runAction = uiActionCh ui . makeAction - -- why does this cause a hang without postGUIAsync? - simpleNotebookOnSwitchPage (uiNotebook ui) $ \n -> postGUIAsync $ ---- a/src/library/Yi/UI/Pango/Layouts.hs -+++ b/src/library/Yi/UI/Pango/Layouts.hs -@@ -369,7 +369,7 @@ - forM_ tsList $ \(w,s) -> update nb (notebookChildTabLabel w) s - - -- now set the focus -- p <- notebookPageNum nb (fst $ PL.focus ts) -+ p <- notebookPageNum nb (fst $ PL._focus ts) - maybe (return ()) (update nb notebookPage) p - - -- write the new status ---- a/src/library/Yi/UI/TabBar.hs -+++ b/src/library/Yi/UI/TabBar.hs -@@ -22,7 +22,7 @@ - tabBarDescr :: Editor -> TabBarDescr - tabBarDescr editor = - let prefix = commonNamePrefix editor -- hintForTab tab = tabAbbrevTitle $ shortIdentString prefix $ findBufferWith (bufkey $ PL.focus (tab ^. tabWindowsA)) editor -+ hintForTab tab = tabAbbrevTitle $ shortIdentString prefix $ findBufferWith (bufkey $ PL._focus (tab ^. tabWindowsA)) editor - tabDescr (tab,True) = TabDescr (hintForTab tab) True - tabDescr (tab,False) = TabDescr (hintForTab tab) False - in fmap tabDescr (PL.withFocus $ editor ^. tabsA) ---- a/src/library/Yi/UI/Vty.hs -+++ b/src/library/Yi/UI/Vty.hs -@@ -216,8 +216,8 @@ - <-> - vert_cat (fmap formatCmdLine niceCmd) - ) -- ) { pic_cursor = case cursor (PL.focus renders) of -- Just (y,x) -> Cursor (toEnum x) (toEnum $ y + PL.focus startXs) -+ ) { pic_cursor = case cursor (PL._focus renders) of -+ Just (y,x) -> Cursor (toEnum x) (toEnum $ y + PL._focus startXs) - -- Add the position of the window to the position of the cursor - Nothing -> NoCursor - -- This case can occur if the user resizes the window. ---- a/yi.cabal -+++ b/yi.cabal -@@ -225,7 +225,7 @@ - hashable < 1.2, - hint > 0.3.1, - mtl >= 0.1.0.1, -- pointedlist >= 0.3.5 && <0.4, -+ pointedlist >= 0.4 && < 0.5, - pureMD5 >= 0.2.3, - random, - regex-base ==0.93.*, diff -rN -u old-debian/patches/workaround-unicode.diff new-debian/patches/workaround-unicode.diff --- old-debian/patches/workaround-unicode.diff 2013-07-01 17:14:54.000000000 +0200 +++ new-debian/patches/workaround-unicode.diff 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ ---- a/src/library/Yi/Lexer/common.hsinc -+++ b/src/library/Yi/Lexer/common.hsinc -@@ -11,9 +11,16 @@ - lookedOfs' = max lookedOfs (posnOfs pos +~ Size lookahead) in - case scn of - AlexEOF -> Nothing -- AlexError inp' -> -- let errorHint = take 10 $ alexCollectChar inp' -- in error $ "lexical error around " ++ errorHint -+ -- TODO: Get someone with sufficient understanding of Alex to look at this. -+ -- -+ -- Currently we get here when buffer contains unicode char like umlauts or cyrillic. -+ -- Invoking error here made editor crash. So as a workaround we return Nothing. -+ -- This means that nothing after unicode char is highlighted, -+ -- but at least the editor remains working. -+ AlexError inp' -> Nothing -+ -- let msg = "lexical error around " ++ take 10 (alexCollectChar inp') -+ -- in error msg -+ - AlexSkip inp' len -> - let chunk = take (fromIntegral len) str - in alexScanToken (AlexState state lookedOfs' (moveStr pos chunk), inp') diff -rN -u old-debian/rules new-debian/rules --- old-debian/rules 2013-07-01 17:14:54.000000000 +0200 +++ new-debian/rules 2013-07-01 17:14:54.000000000 +0200 @@ -9,8 +9,8 @@ binary-fixup/yi:: install -m 755 -s -D dist-ghc/build/yi/yi debian/yi/usr/bin/yi || true install -m 755 -s -D dist-ghc/build/parserTest/parserTest debian/yi/usr/bin/parserTest || true - install -m 644 -D art/*.png debian/yi/usr/share/yi-0.6.6.0/art || true - install -m 644 -D art/*.pdf debian/yi/usr/share/yi-0.6.6.0/art || true - install -m 644 -D example-configs/*.hs debian/yi/usr/share/yi-0.6.6.0/example-configs || true - install -m 644 -D art/*.xpm debian/yi/usr/share/yi-0.6.6.0/art || true + install -m 644 -D art/*.png debian/yi/usr/share/yi-0.6.7.0/art || true + install -m 644 -D art/*.pdf debian/yi/usr/share/yi-0.6.7.0/art || true + install -m 644 -D example-configs/*.hs debian/yi/usr/share/yi-0.6.7.0/example-configs || true + install -m 644 -D art/*.xpm debian/yi/usr/share/yi-0.6.7.0/art || true install -m 644 -D debian/*.desktop debian/yi/usr/share/applications || true diff -rN -u old-debian/yi.dirs new-debian/yi.dirs --- old-debian/yi.dirs 2013-07-01 17:14:54.000000000 +0200 +++ new-debian/yi.dirs 2013-07-01 17:14:54.000000000 +0200 @@ -1,5 +1,5 @@ usr/share/applications -usr/share/yi-0.6.6.0/art -usr/share/yi-0.6.6.0/example-configs +usr/share/yi-0.6.7.0/art +usr/share/yi-0.6.7.0/example-configs