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