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

Colin Adams colinpauladams at googlemail.com
Sat Mar 21 17:02:31 EDT 2009


And the reason is that librsvg fails to find cairo,  pangocairo and cairo-png.

Where is it supposed to find them?

2009/3/21 Colin Adams <colinpauladams at googlemail.com>:
> 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