Re: [Evolution-hackers] [Evolution] New version of the Evo SVN Makefile - patch for Debian Etch
- From: Patrick Ohly <Patrick Ohly gmx de>
- To: psmith gnu org
- Cc: Evolution <evolution-list gnome org>, evolution-hackers gnome org
- Subject: Re: [Evolution-hackers] [Evolution] New version of the Evo SVN Makefile - patch for Debian Etch
- Date: Thu, 25 Oct 2007 19:05:02 +0200
On Di, 2007-10-02 at 18:42 -0400, Paul Smith wrote:
> Anyway, if you want a simple way to build Evo from SVN without
> rebuilding all of Gnome (as with GARNOME), give it a whirl!
>
> http://mad-scientist.us/evolution.html
Thanks a lot for this, I found it very useful. It did not quite do what
I needed (building on Debian Etch), so I patched it (attached):
* I don't need evolution-exchange and evolution-webcal, so I added
the possibility to remove packages and enable flags from
PACKAGES via local.mk: IGNORE_PACKAGES, IGNORE_FEATURES
* Added package check for debian-etch, reusing the rules for
Ubuntu: distro := debian-etch in local.mk
* Etch's gtk+-2.0 and intltool are not recent enough for 2.12. I
compiled them separately first and pointed with PKG_CONFIG_PATH,
LD_LIBRARY_PATH (otherwise configure check for glib fails!) and
PATH towards that installation (my local.mk is attached). The
Makefile had to be changed to preserve these values.
* I don't have root priviliges on the SyncEvolution nightly test
machine, so I needed a way to disable sudo.
* Added "export BONOBO_ACTIVATION_PATH=$prefix/lib/bonobo/servers"
to evolution-svn to pick the right components for 2.12.1
* gnome-doc-utils was needed. I suspect it also needs to be added
to ubuntu-PREREQS.
I have successfully built Evolution 2.12.1 with these modifications on
my desktop and without root priviliges on the SyncEvolution nightly test
machine.
One big warning! After starting Evolution 2.12.1 once and (after killing
all of its processes) restarting Evolution 2.6.3 from Debian Etch the
latter crashed reproducibly with:
(evolution-2.6:19361): GLib-GObject-WARNING **: instance of invalid non-instantiatable type `(null)'
(evolution-2.6:19361): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(evolution-2.6:19361): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `ESourceGroup'
(evolution-2.6:19361): e-data-server-CRITICAL **: e_source_group_peek_name: assertion `E_IS_SOURCE_GROUP (group)' failed
After restoring .gconf and .gconfd from a backup (= kill gconfd, copy
whole directory hierarchy) it worked again. I did not investigate in
more detail, but I saw that 2.12.1 had modified the source definitions
in .gconf/%gconf-tree.xml.
So unless precautions are taken, updating from 2.6.3 to 2.12.1 is a
one-way street!
--
Bye, Patrick Ohly
--
Patrick Ohly gmx de
http://www.estamos.de/
CCACHE :=
SUDO := true
prefix := /usr/local/evo-svn
distro := debian-etch
V :=
branch := 2.20
IGNORE_PACKAGES := evolution-exchange evolution-webcal
IGNORE_FEATURES := --enable-exchange=yes
PKG_CONFIG_PATH := /home/patrick/evo-svn/gtk+2.0/lib/pkgconfig:$(PKG_CONFIG_PATH)
export PKG_CONFIG_PATH
PATH := /home/patrick/evo-svn/gtk+2.0/bin:$(PATH)
LD_LIBRARY_PATH := /home/patrick/evo-svn/gtk+2.0/lib:$(LD_LIBRARY_PATH)
export LD_LIBRARY_PATH
*** /scratch/evo-src/Makefile.orig 2007-10-03 00:23:39.000000000 +0200
--- Makefile 2007-10-25 19:00:20.000000000 +0200
***************
*** 58,66 ****
--- 58,81 ----
# Comment this out if you don't want to use ccache
CCACHE := ccache
+ # Set this to "true" if you have to build without root priviliges.
+ # Beware that file locking of a local mailbox file may be affected!
+ # Installing without root priviliges is not recommended if you
+ # get email from a local file.
+ # SUDO := true
+ SUDO := sudo
+
# Set this to empty if you want to see the rules being run
V := @
+ # Optional packages which are not to be built, e.g.:
+ # IGNORE_PACKAGES := evolution-exchange evolution-webcal
+ IGNORE_PACKAGES :=
+
+ # Optional features which are not to be enabled, e.g.:
+ # IGNORE_FEATURES := --enable-exchange=yes
+ IGNORE_FEATURES :=
+
# You can override the above by creating local.mk setting these vars
# if you don't want to modify this makefile.
***************
*** 76,92 ****
# These are the prerequisite packages needed on the system before we can build
# Evo. There are different ways to check for them, based on distro.
! DISTROS := ubuntu
ubuntu-PREREQS := \
gtk-doc-tools subversion libldap2-dev libnss-dev libnspr-dev \
libgail-dev flex bison build-essential evolution-dev \
icon-naming-utils $(CCACHE)
# These are the packages we need to build from SVN, and any config/make/etc.
# customized options we need to provide.
! PACKAGES := libsoup gtkhtml gnome-icon-theme evolution-data-server \
! evolution evolution-exchange evolution-webcal
CONFIG_VARS = CC='$(CC)' CFLAGS=-g
CONFIG_OPTS = --prefix='$(prefix)'
--- 91,114 ----
# These are the prerequisite packages needed on the system before we can build
# Evo. There are different ways to check for them, based on distro.
! DISTROS := ubuntu debian-etch
ubuntu-PREREQS := \
gtk-doc-tools subversion libldap2-dev libnss-dev libnspr-dev \
libgail-dev flex bison build-essential evolution-dev \
icon-naming-utils $(CCACHE)
+ debian-etch-PREREQS := \
+ gtk-doc-tools subversion libldap2-dev libnss3-dev libnspr4-dev \
+ libgail-dev flex bison build-essential evolution-dev \
+ icon-naming-utils gnome-doc-utils \
+ $(CCACHE)
+
# These are the packages we need to build from SVN, and any config/make/etc.
# customized options we need to provide.
! PACKAGES := $(filter-out $(IGNORE_PACKAGES), \
! libsoup gtkhtml gnome-icon-theme evolution-data-server \
! evolution evolution-exchange evolution-webcal )
CONFIG_VARS = CC='$(CC)' CFLAGS=-g
CONFIG_OPTS = --prefix='$(prefix)'
***************
*** 96,102 ****
INSTALL_OPTS =
CCACHE_DIR := $(CURDIR)/ccache
! PKG_CONFIG_PATH := $(prefix)/lib/pkgconfig:$(prefix)/share/pkgconfig
export CCACHE_DIR PKG_CONFIG_PATH
# ----- Per-package configuration and build options
--- 118,124 ----
INSTALL_OPTS =
CCACHE_DIR := $(CURDIR)/ccache
! PKG_CONFIG_PATH := $(prefix)/lib/pkgconfig:$(prefix)/share/pkgconfig:$(PKG_CONFIG_PATH)
export CCACHE_DIR PKG_CONFIG_PATH
# ----- Per-package configuration and build options
***************
*** 151,157 ****
MKDIR := mkdir -p
RM := rm -f
RMDIR := rm -rf
- SUDO := sudo
SVN := svn
TOUCH := touch
UNPACK := tar xjf
--- 173,178 ----
***************
*** 255,261 ****
$(STAMPDIR)/%.config: $(STAMPDIR)/%.patch
$V cd '$*' \
&& $(CONFIG_VARS) $($*_CONFIG_VARS) \
! ./autogen.sh $(CONFIG_OPTS) $($*_CONFIG_OPTS)
@ $(MKSTAMP)
# ----- patch SVN workspaces
--- 276,284 ----
$(STAMPDIR)/%.config: $(STAMPDIR)/%.patch
$V cd '$*' \
&& $(CONFIG_VARS) $($*_CONFIG_VARS) \
! ./autogen.sh \
! $(filter-out $(IGNORE_FEATURES), \
! $(CONFIG_OPTS) $($*_CONFIG_OPTS))
@ $(MKSTAMP)
# ----- patch SVN workspaces
***************
*** 341,347 ****
# This is for DPKG systems. Someone else will have to write the
# equivalent RPM code.
! .PHONY: check-prereqs- check-prereqs-ubuntu
check-prereqs-:
@$(ECHO) "Cannot verify system package prerequisites."; \
$(ECHO) "I'm trying to build anyway..."; \
--- 364,370 ----
# This is for DPKG systems. Someone else will have to write the
# equivalent RPM code.
! .PHONY: check-prereqs- check-prereqs-ubuntu check-prereqs-debian-etch
check-prereqs-:
@$(ECHO) "Cannot verify system package prerequisites."; \
$(ECHO) "I'm trying to build anyway..."; \
***************
*** 353,363 ****
$(ECHO) "Or to force a build, set 'distro' empty in the makefile."; \
exit 1
! check-prereqs-ubuntu:
@log="/tmp/evo-chk-prereqs.$$$$" \
&& $(RM) "$$log" \
&& $(TOUCH) "$$log" \
! && $(DPKG) -l $(sort $(ubuntu-PREREQS)) \
| while read s n rest; do \
case $$s in \
ii) echo "$$n" >> "$$log" ;; \
--- 376,386 ----
$(ECHO) "Or to force a build, set 'distro' empty in the makefile."; \
exit 1
! check-prereqs-ubuntu check-prereqs-debian-etch: check-prereqs-%:
@log="/tmp/evo-chk-prereqs.$$$$" \
&& $(RM) "$$log" \
&& $(TOUCH) "$$log" \
! && $(DPKG) -l $(sort $($*-PREREQS)) \
| while read s n rest; do \
case $$s in \
ii) echo "$$n" >> "$$log" ;; \
***************
*** 367,373 ****
done; \
num=`wc -l < "$$log"`; \
$(RM) "$$log"; \
! if [ "$$num" != "$(words $(sort $(ubuntu-PREREQS)))" ]; then \
$(ECHO); \
$(ECHO) "Not all prerequisites are installed!"; \
$(ECHO) "Use 'aptitude install ...' on the above missing packages."; \
--- 390,396 ----
done; \
num=`wc -l < "$$log"`; \
$(RM) "$$log"; \
! if [ "$$num" != "$(words $(sort $($*-PREREQS)))" ]; then \
$(ECHO); \
$(ECHO) "Not all prerequisites are installed!"; \
$(ECHO) "Use 'aptitude install ...' on the above missing packages."; \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]