[Dovecot] Sieve: problems installing in different prefix

Andreas Ntaflos daff at dword.org
Mon Sep 28 02:37:14 EEST 2009


Hi list, but mainly Stephan :)

when building and subsequently installing the new Sieve plugin I am 
coming across a small difficulty when it comes to "make install". The 
libraries lib90_sieve_plugin.* always get installed in the directory 
/usr/local/lib/dovecot/lda, no matter what "prefix" argument is supplied 
to "make install". Only the libraries seem affected, not the rest of the 
Sieve plugin distribution (i.e. sieve, sievec, sieve-test, ...).

Background: I like using XStow [1] to manage packages built from source. 
With XStow one can configure and build software like Dovecot and Sieve 
as usual (./configure && make) but then install it under a custom 
directory/prefix, like /usr/local/stow/dovecot-1.2.5. The "prefix" 
argument for "make install" is used for this, i.e.:

make install prefix=/usr/local/stow/dovecot-1.2.5

XStow is then used to create symlinks to the correct places in the file 
system. For example the Dovecot binary gets installed in 

/usr/local/stow/dovecot-1.2.5/sbin/dovecot

and a symbolic link is created by XStow:

/usr/local/sbin/dovecot -> ../stow/dovecot-1.2.5/sbin/dovecot

The advantages are clear: installing a software package is a matter of 
configuring, building and then installing under a custom directory, and 
letting XStow create symlinks. Updating is as easy as installing the new 
version in a parallel custom directory and letting XStow update the 
symlinks. Removing a software package just involves letting XStow remove 
the symlinks and doing an rm -rf on the custom directory. No more 
accidentally orphaned files or the need to keep the compiled source 
distribution around to be able to issue a "make uninstall".

Back to the problem: The Sieve source distribution seems to have some 
hard-coded setting to always install the libraries under 
/usr/local/lib/dovecot/lda and not honouring the "prefix" argument for 
"make install". This is probably a libtool issue, but I am not sure.

I know my way around the Autotools but here I am a bit lost. Looking at 
the generated Makefile in dovecot-1.2-sieve-0.1.12/src I can see the 
following:

moduledir = /usr/local/lib/dovecot/ 

It *should* look like this:

exec_prefix = ${prefix}
...
moduledir = ${exec_prefix}/lib/dovecot/ 

This explains why the install prefix is not honoured here. The 
"moduledir" has already been hardcoded, instead of prefixed. 

For comparison look at the Dovecot source distribution. Here all 
libraries are installed correctly under the specified prefix. An example 
is src/lib-sql. The generated Makefile includes these lines, which are 
correctly honouring the prefix:

exec_prefix = ${prefix}
...
moduledir = ${exec_prefix}/lib/dovecot
...
#sql_moduledir = $(moduledir)/sql
AM_CPPFLAGS = \
    -I$(top_srcdir)/src/lib \
    -DMODULEDIR=\""$(moduledir)"\" \
    $(SQL_CFLAGS)

The last few lines seems to make sure that gcc uses the defined 
moduledir, but as usual generated code is not immediately comprehensible 
for the casual viewer :) 

The top-level generated Makefile also contains a correctly defined 
moduledir:

moduledir = ${exec_prefix}/lib/dovecot

So, which knobs have to be turned to have the Sieve source distribution 
use a correct "moduledir" and not a hardcoded path?

I hope I could explain the problem correctly and haven't drawn any wrong 
conclusions here. I will continue to investigate this and maybe even 
provide a patch if I find a solution but it is probably easier for the 
maintainer and author of the build system to look at this and determine 
what to do.

Anyway, apologies for this lengthy post. I hope it wasn't too long to 
read.

Andreas

[1] http://xstow.sourceforge.net/
-- 
Andreas Ntaflos 

GPG Fingerprint: 6234 2E8E 5C81 C6CB E5EC  7E65 397C E2A8 090C A9B4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
Url : http://dovecot.org/pipermail/dovecot/attachments/20090928/f712fb66/attachment.bin 


More information about the dovecot mailing list