On Fri, 2007-08-24 at 09:03 +0100, Peter Saffrey wrote: > > Or, you can build the latest version yourself if you want to go that > > route. It's not trivial but it's not too bad.
> I've had a quick go at this. Evo 2.12 is not available from the main > downloads page: > > http://www.gnome.org/projects/evolution/download.shtml As others have mentioned, until the code is released you won't be able to download prebuilt versions. That's why I said above you need to build it. > So I used svn to get the latest version. This required a little guess > work since the svn instructions were generic to Gnome and I only wanted > Evolution. Reid has given you a pointer to specific Evo instructions. These could have also been found via Google very quickly, with a search like "build evolution from svn", where the page Reid references will be the first thing that shows up. > The compilation instructions were generic GNU instructions and said > there would be a configure script, which there wasn't. I tried make but > it said no targets. I tried running "./autogen.sh" and it said "You need > to install gnome-common from the GNOME CVS" - this is probably because > I'm trying to build in a user directory so I don't overwrite the old > version. Gnome is a very large suite of applications, and Evolution is one part of that, and uses a large number of base Gnome libraries. This means that to compile Evo you have to have the developer packages for all the Gnome libraries that Evo needs. Be default on modern distributions these are not included, since they're not usually needed and they take up a lot of disk space. However, they ARE packaged and they can easily be installed (once you know what to do). > I don't want to spend hours fighting with it, so I guess I'll > just wait for the package version of 2.12 to come out in October. Based on a info from the web and a lot of help from people like Reid, I've created a makefile that should make this pretty simple; this is how I do it: sudo mkdir /opt/evo-src /opt/evo sudo chown $USER /opt/evo-src /opt/evo cd /opt/evo-src cp ~/Makefile . make It will do everything for you, including checking out the SVN versions of libsoup, gtkhtml, evolution-*, then configuring, building, and installing, all in the right order. The nice thing about using make is that next week (or tomorrow) you can run "make" again, and it will check if there have been any updates to any of the SVN code and if so, update it, redo the configuration, install, etc. for the parts that are changed. It works quite well, IME. My only caveat is that the check to see whether you have all the packages installed you need (the check-prereqs target) is (a) specific to Ubuntu 7.04, and (b) might not list everything you actually need, since I (stupidly) didn't jot down all the packages I needed to install when I did it first. If you have changes or updates, please let me know! You can also see if there are updates without doing anything else with: make check-updates And finally, you can view the ChangeLog updates since your last build (more info than just knowing which files changed) with: make check-changelog > I must say, it's these kind of problems that made it a relief to move > from Linux to Windows a year ago. A working PIM seems like a pretty > fundamental part of a modern OS, but Evolution is the only choice under > Linux and it's flaky and unreliable. Even if you've got plenty of > experience building software, missing or inadequate documentation means > it's always a struggle. > > I guess it's too much to expect that Linux software will eventually have > the "it just works" quality, but I keep hoping. I understand your frustration but really, these kinds of comments aren't helpful. I agree that Evolution's support of Exchange has had a long and rocky road; in fact until last summer I was using a complex setup where I would use fetchmail to download all messages from my Exchange server via IMAP, EXCEPT meeting requests, then I would use Evo's Exchange support ONLY to handle my shared calendar. Even given a few annoying things that still exist in the current SVN codebase (some of which I still hope will be fixed before 2.12 is released), 2.12 is much, much better than any previous version. I can't address your "super slow" issue directly, except to say that I definitely try to avoid having too many messages in any given folder; my largest folder is "Deleted Items" with 2300 messages; my largest "regular" folder has <500 messages. I don't know if that's an issue for you. I do hope you try my makefile (or the instructions Reid pointed you to) and see if your problem is fixed or not. If not, it would be great if you could help the Evo developers find and fix your issues. Let me just make a few points to your general statement though: * Almost everything in Linux really DOES "just work" these days, maybe not quite as easily as a Mac, with it's restricted hardware platform support, but certainly at least as well as Windows. * The places where things don't "just work" are almost exclusively due to interacting with proprietary environments; there's only so much people can do in the face of unpublished 3rd party interfaces. Evolution is a fine mail client for standard protocols like POP, IMAP, etc. It doesn't work that well for proprietary, unpublished interfaces like Exchange. It sucks but where does the blame really lie here? I realize that assigning blame doesn't make broken things work better, and I sympathize with that point of view, but at the same time you have to vent your frustrations in the right direction. * Building packages from source is NOT intended to be trivial and plug-n-play, unless you go to a distro like Gentoo (and they have their own problems). That's why we have distributions. You may be frustrated that it was not simple but consider this: when was the last time Microsoft offered to let you build their current codebase so you could work around a bug in their software? Anyway, good luck and let me know if you have problems with my makefile. -- ----------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> http://make.paulandlesley.org "Please remain calm--I may be mad, but I am a professional."--Mad Scientist
#!/usr/bin/make -f # # Build (debuggable) Evo from SVN HEAD # # Author: Paul Smith <[EMAIL PROTECTED]> # # Also you can look here: # http://www.go-evolution.org/Compiling_Evolution_from_SVN # # --------------- User Customization --------------- # Feel free to change these if you like # Where to install Evo. DO NOT use /usr here for any system controlled by a # package manager (rpm, dpkg) prefix := /opt/evo # Comment this out if you don't want to use ccache CCACHE := ccache # --------------- Configuration Setup --------------- # You shouldn't need to touch anything below here! SVNURL := http://svn.gnome.org/svn PACKAGES := libsoup gtkhtml evolution-data-server \ evolution evolution-exchange evolution-webcal PREREQS := gtk-doc-tools subversion libldap2-dev libnss-dev libnspr-dev \ flex bison build-essential evolution-dev $(CCACHE) # gnome-core-devel libgail-gnome-dev CONFIG_VARS = CC='$(CCACHE) gcc' CFLAGS=-g CONFIG_OPTS = --prefix='$(prefix)' BUILD_VARS = BUILD_OPTS = INSTALL_VARS = INSTALL_OPTS = CCACHE_DIR := $(CURDIR)/ccache PKG_CONFIG_PATH := $(prefix)/lib/pkgconfig export CCACHE_DIR PKG_CONFIG_PATH # ----- Per-package configuration and build options libsoup_CONFIG_VARS = libsoup_CONFIG_OPTS = libsoup_BUILD_VARS = libsoup_BUILD_OPTS = libsoup_INSTALL_VARS = libsoup_INSTALL_OPTS = gtkhtml_CONFIG_VARS = gtkhtml_CONFIG_OPTS = gtkhtml_BUILD_VARS = gtkhtml_BUILD_OPTS = gtkhtml_INSTALL_VARS = gtkhtml_INSTALL_OPTS = evolution-data-server_CONFIG_VARS = evolution-data-server_CONFIG_OPTS = --with-openldap=yes \ --enable-gnome-keyring=yes \ --with-e2k-debug evolution-data-server_BUILD_VARS = evolution-data-server_BUILD_OPTS = evolution-data-server_INSTALL_VARS = evolution-data-server_INSTALL_OPTS = evolution_CONFIG_VARS = evolution_CONFIG_OPTS = --with-openldap=yes --enable-nntp=yes \ --enable-ipv6=yes --enable-test-component=yes \ --enable-nss=yes --enable-smime=yes \ --enable-plugins=all --enable-cairo-calendar=yes \ --enable-exchange=yes --with-e2k-debug \ --enable-imap4=yes evolution_BUILD_VARS = # We have to run with errors off here because we don't have permissions # to install into /var/lib/scrollkeeper/scrollkeeper_docs evolution_BUILD_OPTS = -k evolution_INSTALL_VARS = # We have to ignore errors here because of a bug: # make[4]: Entering directory `/opt/tmp/evo-src/evolution/shell' # /bin/bash ../mkinstalldirs /opt/tmp/evo/bin # mkdir -p -- /opt/tmp/evo/bin # /bin/bash ../libtool --mode=install /usr/bin/install -c evolution /opt/tmp/evo/bin/evolution # libtool: install: warning: `libeshell.la' has not been installed in `/opt/tmp/evo/lib/evolution/2.12' # /usr/bin/install -c .libs/evolution /opt/tmp/evo/bin/evolution # test -z "/opt/tmp/evo/lib/evolution/2.12/components" || mkdir -p -- "/opt/tmp/evo/lib/evolution/2.12/components" # /bin/bash ../libtool --mode=install /usr/bin/install -c 'libevolution-test.la' '/opt/tmp/evo/lib/evolution/2.12/components/libevolution-test.la' # libtool: install: warning: relinking `libevolution-test.la' # (cd /opt/tmp/evo-src/evolution/shell; /bin/bash ../libtool ... ) # ccache gcc -shared .libs/Evolution-common.o .libs/Evolution-skels.o .libs/Evolution-stubs.o .libs/evolution-test-component.o -Wl,--rpath -Wl,/opt/tmp/evo/lib/evolution/2.12 -L/opt/tmp/evo/lib/evolution/2.12 -leshell -L/usr/lib -lgnomeui-2 -lSM -lICE -lgnomevfs-2 -lgnome-keyring -lgconf-2 -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lart_lgpl_2 -lpangoft2-1.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lbonobo-2 -lbonobo-activation -lgmodule-2.0 -ldl -lORBit-2 -lgthread-2.0 -lrt -lgobject-2.0 -lglib-2.0 -Wl,--export-dynamic -pthread -Wl,-soname -Wl,libevolution-test.so -o .libs/libevolution-test.so # /usr/bin/ld: cannot find -leshell # collect2: ld returned 1 exit status # libtool: install: error: relink `libevolution-test.la' with the above command before installing it # make[4]: *** [install-componentLTLIBRARIES] Error 1 # make[4]: Leaving directory `/opt/tmp/evo-src/evolution/shell' # make[3]: *** [install-am] Error 2 # make[3]: Leaving directory `/opt/tmp/evo-src/evolution/shell' # make[2]: *** [install] Error 2 # make[2]: Leaving directory `/opt/tmp/evo-src/evolution/shell' # make[1]: *** [install-recursive] Error 1 # make[1]: Leaving directory `/opt/tmp/evo-src/evolution' evolution_INSTALL_OPTS = ; true evolution-exchange_CONFIG_VARS = evolution-exchange_CONFIG_OPTS = --with-openldap=yes --with-e2k-debug evolution-exchange_BUILD_VARS = evolution-exchange_BUILD_OPTS = evolution-exchange_INSTALL_VARS = evolution-exchange_INSTALL_OPTS = evolution-webcal_CONFIG_VARS = evolution-webcal_CONFIG_OPTS = evolution-webcal_BUILD_VARS = evolution-webcal_BUILD_OPTS = evolution-webcal_INSTALL_VARS = evolution-webcal_INSTALL_OPTS = # ----- STAMPDIR := .stamp # Commands CP := cp -p CPDIR := cp -a ECHO := echo LINK := ln -s MKDIR := mkdir -p RM := rm -f RMDIR := rm -rf SUDO := sudo SVN := svn TOUCH := touch UNPACK := tar xjf WGET := wget MKSTAMP = $(TOUCH) '$(CURDIR)/$@' # Make sure we look in the new location for apps PATH := $(prefix)/bin:$(PATH) export PATH $(shell $(MKDIR) $(CURDIR)/$(STAMPDIR)) STAMPTYPES := update patch config build install # ----- all target # All means everything is installed .PHONY: all all-install all: all-install $(STAMPDIR)/setup all-install: $(patsubst %,$(STAMPDIR)/%.install,$(PACKAGES)) # Make sure none of the targets are considered intermediate .PRECIOUS: $(foreach X,$(STAMPTYPES),$(STAMPDIR)/%.$X) \ $(addsuffix /.svn,$(PACKAGES)) # ----- final setup operations $(STAMPDIR)/setup: $(STAMPDIR)/evolution-data-server.install @echo "Setting privileges (requires $(SUDO)!)..." \ && $(SUDO) chgrp mail $(prefix)/libexec/camel-lock-helper-* \ && $(SUDO) chmod g+s $(prefix)/libexec/camel-lock-helper-* @$(MKSTAMP) # ----- install SVN workspaces $(STAMPDIR)/%.install: $(STAMPDIR)/%.build cd '$*' \ && $(INSTALL_VARS) $($*_INSTALL_VARS) \ $(MAKE) install $(INSTALL_OPTS) $($*_INSTALL_OPTS) @$(MKSTAMP) # ----- build SVN workspaces $(STAMPDIR)/%.build: $(STAMPDIR)/%.config cd '$*' \ && $(BUILD_VARS) $($*_BUILD_VARS) \ $(MAKE) $(BUILD_OPTS) $($*_BUILD_OPTS) @$(MKSTAMP) # ----- configure SVN workspaces $(STAMPDIR)/%.config: $(STAMPDIR)/%.patch cd '$*' \ && $(CONFIG_VARS) $($*_CONFIG_VARS) \ ./autogen.sh $(CONFIG_OPTS) $($*_CONFIG_OPTS) @$(MKSTAMP) # ----- patch SVN workspaces $(STAMPDIR)/%.patch: $(STAMPDIR)/%.update @$(MKSTAMP) # ----- update SVN workspaces getsvnrev = `$(SVN) info $(1) | sed -n 's/^Revision: \([0-9][0-9]*\).*/\1/p'` $(STAMPDIR)/%.update: %/.svn FORCE | check-prereqs cd '$*' \ && head="$(call getsvnrev,-r HEAD)" \ && if [ "$(call getsvnrev,)" = "$$head" ]; then \ $(ECHO) "No SVN update needed for $*."; \ else \ $(SVN) update; \ $(MKSTAMP); \ fi FORCE: %/.svn: $(SVN) checkout '$(SVNURL)/$*/trunk' '$*' @$(TOUCH) '$(CURDIR)/$(STAMPDIR)/$*.update' .PHONY: check-update check-update: @for pkg in $(PACKAGES); do \ ( \ cd "$$pkg"; \ head="$(call getsvnrev,-r HEAD)"; \ if [ "$(call getsvnrev,)" = "$$head" ]; then \ $(ECHO) "No SVN update needed for $$pkg."; \ else \ $(ECHO) "$$pkg has SVN updates available:"; \ $(SVN) status -q -u; \ fi; \ ); \ done .PHONY: check-changelog check-changelog: @for pkg in $(PACKAGES); do \ ( \ cd "$$pkg"; \ head="$(call getsvnrev,-r HEAD)"; \ if [ "$(call getsvnrev,)" = "$$head" ]; then \ $(ECHO) "No SVN update needed for $$pkg."; \ else \ $(ECHO) "$$pkg has SVN updates available:"; \ log="/tmp/svnstatus.log.$$$$"; \ $(SVN) status -q -u 2>&1 | tee "$$log"; \ clogs=`while read stat rev fn; do \ case $$fn in \ ChangeLog|*/ChangeLog) echo "$$fn" ;; \ esac; \ done < "$$log" | sort`; \ [ -n "$$clogs" ] && $(SVN) diff -r "BASE:$$head" $$clogs; \ $(RM) "$$log"; \ fi; \ ); \ done # ----- create SVN workspaces # ----- check packages # This is for DPKG systsems. Someone else will have the write the # equivalent RPM code. .PHONY: check-prereqs check-prereqs: @installed=`dpkg -l $(PREREQS) | grep '^ii ' | wc -l`; \ if [ "$$installed" != "$(words $(PREREQS))" ]; then \ $(ECHO); \ $(ECHO) "Not all prerequisites are installed!"; \ $(ECHO) "Use 'aptitude install ...' on the above missing packages."; \ $(ECHO); \ exit 1; \ fi # ----- cleanup .PHONY: clean clean: $(RMDIR) $(STAMPDIR) $(BLDROOT)/* $(PREFIX) # ----- ordering # These ensure that packages are built in the correct order. In general, # we can't do the config until after we've installed the previous packages. # # Technically, we don't really need to reconfig after every install: most of # the time it would be enough to rebuild after the install; however, there's # no good way to make that work all the time, unless we had perfect # prerequisite declarations (knowing which installed files actually would # require a reconfig vs. a rebuild for example). $(STAMPDIR)/gtkhtml.config : $(STAMPDIR)/libsoup.install $(STAMPDIR)/evolution-data-server.config : \ $(STAMPDIR)/libsoup.install \ $(STAMPDIR)/gtkhtml.install $(STAMPDIR)/evolution.config : \ $(STAMPDIR)/libsoup.install \ $(STAMPDIR)/gtkhtml.install \ $(STAMPDIR)/evolution-data-server.install $(STAMPDIR)/evolution-exchange.config : \ $(STAMPDIR)/evolution-data-server.install \ $(STAMPDIR)/evolution.install $(STAMPDIR)/evolution-webcal.config : \ $(STAMPDIR)/evolution-data-server.install \ $(STAMPDIR)/evolution.install
_______________________________________________ Evolution-list mailing list Evolution-list@gnome.org http://mail.gnome.org/mailman/listinfo/evolution-list