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

Andy Stewart lazycat.manatee at gmail.com
Fri Apr 2 09:34:56 EDT 2010


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?
>         ...
>         "



More information about the Haskell-Cafe mailing list