
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
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
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@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe