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

Colin Adams colinpauladams at googlemail.com
Sat Mar 21 16:49:52 EDT 2009


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