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

Ross Mellgren rmm-haskell at z.odi.ac
Sat Mar 21 17:04:14 EDT 2009


Should be from pkg-config path, make sure your PKG_CONFIG_PATH is set  
to include /Library/Frameworks/{GLib,Gtk,Cairo}.framework

Also, I had a problem where it couldn't find libpng -- I had to add / 
usr/X11/lib/pkgconfig to my pkg-config path.

-Ross

On Mar 21, 2009, at 5:02 PM, Colin Adams wrote:

> 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