Awesome. I'll take a look in the morning. I might want the gtk3 bits to go in their own package, rather than managing the difference with version numbers; other than that a cursory glance says this is just spot on.
I'm not sure about the Hackage complaint... the thing uploaded to Hackage predates all gtk3 efforts, doesn't it? ~d On 2013-07-07 08:00, Hamish Mackenzie wrote: > I have had a go at doing the two .cabal files trick and it seems > to work. I have pushed the results here... > > http://patch-tag.com/r/hamish/gtk2hs > > You will probably need to "darcs rollback" or "darcs obliterate" > the two gtk3 patches you added to the main repo before it will work. > > I think obliterate might be better, although people will have to > pull do the same (or do a clean get). It should make the history > cleaner. > > The repo has three gtk.cabal files > > gtk.cabal-0 = Version 0.X and defaults to -f-gtk3 > gtk.cabal-3 = Version 3.X and defaults to -fgtk3 > gtk.cabal = Just a copy of gtk.cabal-3 > > I added a package.sh file that you can run like this... > ./package.sh > or > sh -ex package.sh > > It installs source packages locally with cabal-src, then builds them > to make sure they work. > > I think the current gtk (0.12.4) in hackage is broken > * Gtk2 fails because Region is imported from Cairo and clashes > * Gtk3 fails because heirachy3.list is not included > > I have included fixes for both of these issues. > > Packages that can be built with gtk2 or gtk3 should > can include something like this in build-depends... > > gtk (>=0.12.4.1 && <0.13) || (>=3.12.4.1 && <3.13) > > Then when building you can choose the gtk version with > cabal install --constraint='gtk<3' > or > cabal install --constraint='gtk>=3' > > To call a different function when using Gtk3 use CPP > like this... > > #if MIN_VERSION_gtk(3,0,0) > > On 26 May 2013, at 04:36, Daniel Wagner <wagne...@seas.upenn.edu> > wrote: > >> On 2013-05-25 11:54, Hamish Mackenzie wrote: >>> pkg-config treats gtk3 as a whole new package, so it might make sense >>> for gtk2hs to do the same. But I think we could consider using the >>> major version. We could call the new one gtk-3.12.x. Cabal should >>> let you install both gtk-0.12 and gtk-3.12 at the same time. >> >> Sure, I have no strong feelings about using version number vs. package >> name. >> >>> Am I right in thinking you are building a nice clean Gtk3 source tree >>> that has no 2.X specific code and #ifdefs (and a Gtk2 one without the >>> Gtk3 code)? >> >> Right, that's the idea. >> >>> If you are worried about duplicating all the code then another option >>> would be to stick with the status quo and release two packages >>> to Hackage with exactly the same code but different .cabal files. >> >> Well, this is a very cool idea. I like it a lot. >> >>> The only difference between these would be how the -fgtk3 flag >>> worked. >>> We could remove it and hard code the behaviour in the .cabal files. >>> >>> gtk.cabal with version 0.12.x - would work like -f-gtk3 >>> gtk.cabal with version 3.12.x - would work like -fgtk3 >>> >>> I don't have any strong feelings either way. I suspect a clean Gtk3 >>> source tree will make adding more Gtk3 support easier and #ifdefs >>> would make keeping Gtk2 code up to date easier. >>> >>> For gtksourceview and webkit I think multple .cabal files with shared >>> code using #ifdefs might be best as there is a lot less Gtk3 specific >>> code in those repos. >> >> Right, that seems reasonable. >> ~d >> >> ------------------------------------------------------------------------------ >> Try New Relic Now & We'll Send You this Cool Shirt >> New Relic is the only SaaS-based application performance monitoring >> service >> that delivers powerful full stack analytics. Optimize and monitor your >> browser, app, & servers with just a few lines of code. Try New Relic >> and get this awesome Nerd Life shirt! >> http://p.sf.net/sfu/newrelic_d2d_may >> _______________________________________________ >> Gtk2hs-devel mailing list >> Gtk2hs-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ Gtk2hs-devel mailing list Gtk2hs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel