[Haskell-cafe] Re: Haskellers hate GUIs!!

David Leimbach leimy2k at gmail.com
Fri Apr 2 10:41:38 EDT 2010


Never been a fan of GTK myself, but that's because I was a KDE developer I
guess :-).

Having said that, are there any plans to make it really easy to get gtk2hs
working on Mac OS X?

Dave

On Fri, Apr 2, 2010 at 6:34 AM, Andy Stewart <lazycat.manatee at gmail.com>wrote:

> Hi Jürgen,
>
> For GHC-6.12, just darcs version support.
> So please download darcs version.
>
> Axel has working on that make gtk2hs build on cabal.
> And i'm working on update All gtk2hs API to Gtk+ 2.18.3 (have finish
> 99%), i can finish all APIs in later days.
>
> Axel have finish some sub-modules on http://www2.in.tum.de/~simona/
> (Note, above cabal packages not include patches i push recently)
>
> After we finsh work, we can merge gtk2hs into Haskell Platform.
>
> Because gtk2hs just interface code for low-level C library, so it's
> stable enough.
>
> As recently so much new code push in gtk2hs, perhaps have bug.
> So please report any problem on gtk2hs mail-list, we can fix it as soon
> as we can.
>
>  -- Haskller GUI lover
>
> Jürgen Nicklisch-Franken <jnf at arcor.de> writes:
>
> > I am in the damned position to have tried to develop a GUI app in
> > Haskell. I'm building on top of gtk2hs, now we have a new compiler
> > version a new Platform release and no gtk2hs release, so
> > I cite from a mail from a potential user/contributor for my GUI app.
> > What shall I say, how should he install gtk2hs? Is their a way to get a
> > stable version from a changing darcs repo?
> > If not all Haskellers were such GUI haters, we would have GUI libs with
> > the platform.
> >
> > Jürgen
> >
> >         "
> >         ...
> >         Each gtk2hs package (like glib-0.10.1) installed in that
> >         non-standard
> >         location by Ubuntu apt-get does at least have a package.conf
> >         file, like
> >         glib.package.conf. However, on inspection, the "id" fields are
> >         missing,
> >         and the "depends" fields look more like .cabal file "depends"
> >         fields (no
> >         ABI ID).
> >
> >         I tried an experiment on my glib.package.conf, used "ghc
> >         --abi-hash" to
> >         generate an ID, so eventually creating a new line something like
> >
> >         id: glib-0.10.1-d41d8cd98f00b204e9800998ecf8427e
> >
> >         and then set up the "depends" properly by getting the real
> >         dependencies
> >         using "ghc-pkg -v list".
> >
> >         After doing this then
> >
> >         ghc-pkg register glib.package.conf
> >
> >         worked just fine, and I see it in my global DB. It's cool that
> >         this
> >         works but it seems highly roundabout. :-)
> >
> >
> >         Building gtk2hs from source is broken. Not sure why - I did it
> >         OK with
> >         ghc-6.10.3. I can run ./configure no problem with
> >
> >         ./configure --with-hcflags=-O0 --disable-split-objs
> >         --with-ghc=/usr/local/lib/ghc-6.12.1
> >
> >         and it claims that it will build:
> >
> >         * The following packages will be built:
> >         *
> >         * glib           : yes
> >         * gtk            : yes
> >         * gio            : yes
> >         * glade          : yes
> >         * cairo          : yes
> >         * svgcairo       : yes
> >         * gtkglext       : no
> >         * gconf          : yes
> >         * sourceview     : no
> >         * gtksourceview2 : yes
> >         * mozembed       : no
> >         * soegtk         : yes
> >         * gnomevfs       : no
> >         * gstreamer      : yes
> >         * documentation  : no
> >
> >         But "make" fails horribly...can't find any packages like "base"
> >         that
> >         configure had no problems finding, so I have no idea what the
> >         problem is
> >         there. Which is why I'd rather figure out a way to make
> >         ghc-6.12.1
> >         recognize the gtk2hs packages that I have in that non-standard
> >         location.
> >
> >         It works but it's awkward. :-)
> >
> >         Each gtk2hs package (like glib-0.10.1) installed in that
> >         non-standard
> >         location by Ubuntu apt-get does at least have a package.conf
> >         file, like
> >         glib.package.conf. However, on inspection, the "id" fields are
> >         missing,
> >         and the "depends" fields look more like .cabal file "depends"
> >         fields (no
> >         ABI ID).
> >
> >         I tried an experiment on my glib.package.conf, used "ghc
> >         --abi-hash" to
> >         generate an ID, so eventually creating a new line something like
> >
> >         id: glib-0.10.1-d41d8cd98f00b204e9800998ecf8427e
> >
> >         and then set up the "depends" properly by getting the real
> >         dependencies
> >         using "ghc-pkg -v list".
> >
> >         After doing this then
> >
> >         ghc-pkg register glib.package.conf
> >
> >         worked just fine, and I see it in my global DB. It's cool that
> >         this
> >         works but it seems highly roundabout. :-)
> >
> >         I think I'll pack it in for the evening. The procedure I
> >         described works
> >         well in theory, but apparently if the "depends" field in the
> >         "package
> >         conf" files says something like foo-2.0.1.0, it's not OK to use
> >         an
> >         existing registered "foo" that has a higher version number...I
> >         registered everything in gtk2hs manually but when building ltk
> >         it
> >         complains with
> >
> >         Bad interface
> >         file:
> /usr/lib/haskell-packages/ghc6/lib/gtk-0.10.1/imports/Graphics/UI/Gtk.hi
> >                 mismatched interface file versions (wanted "6121", got
> >         "")
> >
> >         Unfortunately when using these package configuration files one
> >         has to
> >         use the ABI ID - "ghc-pkg register" won't work otherwise - so
> >         it's very
> >         finicky.
> >
> >         I'll have to un-register all my gtk2hs packages, and start again
> >         from
> >         scratch.
> >
> >         Anyway, back to Ubuntu, Haskell and Leksah. :-)
> >
> >         I am removing vestiges of ghc-6.10.3 off my Ubuntu system as I
> >         encounter
> >         them, although I have no reason to believe that the presence of
> >         directories and files for that old version are causing me any
> >         harm. I am
> >         keeping ghc-6.10.4 around, in parallel with ghc-6.12.1.
> >
> >         In any case, to the degree that I have exercised it, ghc-6.12.1
> >         is
> >         apparently OK. I have done some "cabal install"s on a few
> >         executables
> >         and libraries, both into user and global, and things seem OK as
> >         evidenced by "ghc-pkg list".
> >
> >         Now, to gtk2hs and ltk and Leksah. After having initial problems
> >         with
> >         building gtk2hs from source, for reasons I don't want to spend
> >         time
> >         investigating (yet), I am returning to the apt package approach,
> >         command-line this time instead of through the Synaptic GUI.
> >         Running
> >
> >             sudo apt-get install libghc6-gtk-dev
> >
> >         partially returns
> >
> >         ---------------
> >         Selecting previously deselected package libghc6-glib-dev.
> >         (Reading database ... 257458 files and directories currently
> >         installed.)
> >         Unpacking libghc6-glib-dev
> >         (from .../libghc6-glib-dev_0.10.1-1ubuntu2_i386.deb) ...
> >         Selecting previously deselected package libghc6-cairo-dev.
> >         Unpacking libghc6-cairo-dev
> >         (from .../libghc6-cairo-dev_0.10.1-1ubuntu2_i386.deb) ...
> >         Selecting previously deselected package libghc6-gtk-dev.
> >         Unpacking libghc6-gtk-dev
> >         (from .../libghc6-gtk-dev_0.10.1-1ubuntu2_i386.deb) ...
> >         Setting up libghc6-glib-dev (0.10.1-1ubuntu2) ...
> >         Reading package info from
> >
> "/usr/lib/haskell-packages/ghc6/lib/glib-0.10.1/glib.package.conf" ...
> >         done.
> >         Writing new package config file... done.
> >
> >         Setting up libghc6-cairo-dev (0.10.1-1ubuntu2) ...
> >         Reading package info from
> >
> "/usr/lib/haskell-packages/ghc6/lib/cairo-0.10.1/cairo.package.conf" ...
> >         done.
> >         Writing new package config file... done.
> >
> >         Setting up libghc6-gtk-dev (0.10.1-1ubuntu2) ...
> >         Reading package info from
> >         "/usr/lib/haskell-packages/ghc6/lib/gtk-0.10.1/gtk.package.conf"
> ...
> >         done.
> >         Writing new package config file... done.
> >         ---------------
> >
> >         You'll see the files I was talking about, the *.package.conf
> >         files. I've
> >         attached the one for cairo, so you can also see what I was
> >         talking
> >         about: these files are real close to the *.conf files in the
> >         user and
> >         global package.conf.d databases, but they are missing the "id"
> >         field,
> >         and the "depends" field entries are like
> >
> >         base-4.1.0.0
> >
> >         as opposed to a full
> >
> >         base-3.0.3.2-52acef427378232ec569bca0486ee48f
> >
> >         In other words, as is, "ghc-pkg register" can't use these files.
> >         Which
> >         is why I manually edited them.
> >
> >         I still see no reason why my manual approach will not work
> >         (although
> >         figuring out how to build from source would be even better), but
> >         I'll
> >         have to keep the exact versions specified in these
> >         *.package.conf files.
> >
> >         Much obliged for the tip about using darcs for the gtk2hs build.
> >         Worked
> >         like a charm. Combined with that, and doing occasional "cabal
> >         install"'s
> >         along the way, I have ltk and haddock-leksah-6.12 now built.
> >
> >         I don't consider the 5 or 6 hours I spent on all this (which
> >         includes
> >         building ghc-6.12.1 from source) to be wasted; I learned a lot
> >         more
> >         about GHC package management.
> >
> >         Bit of a snag now with leksah-server (the version in
> >         leksah-server.cabal
> >         is 0.8.0.5). I've included the console output of the build.
> >
> >         Looking at that very first problem:
> >
> >
> /home/arved/.cabal/lib/ltk-0.8/ghc-6.12.1/libHSltk-0.8.a(Parameters.o):
> >         In function `s9Ao_info':
> >         (.text+0x28b9): undefined reference to
> >
> `gtkzm0zi10zi1_GraphicsziUIziGtkziGeneralziEnums_zdfShowShadowType_closure'
> >
> >         I can sort of parse this. I see code concerning ShadowType in
> >         ltk/Graphics.UI.Editor.Parameters.hs, and I can see that a
> >         complaint is
> >         being made about something related to ShadowType not being found
> >         (I
> >         believe) in gtk/Graphics.UI.Gtk.General.Enums.
> >
> >         With the
> >
> >         {--        #if MIN_VERSION_gtk(0,9,13)
> >                     -- now defined in gtk
> >                 #else
> >                 instance Show ShadowType
> >                     where show _    =   "Any Shadow"
> >                 #endif
> >         --}
> >
> >         in Parameters.hs, and seeing as how gtk is 0.10.1, I would
> >         expect us to
> >         be using gtk code to provide that Show instance for ShadowType,
> >         no?
> >
> >         Any ideas?
> >         ...
> >         "
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100402/f6b00f78/attachment-0001.html


More information about the Haskell-Cafe mailing list