From: Duncan C. <dun...@wo...> - 2007-11-08 21:31:47
|
Thu Nov 8 13:23:28 PST 2007 Duncan Coutts <du...@ha...> * Drop support for ghc < 6.4 and clean up There was quite a bit of configuritis needed to support ghc-6.0 and 6.2 hunk ./compat/gtk/Data/Tree.hs 1 ------------------------------------------------------------------------------ --- | --- Module : Data.Tree --- Copyright : (c) The University of Glasgow 2002 --- License : BSD-style (see the file libraries/base/LICENSE) --- [_$_] --- Maintainer : lib...@ha... --- Stability : experimental --- Portability : portable --- --- Multi-way trees (/aka/ rose trees) and forests. --- ------------------------------------------------------------------------------ - -module Data.Tree( - Tree(..), Forest, - -- * Two-dimensional drawing - drawTree, drawForest, - -- * Extraction - flatten, levels, - -- * Building trees - unfoldTree, unfoldForest, - unfoldTreeM, unfoldForestM, - ) where - -import Control.Monad - --- | Multi-way trees, also known as /rose trees/. -data Tree a = Node { - rootLabel :: a, -- ^ label value - subForest :: Forest a -- ^ zero or more child trees - } - deriving (Eq, Read, Show) - -type Forest a = [Tree a] - -instance Functor Tree where - fmap f (Node x ts) = Node (f x) (map (fmap f) ts) - - --- | Neat 2-dimensional drawing of a tree. -drawTree :: Tree String -> String -drawTree = unlines . draw - --- | Neat 2-dimensional drawing of a forest. -drawForest :: Forest String -> String -drawForest = unlines . map drawTree - -draw :: Tree String -> [String] -draw (Node x ts0) = x : drawSubTrees ts0 - where drawSubTrees [] = [] - drawSubTrees [t] = - "|" : shift "`- " " " (draw t) - drawSubTrees (t:ts) = - "|" : shift "+- " "| " (draw t) ++ drawSubTrees ts - - shift first other = zipWith (++) (first : repeat other) - --- | The elements of a tree in pre-order. -flatten :: Tree a -> [a] -flatten t = squish t [] - where squish (Node x ts) xs = x:Prelude.foldr squish xs ts - --- | Lists of nodes at each level of the tree. -levels :: Tree a -> [[a]] -levels t = map (map rootLabel) $ - takeWhile (not . null) $ - iterate (concatMap subForest) [t] - --- | Build a tree from a seed value -unfoldTree :: (b -> (a, [b])) -> b -> Tree a -unfoldTree f b = let (a, bs) = f b in Node a (unfoldForest f bs) - --- | Build a forest from a list of seed values -unfoldForest :: (b -> (a, [b])) -> [b] -> Forest a -unfoldForest f = map (unfoldTree f) - --- | Monadic tree builder, in depth-first order -unfoldTreeM :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a) -unfoldTreeM f b = do - (a, bs) <- f b - ts <- unfoldForestM f bs - return (Node a ts) - --- | Monadic forest builder, in depth-first order -unfoldForestM :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a) -unfoldForestM f = Prelude.mapM (unfoldTreeM f) rmfile ./compat/gtk/Data/Tree.hs rmdir ./compat/gtk/Data rmdir ./compat/gtk rmdir ./compat hunk ./Makefile.am 256 -libHSglib_a_CONFIG = glib/glib.$(PKGEXT) +libHSglib_a_CONFIG = glib/glib.package.conf hunk ./Makefile.am 387 -libHSgtk_a_CONFIG = gtk/gtk.$(PKGEXT) -libHSgtk_a_EXTERNALDEPS = base +libHSgtk_a_CONFIG = gtk/gtk.package.conf +libHSgtk_a_EXTERNALDEPS = base mtl-$(PKG_MTL_VERSION) hunk ./Makefile.am 392 -if HAVE_MTL_PACKAGE -libHSgtk_a_EXTERNALDEPS += mtl-$(PKG_MTL_VERSION) -endif hunk ./Makefile.am 402 -if !HAVE_DATA_TREE -libHSgtk_a_SOURCESDIRS += compat/gtk -endif - hunk ./Makefile.am 600 -if !HAVE_DATA_TREE -libHSgtk_a_SOURCES += compat/gtk/Data/Tree.hs -endif - hunk ./Makefile.am 763 -libHSglade_a_CONFIG = glade/glade.$(PKGEXT) +libHSglade_a_CONFIG = glade/glade.package.conf hunk ./Makefile.am 878 -libHSgconf_a_CONFIG = gconf/gconf.$(PKGEXT) +libHSgconf_a_CONFIG = gconf/gconf.package.conf hunk ./Makefile.am 1014 -libHSsourceview_a_CONFIG = sourceview/sourceview.$(PKGEXT) +libHSsourceview_a_CONFIG = sourceview/sourceview.package.conf hunk ./Makefile.am 1140 -libHSmozembed_a_CONFIG = mozembed/mozembed.$(PKGEXT) +libHSmozembed_a_CONFIG = mozembed/mozembed.package.conf hunk ./Makefile.am 1254 -libHScairo_a_CONFIG = cairo/cairo.$(PKGEXT) -libHScairo_a_EXTERNALDEPS = base -if HAVE_MTL_PACKAGE -libHScairo_a_EXTERNALDEPS += mtl-$(PKG_MTL_VERSION) -endif +libHScairo_a_CONFIG = cairo/cairo.package.conf +libHScairo_a_EXTERNALDEPS = base mtl-$(PKG_MTL_VERSION) hunk ./Makefile.am 1388 -libHSsvgcairo_a_CONFIG = svgcairo/svgcairo.$(PKGEXT) -libHSsvgcairo_a_EXTERNALDEPS = base -if HAVE_MTL_PACKAGE -libHSsvgcairo_a_EXTERNALDEPS += mtl-$(PKG_MTL_VERSION) -endif +libHSsvgcairo_a_CONFIG = svgcairo/svgcairo.package.conf +libHSsvgcairo_a_EXTERNALDEPS = base mtl-$(PKG_MTL_VERSION) hunk ./Makefile.am 1484 -libHSgtkglext_a_CONFIG = gtkglext/gtkglext.$(PKGEXT) +libHSgtkglext_a_CONFIG = gtkglext/gtkglext.package.conf hunk ./Makefile.am 1604 -libHSsoegtk_a_CONFIG = soegtk/soegtk.$(PKGEXT) +libHSsoegtk_a_CONFIG = soegtk/soegtk.package.conf hunk ./Makefile.am 1621 -if HAVE_MTL_PACKAGE hunk ./Makefile.am 1622 -endif hunk ./Makefile.am 1688 -libHSgnomevfs_a_CONFIG = gnomevfs/gnomevfs.$(PKGEXT) +libHSgnomevfs_a_CONFIG = gnomevfs/gnomevfs.package.conf hunk ./Makefile.am 1853 -libHSgstreamer_a_CONFIG = gstreamer/gstreamer.$(PKGEXT) +libHSgstreamer_a_CONFIG = gstreamer/gstreamer.package.conf hunk ./Makefile.am 1956 - gstreamer/Media/Streaming/GStreamer/Base/Types.hs + gstreamer/Media/Streaming/GStreamer/Base/Types.hs \ + gstreamer/Media/Streaming/GStreamer/Controller/Types.hs hunk ./Makefile.am 2153 -if USE_NEW_PKG_FORMAT - hunk ./Makefile.am 2163 -else - -package.conf.inplace: - echo "[]" > $@ - $(foreach pkg,$(pkglib_LIBRARIES), \ - $(SED) -e 's|$${pkglibdir}/imports|.|' \ - -e 's|"$${pkglibdir}/include"|.|' \ - -e 's|$${pkglibdir}|.|' \ - -e 's|$${modules}|$(call getModules,$(pkg))|' \ - $(call getVar,$(pkg),CONFIG) \ - | $(GHCPKG) --update-package --input=- --force --config-file=$@; ) - -endif - hunk ./Makefile.am 2337 - $(patsubst %.$(PKGEXT),%.cabal,$(call getVar,$(pkgname),CONFIG)) \ - > $(patsubst %.$(PKGEXT),%.cabal,$(call getVar,$(pkgname),CONFIG)).tmp; \ - mv $(patsubst %.$(PKGEXT),%.cabal,$(call getVar,$(pkgname),CONFIG)).tmp \ - $(patsubst %.$(PKGEXT),%.cabal,$(call getVar,$(pkgname),CONFIG));) + $(patsubst %.package.conf,%.cabal,$(call getVar,$(pkgname),CONFIG)) \ + > $(patsubst %.package.conf,%.cabal,$(call getVar,$(pkgname),CONFIG)).tmp; \ + mv $(patsubst %.package.conf,%.cabal,$(call getVar,$(pkgname),CONFIG)).tmp \ + $(patsubst %.package.conf,%.cabal,$(call getVar,$(pkgname),CONFIG));) hunk ./Makefile.am 2386 -if USE_NEW_PKG_FORMAT - hunk ./Makefile.am 2403 -else !USE_NEW_PKG_FORMAT - -install-data-hook : - $(if $(PKGCONF),if test -f $(PKGCONF); then :; \ - else echo "[]" > $(PKGCONF); fi;) - $(foreach pkgname,$(pkglib_LIBRARIES), \ - $(GHCPKG) $(addprefix --config-file=,$(PKGCONF)) \ - --update-package --force \ - --input-file=$(DESTDIR)$(pkglibdir)/$(patsubst libHS%.a,%.pkg,$(pkgname));) - -uninstall-hook : - $(foreach pkgname,$(pkglib_LIBRARIES), \ - $(GHCPKG) $(addprefix --config-file=,$(PKGCONF)) \ - --remove-package=$(patsubst libHS%.a,%,$(pkgname));) \ - $(if $(PKGCONF),if test -f $(PKGCONF); then \ - if test -n `head $(PKGCONF) | $(GREP) -e "\[\]"`; then \ - rm -f $(PKGCONF) $(PKGCONF).old; fi; \ - fi) - -endif !USE_NEW_PKG_FORMAT - hunk ./acinclude.m4 102 - if test "$USE_NEW_PKG_FORMAT" = "yes"; then - $2=$(echo "${C}" | sed -e 's/,/\n/g' -e 's/[[(), ]]//g' | grep -v '^$' | sed -e 's/[[A-Za-z-]]*//' | sort -r -n | head -n1) - AC_MSG_RESULT([yes, version $$2]) - else - AC_MSG_RESULT(yes) - fi + $2=$(echo "${C}" | sed -e 's/,/\n/g' -e 's/[[(), ]]//g' | grep -v '^$' | sed -e 's/[[A-Za-z-]]*//' | sort -r -n | head -n1) + AC_MSG_RESULT([yes, version $$2]) hunk ./cairo/Graphics/Rendering/Cairo.hs.pp 174 +#if __GLASGOW_HASKELL__ >= 606 hunk ./cairo/Graphics/Rendering/Cairo.hs.pp 177 +#endif hunk ./cairo/Graphics/Rendering/Cairo.hs.pp 247 +#if __GLASGOW_HASKELL__ >= 606 hunk ./cairo/Graphics/Rendering/Cairo.hs.pp 249 +#endif hunk ./cairo/Graphics/Rendering/Cairo.hs.pp 1565 +#if __GLASGOW_HASKELL__ >= 606 hunk ./cairo/Graphics/Rendering/Cairo.hs.pp 1580 +#endif hunk ./configure.ac 103 -You need GHC 6.0 or later.]) +You need GHC 6.4 or later.]) hunk ./configure.ac 113 -GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -lt, 6.0, [ - AC_MSG_ERROR([Gtk2Hs requires GHC 6.0 or later])]) +GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -lt, 6.4, [ + AC_MSG_ERROR([Gtk2Hs requires GHC 6.4 or later])]) hunk ./configure.ac 124 -dnl From ghc 6.4 onwards, ghc-pkg uses a new package format so we must produce -dnl and register .package.conf files instead of the old .pkg files. -GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -ge, 6.4.0, [ -USE_NEW_PKG_FORMAT=yes -HAVE_DATA_TREE=yes -HAVE_MTL_PACKAGE=yes -]) -AM_CONDITIONAL(USE_NEW_PKG_FORMAT, test "$USE_NEW_PKG_FORMAT" = "yes") -if test "$USE_NEW_PKG_FORMAT" = "yes"; then - PKGEXT=package.conf -else - PKGEXT=pkg -fi -AM_CONDITIONAL(HAVE_DATA_TREE, test "$HAVE_DATA_TREE" = "yes") -AM_CONDITIONAL(HAVE_MTL_PACKAGE, test "$HAVE_MTL_PACKAGE" = "yes") -AC_SUBST(USE_NEW_PKG_FORMAT) -AC_SUBST(HAVE_DATA_TREE) -AC_SUBST(HAVE_MTL_PACKAGE) - hunk ./configure.ac 215 -GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -ge, 6.4, [GHC_PKG_CHECK(mtl,PKG_MTL_VERSION)]) +GHC_PKG_CHECK(mtl,PKG_MTL_VERSION) hunk ./configure.ac 217 - -GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -ge, 6.8, [ +if test "$HAVE_SPLIT_BASE" = "yes"; then hunk ./configure.ac 227 -]) +fi hunk ./configure.ac 537 - GTK_CAIRO_DEPEND_NO_CABAL=",\"cairo\""; hunk ./configure.ac 799 -if test "$HAVE_MTL_PACKAGE" = "yes"; then hunk ./configure.ac 800 -else -HADDOCK_PACKAGES="base" -fi hunk ./configure.ac 809 -AC_SUBST(BUILT_IN_C2HS) -AC_SUBST(MULTIPLE_CHS) hunk ./configure.ac 811 -AC_SUBST(PKGEXT) hunk ./configure.ac 824 -AC_SUBST(GTK_CAIRO_DEPEND_NO_CABAL) hunk ./configure.ac 834 -]) - -AC_CONFIG_FILES([ hunk ./configure.ac 840 - glib/glib.pkg - glib/glib.package.conf - glib/glib.cabal - [_$_] - gtk/gtk.pkg - gtk/gtk.package.conf - gtk/gtk.cabal - [_$_] - glade/glade.pkg - glade/glade.package.conf - glade/glade.cabal - [_$_] - gconf/gconf.pkg - gconf/gconf.package.conf - gconf/gconf.cabal - [_$_] - sourceview/sourceview.pkg - sourceview/sourceview.package.conf - sourceview/sourceview.cabal - - mozembed/mozembed.pkg - mozembed/mozembed.package.conf - mozembed/mozembed.cabal - [_$_] - cairo/cairo.pkg - cairo/cairo.package.conf - cairo/cairo.cabal - - svgcairo/svgcairo.pkg - svgcairo/svgcairo.package.conf - svgcairo/svgcairo.cabal - - gtkglext/gtkglext.pkg - gtkglext/gtkglext.package.conf - gtkglext/gtkglext.cabal - - soegtk/soegtk.pkg - soegtk/soegtk.package.conf - soegtk/soegtk.cabal - - gnomevfs/gnomevfs.pkg - gnomevfs/gnomevfs.package.conf - gnomevfs/gnomevfs.cabal - - gstreamer/gstreamer.pkg - gstreamer/gstreamer.package.conf - gstreamer/gstreamer.cabal + glib/glib.package.conf glib/glib.cabal + gtk/gtk.package.conf gtk/gtk.cabal + glade/glade.package.conf glade/glade.cabal + gconf/gconf.package.conf gconf/gconf.cabal + sourceview/sourceview.package.conf sourceview/sourceview.cabal + mozembed/mozembed.package.conf mozembed/mozembed.cabal + cairo/cairo.package.conf cairo/cairo.cabal + svgcairo/svgcairo.package.conf svgcairo/svgcairo.cabal + gtkglext/gtkglext.package.conf gtkglext/gtkglext.cabal + soegtk/soegtk.package.conf soegtk/soegtk.cabal + gnomevfs/gnomevfs.package.conf gnomevfs/gnomevfs.cabal + gstreamer/gstreamer.package.conf gstreamer/gstreamer.cabal hunk ./glib/System/Glib/FFI.hs.pp 33 -#if __GLASGOW_HASKELL__<604 - withArrayLen, -#endif -#if __GLASGOW_HASKELL__<602 - unsafeForeignPtrToPtr, -#endif hunk ./glib/System/Glib/FFI.hs.pp 44 -# if __GLASGOW_HASKELL__>=602 hunk ./glib/System/Glib/FFI.hs.pp 45 -# else -import Foreign hiding (with, free) -# endif hunk ./glib/System/Glib/FFI.hs.pp 49 -#if __GLASGOW_HASKELL__<604 -withArrayLen :: Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b -withArrayLen elems act = let len = length elems in withArray elems (act len) -#endif - - -#if __GLASGOW_HASKELL__>=602 hunk ./glib/System/Glib/FFI.hs.pp 50 -#endif - -#if __GLASGOW_HASKELL__<602 -unsafeForeignPtrToPtr = foreignPtrToPtr -#endif hunk ./glib/System/Glib/FFI.hs.pp 51 -#if __GLASGOW_HASKELL__>=602 hunk ./glib/System/Glib/FFI.hs.pp 53 -#else -nullForeignPtr :: ForeignPtr a -nullForeignPtr = unsafePerformIO $ newForeignPtr nullPtr freePtr - -foreign import ccall unsafe "&free" - freePtr :: FinalizerPtr a -#endif hunk ./mk/common.mk 33 -if USE_NEW_PKG_FORMAT hunk ./mk/common.mk 35 - $(if $(USE_NEW_PKG_FORMAT),$(addprefix -ignore-package ,$($(PKG)_NAME))) \ + $(addprefix -ignore-package ,$($(PKG)_NAME)) \ hunk ./mk/common.mk 42 -else - -HCFLAGS_PACKAGE_DEPS = \ - -package-conf package.conf.inplace $(HIDE_ALL_PACKAGES) \ - $(if $(USE_NEW_PKG_FORMAT),$(addprefix -ignore-package ,$($(PKG)_NAME))) \ - $(addprefix -package ,$($(PKG)_EXTERNALDEPS)) \ - $(addprefix -package ,$($(PKG)_INTERNALDEPS)) - -HCFLAGS_PACKAGE_NAME = \ - $(addprefix -package-name ,$($(PKG)_NAME)) - -endif - |