[Haskell-cafe] Ease of Haskell development on OS X?

Colin Adams colinpauladams at googlemail.com
Sat Mar 21 16:57:37 EDT 2009


It didn't.

2009/3/21 Ross Mellgren <rmm-haskell at z.odi.ac>:
> Did the configure for gtk2hs claim that it was going to build svgcairo? If
> something is wrong with the librsvg install, it won't.
>
> -Ross
>
> On Mar 21, 2009, at 4:49 PM, Colin Adams wrote:
>
>> OK - I added the --with-user-pkginfo flag.
>> It nearly all works now - but still no svgcairo - ./configure doesn't find
>> it.
>>
>> 2009/3/21 Ross Mellgren <rmm-haskell at z.odi.ac>:
>>>
>>> (back to the list)
>>>
>>> Answers inline:
>>>
>>> On Mar 21, 2009, at 2:42 PM, Colin Adams wrote:
>>>
>>>> Yes, that was the problem, and swapping the PATH order does the trick.
>>>> Thanks.
>>>
>>> no prob.
>>>
>>>> I must still have the macports stuff installed. Can you tell me how to
>>>> get rid of it?
>>>
>>> if you really want to get rid of it I believe you just have to rm -rf
>>> /opt/local and remove any initialization hooks for /opt/local out of
>>> /etc/profile and ~/.bash_profile
>>>
>>>> However I still can't install my program - I get missing dependencies
>>>> for gtk glib cairo and svgcairo.
>>>
>>> I'm not really that savvy with the package registration magics -- on my
>>> system after doing sudo make install for gtk2hs, I get the packages
>>> properly
>>> registered. You can check the registered packages with ghc-pkg list. It
>>> could be that the package is registered local for your user, but the
>>> cabal
>>> install line you're using for the application includes --global (or your
>>> cabal configuration) so it won't look in the user config.
>>>
>>> I think Duncan answered some questions about this same problem recently,
>>> though I don't have a mailing list reference.
>>>
>>>> I tried some of the gtk2hs demos - they work, but, for instance, the
>>>> actionmenu demo does not put the menus up at the top of the screen, so
>>>> it doesn't look like the framework integration has worked.
>>>
>>> Even with the integration everything is still GTK-ish. There's a separate
>>> framework that comes with the .dmg called ige-mac-integration that allows
>>> applications to meld with the mac environment better, but no gtk2hs
>>> bindings
>>> for this exist at the moment. Bindings would have to be created, and then
>>> you'd have to modify the application to make use of them (presumably with
>>> CPP or similar switch to control whether you want mac support, or just
>>> plain
>>> GTK)
>>>
>>> -Ross
>>>
>>>> 2009/3/21 Ross Mellgren <rmm-haskell at z.odi.ac>:
>>>>>
>>>>> I think there must be a version inconsistency with your GLib framework
>>>>> --
>>>>> either not the most recent copy of the GTK+ DMG, or your path is
>>>>> flipped
>>>>> around and you're using a ports version.
>>>>>
>>>>> Run glib-mkenums --version to see what version you have... I have
>>>>>
>>>>> rmm at Hugo:~/tmpgtk/GLib.framework/Resources/dev/bin$ ./glib-mkenums
>>>>>  --version
>>>>> glib-mkenums version glib-2.18.1
>>>>> glib-mkenums comes with ABSOLUTELY NO WARRANTY.
>>>>> You may redistribute copies of glib-mkenums under the terms of
>>>>> the GNU General Public License which can be found in the
>>>>> GLib source package. Sources, examples and contact
>>>>> information are available at http://www.gtk.org
>>>>>
>>>>> Particularly, the error you're getting is because your version of
>>>>> glib-mkenums doesn't expand @ENUMPREFIX@ -- if I run glib-mkenums with
>>>>> no
>>>>> arguments, my version reports @ENUMPREFIX@ as a valid subtitution:
>>>>>
>>>>> rmm at Hugo:~/tmpgtk/GLib.framework/Resources/dev/bin$ ./glib-mkenums
>>>>> Usage: glib-mkenums [options] [files...]
>>>>>  --fhead <text>             output file header
>>>>>  --fprod <text>             per input file production
>>>>>  --ftail <text>             output file trailer
>>>>>  --eprod <text>             per enum text (produced prior to value
>>>>> itarations)
>>>>>  --vhead <text>             value header, produced before iterating
>>>>> over
>>>>> enum values
>>>>>  --vprod <text>             value text, produced for each enum value
>>>>>  --vtail <text>             value tail, produced after iterating over
>>>>> enum
>>>>> values
>>>>>  --comments <text>          comment structure
>>>>>  --template file            template file
>>>>>  -h, --help                 show this help message
>>>>>  -v, --version              print version informations
>>>>> Production text substitutions:
>>>>>  @EnumName@                 PrefixTheXEnum
>>>>>  @enum_name@                prefix_the_xenum
>>>>>  @ENUMNAME@                 PREFIX_THE_XENUM
>>>>>  @ENUMSHORT@                THE_XENUM
>>>>>  @ENUMPREFIX@               PREFIX
>>>>>  @VALUENAME@                PREFIX_THE_XVALUE
>>>>>  @valuenick@                the-xvalue
>>>>>  @type@                     either enum or flags
>>>>>  @Type@                     either Enum or Flags
>>>>>  @TYPE@                     either ENUM or FLAGS
>>>>>  @filename@                 name of current input file
>>>>>
>>>>>
>>>>> Does yours?
>>>>>
>>>>> You might try moving
>>>>> /Library/Frameworks/GLib.framework/Resources/dev/bin
>>>>> to
>>>>> the front of your path before make'ing pango --
>>>>>
>>>>> cd pango-1.24.0
>>>>> export PATH=/Library/Frameworks/GLib.framework/Resources/dev/bin:$PATH
>>>>> make
>>>>>
>>>>> Hope this helps,
>>>>>
>>>>> -Ross
>>>>>
>>>>> On Mar 21, 2009, at 1:52 PM, Colin Adams wrote:
>>>>>
>>>>>> Attached.
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2009/3/21 Ross Mellgren <rmm-haskell at z.odi.ac>:
>>>>>>>
>>>>>>> (taking this off list, to avoid noise)
>>>>>>>
>>>>>>> Could you attach pango-1.24.0/pango/pango-enum-types.h? Something
>>>>>>> hokey
>>>>>>> is
>>>>>>> going on -- this file is shipped with pango-1.24.0 but may be
>>>>>>> overwritten
>>>>>>> if
>>>>>>> your glib-mkenums does it differently. In any case, since it's
>>>>>>> (possibly)
>>>>>>> machine generated I would have to see what's going on at those lines
>>>>>>> to
>>>>>>> make
>>>>>>> progress.
>>>>>>>
>>>>>>> Also, if you could cd pango-1.24.0/pango, and run:
>>>>>>>
>>>>>>> gcc -E -DHAVE_CONFIG_H -I. -I.. -DG_LOG_DOMAIN=\"Pango\"
>>>>>>> -DPANGO_ENABLE_BACKEND -DPANGO_ENABLE_ENGINE
>>>>>>> -DSYSCONFDIR=\"/usr/local/etc\"
>>>>>>> -DLIBDIR=\"/usr/local/lib\" -I.. -DG_DISABLE_CAST_CHECKS
>>>>>>> -I/Library/Frameworks/GLib.framework/Headers
>>>>>>>  -I/Library/Frameworks/Cairo.framework/Headers    -I/usr/X11/include
>>>>>>>  -DFC_WEIGHT_EXTRABLACK=215 -Wall -MT fonts.lo -MD -MP -MF
>>>>>>> .deps/fonts.Tpo
>>>>>>> -c -o fonts.i fonts.c
>>>>>>>
>>>>>>> and attach fonts.i, that might shed more light. However, since the
>>>>>>> error
>>>>>>> you're getting is a preprocessor one, gcc -E may fail as well.
>>>>>>>
>>>>>>> -Ross
>>>>>>>
>>>>>>> On Mar 21, 2009, at 1:37 PM, Colin Adams wrote:
>>>>>>>
>>>>>>>> In file included from ../pango/pango.h:31,
>>>>>>>>             from pango-impl-utils.h:28,
>>>>>>>>             from fonts.c:30:
>>>>>>>> ../pango/pango-enum-types.h:12:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:14:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:17:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:19:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:22:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:25:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:27:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:29:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:31:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:33:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:36:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:38:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:41:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:43:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:45:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:48:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:51:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:54:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> In file included from ../pango/pango.h:31,
>>>>>>>>             from pango-impl-utils.h:28,
>>>>>>>>             from glyphstring.c:26:
>>>>>>>> ../pango/pango-enum-types.h:12:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:14:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:17:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:19:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:22:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:25:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:27:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:29:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:31:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:33:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:36:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:38:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:41:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:43:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:45:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:48:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:51:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>> ../pango/pango-enum-types.h:54:9: error: macro names must be
>>>>>>>> identifiers
>>>>>>>>
>>>>>>>>
>>>>>>>> 2009/3/21 Ross Mellgren <rmm-haskell at z.odi.ac>:
>>>>>>>>>
>>>>>>>>> I didn't get any errors like that (nor do I remember ever having
>>>>>>>>> them),
>>>>>>>>> though if you want to paste them here maybe I can help with them.
>>>>>>>>>
>>>>>>>>> -Ross
>>>>>>>>>
>>>>>>>>> On Mar 21, 2009, at 1:27 PM, Colin Adams wrote:
>>>>>>>>>
>>>>>>>>>> If I try this, pango fails to compile with lots of error messages
>>>>>>>>>> about error: macro names must be identifiers.
>>>>>>>>>>
>>>>>>>>>> I think I've seen this before - some well-known Mac OSX problem?
>>>>>>>>>> (I'm
>>>>>>>>>> a linux man myself - so I'm not used to the mac)
>>>>>>>>>>
>>>>>>>>>> 2009/3/21 Ross Mellgren <rmm-haskell at z.odi.ac>:
>>>>>>>>>>>
>>>>>>>>>>> I tried making this work, but librsvg requires pango, and pango
>>>>>>>>>>> is
>>>>>>>>>>> a
>>>>>>>>>>> huge
>>>>>>>>>>> pain in the ass -- I managed to get the whole thing to compile,
>>>>>>>>>>> but
>>>>>>>>>>> now
>>>>>>>>>>> it
>>>>>>>>>>> can't find any fonts, apparently due to some dynaloading issues.
>>>>>>>>>>>
>>>>>>>>>>> I think if you need any of the extended modules (e.g. svgcairo,
>>>>>>>>>>> gl)
>>>>>>>>>>> that
>>>>>>>>>>> the
>>>>>>>>>>> DMG doesn't directly support then you're best served by shedding
>>>>>>>>>>> a
>>>>>>>>>>> couple
>>>>>>>>>>> tears and going with macports.
>>>>>>>>>>>
>>>>>>>>>>> The steps I used to get the broken version were (FYI -- doing
>>>>>>>>>>> this
>>>>>>>>>>> causes
>>>>>>>>>>> all fonts to load as the no-character square in all gtk2hs apps):
>>>>>>>>>>>
>>>>>>>>>>> export
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig:/usr/local/lib/pkgconfig:/Library/Frameworks/Cairo.framework/Resources/dev/lib/pkgconfig:/Library/Frameworks/GLib.framework/Resources/dev/lib/pkgconfig:/Library/Frameworks/Gtk.framework/Resources/dev/lib/pkgconfig
>>>>>>>>>>>
>>>>>>>>>>> export
>>>>>>>>>>> PATH=$PATH:/Library/Frameworks/GLib.framework/Resources/dev/bin
>>>>>>>>>>>
>>>>>>>>>>> cd pango-1.24.0
>>>>>>>>>>> CFLAGS="-DFC_WEIGHT_EXTRABLACK=215" ./configure
>>>>>>>>>>> --prefix=/usr/local
>>>>>>>>>>> make -j4
>>>>>>>>>>> sudo make install
>>>>>>>>>>>
>>>>>>>>>>> cd librsvg-2.26.0
>>>>>>>>>>> ./configure --prefix=/usr/local
>>>>>>>>>>> make -j4
>>>>>>>>>>> sudo make install
>>>>>>>>>>>
>>>>>>>>>>> cd gtk2hs-0.10.0
>>>>>>>>>>> ./configure --disable-gio
>>>>>>>>>>> make -j4
>>>>>>>>>>> sudo make install
>>>>>>>>>>>
>>>>>>>>>>> Running apps linked with this version of gtk2hs gets:
>>>>>>>>>>>
>>>>>>>>>>> (svgviewer:43314): Pango-CRITICAL **: No modules found:
>>>>>>>>>>> No builtin or dynamically loaded modules were found.
>>>>>>>>>>> PangoFc will not work correctly.
>>>>>>>>>>> This probably means there was an error in the creation of:
>>>>>>>>>>>  '/usr/local/etc/pango/pango.modules'
>>>>>>>>>>> You should create this file by running:
>>>>>>>>>>>  pango-querymodules > '/usr/local/etc/pango/pango.modules'
>>>>>>>>>>>
>>>>>>>>>>> (svgviewer:43314): Pango-WARNING **: failed to choose a font,
>>>>>>>>>>> expect
>>>>>>>>>>> ugly
>>>>>>>>>>> output. engine-type='PangoRenderATSUI', script='latin'
>>>>>>>>>>>
>>>>>>>>>>> So if anyone knows what Pango is trying to do, maybe they could
>>>>>>>>>>> help
>>>>>>>>>>> resolve
>>>>>>>>>>> this.
>>>>>>>>>>>
>>>>>>>>>>> I'm probably going to ditch the use of GTK in my own project and
>>>>>>>>>>> use
>>>>>>>>>>> FFI
>>>>>>>>>>> bindings to Carbon/Win32, since I don't really need widgets for
>>>>>>>>>>> my
>>>>>>>>>>> own
>>>>>>>>>>> stuff
>>>>>>>>>>> and the whole family of GTK related packages is a total pain in
>>>>>>>>>>> the
>>>>>>>>>>> ass
>>>>>>>>>>> (as
>>>>>>>>>>> are most things in the GNU family of software, IMO)
>>>>>>>>>>>
>>>>>>>>>>> -Ross
>>>>>>>>>>>
>>>>>>>>>>> On Mar 21, 2009, at 10:13 AM, Colin Paul Adams wrote:
>>>>>>>>>>>
>>>>>>>>>>>>>>>>> "Ross" == Ross Mellgren <rmm-haskell at z.odi.ac> writes:
>>>>>>>>>>>>
>>>>>>>>>>>>  Ross> While there is not a .dmg for Gtk2Hs, you can use a .dmg
>>>>>>>>>>>>  Ross> installed GHC with a .dmg installed Gtk, and then build
>>>>>>>>>>>>  Ross> gtk2hs straight on top of that, without having to deal
>>>>>>>>>>>> with
>>>>>>>>>>>>  Ross> the dual-GHC macports mess..
>>>>>>>>>>>>
>>>>>>>>>>>>  Ross>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> http://www.haskell.org/haskellwiki/Gtk2hs#Using_the_GTK.2B_OS_X_Framework
>>>>>>>>>>>>
>>>>>>>>>>>> I just tried this.
>>>>>>>>>>>>
>>>>>>>>>>>> The configure enables cairo, but does not enable svgcairo. Is
>>>>>>>>>>>> there
>>>>>>>>>>>> anyway round this, or do I have to revert to the macports gtk?
>>>>>>>>>>>> (my
>>>>>>>>>>>> application uses svgcairo)
>>>>>>>>>>>> --
>>>>>>>>>>>> Colin Adams
>>>>>>>>>>>> Preston Lancashire
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Haskell-Cafe mailing list
>>>>>>>>>>> Haskell-Cafe at haskell.org
>>>>>>>>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> <pango-enum-types.h>
>>>>>
>>>>>
>>>
>>>
>
>


More information about the Haskell-Cafe mailing list