After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 380534 - Clarify Evolution's library requirements
Clarify Evolution's library requirements
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: general
2.10.x (obsolete)
Other Linux
: Normal major
: ---
Assigned To: Evolution Shell Maintainers Team
Evolution QA team
Depends on: 373117
Blocks: 360946 373116 373837
 
 
Reported: 2006-11-29 15:53 UTC by Matthew Barnes
Modified: 2013-09-13 00:51 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
configure.in patch for evolution (16.66 KB, patch)
2007-07-27 01:47 UTC, Matthew Barnes
committed Details | Review
configure.in package for evolution-data-server (4.62 KB, patch)
2007-07-27 01:48 UTC, Matthew Barnes
committed Details | Review
configure.in patch for evolution-exchange (2.31 KB, patch)
2007-07-27 01:50 UTC, Matthew Barnes
committed Details | Review
configure.in patch for gtkhtml (6.66 KB, patch)
2007-07-27 01:56 UTC, Matthew Barnes
committed Details | Review

Description Matthew Barnes 2006-11-29 15:53:58 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
Comment 1 Matthew Barnes 2006-12-05 19:52:02 UTC
Great response from Harish on evolution-hackers:
http://mail.gnome.org/archives/evolution-hackers/2006-December/msg00008.html
Comment 2 Matthew Barnes 2007-07-27 01:37:06 UTC
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.
Comment 3 Matthew Barnes 2007-07-27 01:47:49 UTC
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).
Comment 4 Matthew Barnes 2007-07-27 01:48:54 UTC
Created attachment 92514 [details] [review]
configure.in package for evolution-data-server

Same deal here.
Comment 5 Matthew Barnes 2007-07-27 01:50:24 UTC
Created attachment 92515 [details] [review]
configure.in patch for evolution-exchange

... and here.
Comment 6 Matthew Barnes 2007-07-27 01:56:13 UTC
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)
Comment 7 Srinivasa Ragavan 2007-07-27 05:19:05 UTC
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.
Comment 8 Matthew Barnes 2007-07-27 16:44:10 UTC
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!