On 13 January 2012 16:28, Frodo Kenny <frodoken...@gmail.com> wrote: > > On Thu, Jan 12, 2012 at 5:19 PM, Dave Tapley <duked...@gmail.com> wrote: >> >> On 12 January 2012 15:09, Jeremy O'Donoghue <jeremy.odonog...@gmail.com> >> wrote: >> > Thank you Kenneth, >> > >> > That's an extremely detailed and complete set of notes. It is very much >> > appreciated. >> >> I'd also like to offer my thanks, this is extremely useful to us. > > > You're welcome. Thanks for replying otherwise my post would not even be > visible. I guess some copy-past action html-ified it. And here I was > thinking attachments would be a problem :)
I noticed that, very strange.. > >> >> >> > >> > Best regards >> > Jeremy >> > >> > On 12 January 2012 14:52, Frodo Kenny <frodoken...@gmail.com> wrote: >> >> >> >> Nice work. I was still on GHC 6.10 to be able to use wxhaskell with >> >> ghci. >> >> >> >> Here are some notes and patches for OS X. I'm running Lion (10.7.2) and >> >> getting wxwidgets running actually took the most time. >> >> >> >> >> >> 1) wxwidgets >> >> >> >> >> >> First of all, Haskell and wxwidgets must use the same architecture, >> >> i.e. >> >> both 32-bit or both 64-bit. >> >> This never occurred to me, well spotted. >> We should check this, so I've created a ticket: >> >> https://sourceforge.net/tracker/?func=detail&aid=3472972&group_id=73133&atid=536848 > > > Good idea. > >> >> >> >> >> The standard build is 64-bit, but wxwidgets includes the QuickTime >> >> framework which is only available in 32-bit. It builds and ghc only >> >> gives a >> >> warning, but ghci will give an error >> >> (/System/Library/Frameworks/QuickTime.framework/QuickTime: mach-o, but >> >> wrong >> >> architecture). >> >> >> >> To build 32-bit you can use "--enable-macosx_arch=i386". >> >> >> >> It looks like quicktime is only used for PICT support, which is >> >> disabled >> >> in 64-bit builds anyway, so I made a patch that disables quicktime for >> >> both >> >> 32 and 64 bit cocoa builds. >> >> >> >> By further disabling the ppc architecture, we can make a universal >> >> 32/64-bit binary with: >> >> >> >> =remove -arch ppc in configure >> >> >> >> =remove -framework QuickTime in configure >> >> >> >> =remove PICT by __LP64__ -> __WXOSX_COCOA__ in bitmap.c, fontenum.c, >> >> metafile.cpp >> >> >> >> >> >> > ./configure --disable-debug --disable-dependency-tracking >> >> > --with-osx_cocoa --disable-webkit >> >> > --with-macosx-sdk=/Developer/SDKs/MacOSX10.6.sdk >> >> > --with-macosx-version-min=10.6 --enable-universal_binary >> >> >> >> > make install >> >> >> >> >> >> Note that on lion with the latest Xcode, 10.6 is the lowest sdk >> >> version. >> >> >> >> >> >> I use Homebrew so I attached a formula for it. To install homebrew: >> >> >> >> >> >> > /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)" >> >> >> >> >> >> Then put "wxosx.rb" in /usr/local/Library/Formula and run: >> >> >> >> >> >> > brew install wxosx >> >> I'm not an OS X person, so this doesn't really mean anything to me; is >> it something which should be on the wiki? > > > I think that would be useful (homebrew is a package manager and the attached > "formula" applies the patches and installs wxwidgets 2.9.3 relatively easy). Ah, thanks for the explanation. > >> >> >> >> >> >> >> >> >> >> 2) wxhaskell >> >> >> >> >> >> installing wxc gives: >> >> >> >> > cd wxc >> >> >> >> > cabal install >> >> >> >> - error wxEVT_WEBKIT_ was not declared… >> >> >> >> so I disabled webkit in wxwidgets above. >> >> >> >> >> >> -ld: file not found: undefined >> >> >> >> =change "-Wl,undefined" to "-Wl,-undefined" in linkCxxOpts in Setup.hs >> >> >> >> >> >> installing wxcore >> >> >> >> -* Missing C library: wxc >> >> >> >> name is wxc.so instead of libwxc.dylib >> >> >> >> =change for sharedLibName: OSX -> "lib" ++ addExtension basename >> >> ".dylib" >> >> in Setup.hs >> >> >> >> >> >> > ghc --make HelloWorld.hs >> >> >> >> Undefined symbols for architecture x86_64: >> >> >> >> "_expEVT_DIALUP_DISCONNECTED >> >> >> >> I don't know where this is coming from (dialupman is enabled in >> >> wxwidgets) >> >> so I commented out the DIALUP lines in wxc_glue.h >> >> >> >> >> >> > ./HelloWorld >> >> >> >> - dlopen(dist/build/libwxc.dylib) failed >> >> >> >> The final problem is that a dylib contains an absolute paths used for >> >> linking, and the library is expected to be found at that locations. To >> >> set >> >> this path we must pass the "-install_name" argument when linking >> >> libwxc.dylib >> >> >> >> = OSX -> ["-dynamiclib", >> >> >> >> "-o " ++ out_dir </> sharedLibName ver basename, >> >> >> >> "-install_name " ++ basepath </> sharedLibName ver >> >> basename, >> >> >> >> "-Wl,-undefined,dynamic_lookup"] >> >> >> >> in "linkCxxOpts", thus needing an extra "basepath" argument >> >> >> >> this is found by adding >> >> >> >> = inst_lib_dir = libdir $ absoluteInstallDirs pkg_descr >> >> local_bld_info NoCopyDest >> >> >> >> to "myBuildHook" and also using an extra argument for "linkSharedLib". >> >> Thank you very much for the patch, but I have one tiny request: >> I can't apply wxhaskell-osx.patch because the structure doesn't match >> the one on my system. >> >> Could you record it with darcs and send the patch bundle as an >> attachment (darcs send -o mypatch.dpatch) >> http://darcs.net/manual/Darcs_commands.html#SECTION00661000000000000000 >> http://darcs.net/manual/Darcs_commands.html#SECTION00664000000000000000 >> >> Also, if you record the patches your name will forever be attached to >> them and you will received the karma you deserve :) >> > > Done. The diff was only for the wxc directory, so maybe that was it. But > karma is nice... Mm, I do love me some darcs send, the patch applied successfully and is now in -dev repo: http://darcsden.com/DukeDave/wxhaskell-dev/patch/20120113131345-1ccc1 Thank you for your contribution :) > >> >> >> >> >> >> >> 3) using wxhaskell >> >> >> >> >> >> "ghc --make" seems to work with the limited testing that I did >> >> >> >> >> >> ghci error: +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only >> >> safe to invoke on the main thread. >> >> >> >> >> >> ghci creates a new thread for each computation and under os x the gui >> >> apparently must run on the main (first) thread. >> >> >> >> This is solved by: >> >> >> >> > ghci -fno-ghci-sandbox >> >> Another good tip for the wiki perhaps? >> I wonder if there is a way to indicate at a package level that this is >> required? >> >> >> >> >> However, keyboard input is not directed to the gui but to the ghci >> >> terminal… >> >> >> >> There used to be an EnableGUI module to fix this >> >> (http://www.haskell.org/haskellwiki/WxHaskell/MacOS_X), but that does >> >> not >> >> seem to work anymore. >> >> >> >> The window can be closed and restarted from ghci though. However, the >> >> window does not actually disappear until ghci is exited. >> >> I'm a little confused by this statement? >> Do you mean: You can close the window, and ghci returns to the prompt, >> but the actual window manager window remains? > > > If I press the close button (there is no menubar), the window does not > actually disappear but it does not react to any (mouse) inputs anymore and > the ghci prompt returns. Without keyboard input going to the gui and without > a menu bar, the gui is not really useful yet I guess, so I hope this is > fixable. Oh, I understand now. I haven't heard of this before, but it sounds like exactly the kind of weirdness I'd expect. Anyone? > > Kenneth > >> >> >> Dave, >> >> >> >> >> Does anybody know how this was working/can be fixed? >> >> >> >> >> >> Hope this is useful. >> >> >> >> >> >> Regards, >> >> >> >> Kenneth >> >> >> >> >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> RSA(R) Conference 2012 >> >> Mar 27 - Feb 2 >> >> Save $400 by Jan. 27 >> >> Register now! >> >> http://p.sf.net/sfu/rsa-sfdev2dev2 >> >> _______________________________________________ >> >> wxhaskell-devel mailing list >> >> wxhaskell-devel@lists.sourceforge.net >> >> https://lists.sourceforge.net/lists/listinfo/wxhaskell-devel >> >> >> > >> > >> > >> > ------------------------------------------------------------------------------ >> > RSA(R) Conference 2012 >> > Mar 27 - Feb 2 >> > Save $400 by Jan. 27 >> > Register now! >> > http://p.sf.net/sfu/rsa-sfdev2dev2 >> > _______________________________________________ >> > wxhaskell-devel mailing list >> > wxhaskell-devel@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/wxhaskell-devel >> > > > ------------------------------------------------------------------------------ RSA(R) Conference 2012 Mar 27 - Feb 2 Save $400 by Jan. 27 Register now! http://p.sf.net/sfu/rsa-sfdev2dev2 _______________________________________________ wxhaskell-devel mailing list wxhaskell-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wxhaskell-devel