Re: [Evolution-hackers] [Evolution] New version of the Evo SVN Makefile - patch for Debian Etch



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]