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

Ross Mellgren rmm-haskell at z.odi.ac
Sat Mar 21 15:50:46 EDT 2009


(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