GNOME Bugzilla – Bug 380534
Clarify Evolution's library requirements
Last modified: 2013-09-13 00:51:35 UTC
Evolution and related packages do not specify what versions of their library dependencies are required for a successful compilation. This leads to confusion among developers and contributors like myself, since it's not clear when a recently added feature of a required library can be used in Evolution. It also leads to confusion among users when Evolution fails to build because their installed libraries are not recent enough, even though all the dependency checks in the "configure" script passed. I'd like to see three things happen to resolve this: 1) Establish a clear policy for what library versions to require for development and stable releases. Harish needs to make the call on this. I think a reasonable policy is that development releases depend on the libraries provided by the most recent stable release of the GNOME Desktop Environment, and that these requirements are preserved into the next stable release of Evolution. So for example Evolution 2.9 and 2.10 should depend on the libraries provided by GNOME 2.16, Evolution 2.11 and 2.12 will depend on the libraries provided by GNOME 2.18, etc. 2) Once a policy is established, create a wiki page on go-evolution.org to track the version requirements for the current stable and development releases. Perhaps use a format similar to [1]. 3) Encode the version requirements into configure.in so that the configure script will fail when the build environment is not recent enough. This has been discussed a few times on IRC and the mailing lists, but I'm filing a bug report now to draw more attention to the issue and discuss it further in hopes of facilitating an executive decision. [1] http://live.gnome.org/TwoPointSeventeen/ExternalDependencies
Great response from Harish on evolution-hackers: http://mail.gnome.org/archives/evolution-hackers/2006-December/msg00008.html
I'm long overdue on following up on this. With GNOME 2.20 fast approaching and likely to ship with GTK+ 2.12 and GLib 2.14, this seems like a good time to audit the package version requirements in the configure.in files of Evolution and co. Regarding the three items in comment #0, I believe we reached consensus on #1. That consensus, as I understood it, is that all development versions of Evolution must successfully build on the latest stable GNOME platform. In other words, Evolution 2.11 must build on GNOME 2.18. We should not be using any new features in GTK+ 2.11 or GLib 2.13 at this time. That window will open up after GTK+ 2.12 and GLib 2.14 have shipped with GNOME 2.20, and we've branched Subversion to start work on Evolution 2.13. Item #2 -- tracking the version requirements on the developer wiki -- is less important to me, and I don't believe any steps have been taken toward this. I want to focus now on item #3. Few if any of the configure scripts check the GTK+ and GLib version numbers, and consequently when we started using new GTK+ 2.10 and GLib 2.12 features last year we got lots of questions and complaints from users about why their Evolution builds were failing and what all those missing GTK+/GLib symbols were. In the interest of avoiding a repeat of that in the coming months, I spent some time sorting through the configure.in files in Evolution, E-D-S, Evo-Exchange, and GtkHTML and tried to organize the package version requirement in such a way that it should be easier to keep track of them in future releases.
Created attachment 92513 [details] [review] configure.in patch for evolution In this patch, as in others, I try to check package versions early in the configure process. Later on, the various components and modules can just specify the package names they need and not have to worry about versions since that's all been checked already. I also boiled down the lists component requirements that get passed to PKG_CHECK_MODULES() by removing lower-level packages that are covered by higher-level packages (e.g. remove libxml-2.0 when libglade-2.0 is specified, since libglade-2.0 requires libxml-2.0).
Created attachment 92514 [details] [review] configure.in package for evolution-data-server Same deal here.
Created attachment 92515 [details] [review] configure.in patch for evolution-exchange ... and here.
Created attachment 92516 [details] [review] configure.in patch for gtkhtml In this patch I also eliminated some conditional compilation switches that test for ancient versions of GTK+ and Pango: USE_GTKFILECHOOSER (Requires GTK+ >= 2.4; we're on 2.10) PANGO_1_5_OR_HIGHER (Requires Pango >= 1.5; we're on 1.16)
Matthew, I checked the versions and Im ok with that. I haven't really applied, tested the patch and Im sure that you would do it before committing it. Just check the pilot version alone. Im not sure of that. Otherwise looks good.
I added the patches to the Fedora 7 packages which build against GNOME 2.18. I also built patched packages directly from Subversion. Both went fine. I kind of blindly bumped the gnome-pilot version to 2.0.15, just because that version seems fairly stable, it fixes a lot of bugs that plagued earlier versions, and it works well with pilot-link 0.12. We can always tweak that or any of the version requirements if they're not quite right. Committed to Subversion trunk: evolution - revision 33863 evolution-data-server - revision 7880 evolution-exchange - revision 1400 gtkhtml - revision 8500 Thanks for reviewing this so quickly!