[Dovecot] Problem rebuilding Centos 5/6 pigeonhole RPM from mercurial version

Juan C. Blanco jcblanco at fi.upm.es
Fri Feb 7 17:13:18 UTC 2014


Hi Stephan, I'm traying to rebuild the RH (Centos) EL5 and EL6 RPM with 
the last mercurial pigeonhole 0.4.2 version, but I'm having problems 
with the build.

I think that I've isolated the problem outside rpmbuild context.

I've downloaded dovecot and pigeonhole mercurial versions and built 
dovecot with the commands:

dovecot-2.2.10$ ./autogen.sh
dovecot-2.2.10$ ./configure INSTALL_DATA="install -c -p -m644" 
--enable-header-install --disable-static --with-nss --with-shadow 
--with-pam --with-gssapi=plugin --with-ldap=plugin --with-sql=plugin 
--with-mysql  --with-zlib   --with-sql-drivers --with-libcap  --with-db 
  --with-ssl=openssl --with-ssldir=/etc/pki/dovecot 
--with-notify=inotify --with-solr --with-docs
dovecot-2.2.10$ make
dovecot-2.2.10$ make install DESTDIR=/var/tmp/dovecot

after that, building pigeonhole with the commands

pigeonhole-0.4.2$ ./autogen.sh
pigeonhole-0.4.2$  ./configure INSTALL_DATA="install -c -p -m644" 
--build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu 
--target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr 
--exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin 
--sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include 
--libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var 
--sharedstatedir=/usr/com --mandir=/usr/share/man 
--infodir=/usr/share/info --with-dovecot=/var/tmp/dovecot 
--with-managesieve=yes
pigeonhole-0.4.2$ make
pigeonhole-0.4.2$ make install DESTDIR=/var/tmp/dovecot

works fine, but if I install pigeonhole in a different path, i.e.

pigeonhole-0.4.2$ make install DESTDIR=/var/tmp/pigeonhole

I get the following error

make[4]: Entering directory `/home/jc/pigeonhole-0.4.2/src/lib-sieve'
make[4]: Nothing to be done for `install-exec-am'.
test -z "/usr/lib64/dovecot" || mkdir -p -- 
"/var/tmp/pigeonhole/usr/lib64/dovecot"
  /bin/sh ../../libtool --mode=install /usr/bin/install -c 
'libdovecot-sieve.la' 
'/var/tmp/pigeonhole/usr/lib64/dovecot/libdovecot-sieve.la'
libtool: install: warning: relinking `libdovecot-sieve.la'
(cd /home/jc/pigeonhole-0.4.2/src/lib-sieve; /bin/sh ../../libtool 
--tag=CC --mode=relink gcc -std=gnu99 -g -O2 -Wall -W 
-Wmissing-prototypes -Wmissing-declarations -Wpointer-arith 
-Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime 
-Wstrict-aliasing=2 -I/usr/kerberos/include -o libdovecot-sieve.la 
-rpath /usr/lib64/dovecot sieve-settings.lo sieve-message.lo 
sieve-smtp.lo sieve-lexer.lo sieve-script.lo sieve-script-file.lo 
sieve-script-dict.lo sieve-ast.lo sieve-binary.lo sieve-binary-file.lo 
sieve-binary-code.lo sieve-binary-debug.lo sieve-parser.lo 
sieve-address.lo sieve-validator.lo sieve-generator.lo 
sieve-interpreter.lo sieve-runtime-trace.lo sieve-code-dumper.lo 
sieve-binary-dumper.lo sieve-result.lo sieve-error.lo sieve-objects.lo 
sieve-stringlist.lo sieve-comparators.lo sieve-match-types.lo 
sieve-address-parts.lo sieve-match.lo sieve-commands.lo sieve-code.lo 
sieve-actions.lo sieve-extensions.lo sieve-plugins.lo cmp-i-octet.lo 
cmp-i-ascii-casemap.lo mcht-is.lo mcht-contains.lo mcht-matches.lo 
tst-truefalse.lo tst-not.lo tst-anyof.lo tst-allof.lo tst-address.lo 
tst-header.lo tst-exists.lo tst-size.lo cmd-require.lo cmd-stop.lo 
cmd-if.lo cmd-keep.lo cmd-redirect.lo cmd-discard.lo ext-fileinto.lo 
ext-reject.lo ext-envelope.lo ext-encoded-character.lo sieve.lo 
../../src/lib-sieve/plugins/vacation/libsieve_ext_vacation.la 
../../src/lib-sieve/plugins/subaddress/libsieve_ext_subaddress.la 
../../src/lib-sieve/plugins/comparator-i-ascii-numeric/libsieve_ext_comparator-i-ascii-numeric.la 
../../src/lib-sieve/plugins/relational/libsieve_ext_relational.la 
../../src/lib-sieve/plugins/regex/libsieve_ext_regex.la 
../../src/lib-sieve/plugins/copy/libsieve_ext_copy.la 
../../src/lib-sieve/plugins/imap4flags/libsieve_ext_imap4flags.la 
../../src/lib-sieve/plugins/include/libsieve_ext_include.la 
../../src/lib-sieve/plugins/body/libsieve_ext_body.la 
../../src/lib-sieve/plugins/variables/libsieve_ext_variables.la 
../../src/lib-sieve/plugins/enotify/libsieve_ext_enotify.la 
../../src/lib-sieve/plugins/notify/libsieve_ext_notify.la 
../../src/lib-sieve/plugins/environment/libsieve_ext_environment.la 
../../src/lib-sieve/plugins/mailbox/libsieve_ext_mailbox.la 
../../src/lib-sieve/plugins/date/libsieve_ext_date.la 
../../src/lib-sieve/plugins/spamvirustest/libsieve_ext_spamvirustest.la 
../../src/lib-sieve/plugins/ihave/libsieve_ext_ihave.la 
../../src/lib-sieve/plugins/editheader/libsieve_ext_editheader.la 
../../src/lib-sieve/plugins/vnd.dovecot/debug/libsieve_ext_debug.la 
../../src/lib-sieve/plugins/vnd.dovecot/duplicate/libsieve_ext_duplicate.la 
../../src/lib-sieve/util/libsieve_util.la 
/home/jc/dovecot-2.2.10/src/lib-lda/libdovecot-lda.la 
/home/jc/dovecot-2.2.10/src/lib-storage/libdovecot-storage.la 
/home/jc/dovecot-2.2.10/src/lib-imap-storage/libimap-storage.la 
/home/jc/dovecot-2.2.10/src/lib-dovecot/libdovecot.la -export-dynamic 
-ldl -lrt -inst-prefix-dir /var/tmp/pigeonhole)
gcc -shared  .libs/sieve-settings.o .libs/sieve-message.o 
.libs/sieve-smtp.o .libs/sieve-lexer.o .libs/sieve-script.o 
.libs/sieve-script-file.o .libs/sieve-script-dict.o .libs/sieve-ast.o 
.libs/sieve-binary.o .libs/sieve-binary-file.o .libs/sieve-binary-code.o 
.libs/sieve-binary-debug.o .libs/sieve-parser.o .libs/sieve-address.o 
.libs/sieve-validator.o .libs/sieve-generator.o 
.libs/sieve-interpreter.o .libs/sieve-runtime-trace.o 
.libs/sieve-code-dumper.o .libs/sieve-binary-dumper.o 
.libs/sieve-result.o .libs/sieve-error.o .libs/sieve-objects.o 
.libs/sieve-stringlist.o .libs/sieve-comparators.o 
.libs/sieve-match-types.o .libs/sieve-address-parts.o 
.libs/sieve-match.o .libs/sieve-commands.o .libs/sieve-code.o 
.libs/sieve-actions.o .libs/sieve-extensions.o .libs/sieve-plugins.o 
.libs/cmp-i-octet.o .libs/cmp-i-ascii-casemap.o .libs/mcht-is.o 
.libs/mcht-contains.o .libs/mcht-matches.o .libs/tst-truefalse.o 
.libs/tst-not.o .libs/tst-anyof.o .libs/tst-allof.o .libs/tst-address.o 
.libs/tst-header.o .libs/tst-exists.o .libs/tst-size.o 
.libs/cmd-require.o .libs/cmd-stop.o .libs/cmd-if.o .libs/cmd-keep.o 
.libs/cmd-redirect.o .libs/cmd-discard.o .libs/ext-fileinto.o 
.libs/ext-reject.o .libs/ext-envelope.o .libs/ext-encoded-character.o 
.libs/sieve.o -Wl,--whole-archive 
../../src/lib-sieve/plugins/vacation/.libs/libsieve_ext_vacation.a 
../../src/lib-sieve/plugins/subaddress/.libs/libsieve_ext_subaddress.a 
../../src/lib-sieve/plugins/comparator-i-ascii-numeric/.libs/libsieve_ext_comparator-i-ascii-numeric.a 
../../src/lib-sieve/plugins/relational/.libs/libsieve_ext_relational.a 
../../src/lib-sieve/plugins/regex/.libs/libsieve_ext_regex.a 
../../src/lib-sieve/plugins/copy/.libs/libsieve_ext_copy.a 
../../src/lib-sieve/plugins/imap4flags/.libs/libsieve_ext_imap4flags.a 
../../src/lib-sieve/plugins/include/.libs/libsieve_ext_include.a 
../../src/lib-sieve/plugins/body/.libs/libsieve_ext_body.a 
../../src/lib-sieve/plugins/variables/.libs/libsieve_ext_variables.a 
../../src/lib-sieve/plugins/enotify/.libs/libsieve_ext_enotify.a 
../../src/lib-sieve/plugins/notify/.libs/libsieve_ext_notify.a 
../../src/lib-sieve/plugins/environment/.libs/libsieve_ext_environment.a 
../../src/lib-sieve/plugins/mailbox/.libs/libsieve_ext_mailbox.a 
../../src/lib-sieve/plugins/date/.libs/libsieve_ext_date.a 
../../src/lib-sieve/plugins/spamvirustest/.libs/libsieve_ext_spamvirustest.a 
../../src/lib-sieve/plugins/ihave/.libs/libsieve_ext_ihave.a 
../../src/lib-sieve/plugins/editheader/.libs/libsieve_ext_editheader.a 
../../src/lib-sieve/plugins/vnd.dovecot/debug/.libs/libsieve_ext_debug.a 
../../src/lib-sieve/plugins/vnd.dovecot/duplicate/.libs/libsieve_ext_duplicate.a 
../../src/lib-sieve/util/.libs/libsieve_util.a 
/home/jc/dovecot-2.2.10/src/lib-imap-storage/.libs/libimap-storage.a 
-Wl,--no-whole-archive  -Wl,--rpath -Wl,/usr/lib64/dovecot 
-L/home/jc/dovecot-2.2.10/src/lib-storage/.libs 
-L/home/jc/dovecot-2.2.10/src/lib-dovecot/.libs 
-L/var/tmp/pigeonhole/usr/lib64/dovecot -L/usr/lib64/dovecot 
-ldovecot-lda -ldovecot-storage -ldovecot -ldl -lrt  -Wl,-soname 
-Wl,libdovecot-sieve.so.0 -o .libs/libdovecot-sieve.so.0.0.0
/usr/bin/ld: cannot find -ldovecot-lda
collect2: ld returned 1 exit status
libtool: install: error: relink `libdovecot-sieve.la' with the above 
command before installing it
make[4]: *** [install-dovecot_pkglibLTLIBRARIES] Error 1
make[4]: Leaving directory `/home/jc/pigeonhole-0.4.2/src/lib-sieve'
make[3]: *** [install-am] Error 2
make[3]: Leaving directory `/home/jc/pigeonhole-0.4.2/src/lib-sieve'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/home/jc/pigeonhole-0.4.2/src/lib-sieve'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/jc/pigeonhole-0.4.2/src'

Note that in the link command there are library paths for
  -L/home/jc/dovecot-2.2.10/src/lib-storage/.libs
  -L/home/jc/dovecot-2.2.10/src/lib-dovecot/.libs

while there is not an equivalent one for the libdovecot-lda
  -Lhome/jc/dovecot-2.2.10/src/lib-lda/.libs

Perhaps some problem with libtool is not generating the right library paths?

In the first case, since dovecot and pigeonhole where installed in the 
same path, the library was found in the installation path
  -L/var/tmp/pigeonhole/usr/lib64/dovecot
but in the second case (the normal if building two separate rpm) the 
pigeonhole installation path does not contains the dovecot libaries.

I'm not a developper and am not familiar enough with libtool, so I'm not 
able to determine the reason of the error since the DEPENDENCIES and 
LIBADD definitions in src/lib-sieve/Makefile.am
seems to be correct

ibdovecot_sieve_la_DEPENDENCIES = \
         $(plugins) \
         $(top_builddir)/src/lib-sieve/util/libsieve_util.la \
         $(LIBDOVECOT_LDA_DEPS) \
         $(LIBDOVECOT_STORAGE_DEPS) \
         $(LIBDOVECOT_DEPS)
libdovecot_sieve_la_LIBADD = \
         $(plugins) \
         $(top_builddir)/src/lib-sieve/util/libsieve_util.la \
         $(LIBDOVECOT_LDA) \
         $(LIBDOVECOT_STORAGE) \
         $(LIBDOVECOT)

I apologize for the long message, hope you can help on this.

Regards
Juan C. Blanco--
+----------------------------------------------------------------+
| Juan C. Blanco                                                 |
|                                                                |
|  Centro de Calculo              |                              |
|  Facultad de Informatica U.P.M. |  E-mail: jcblanco at fi.upm.es  |
|  Campus de Montegancedo         |                              |
|  Boadilla del Monte             |  Tel.:    (+34) 91 336 7466  |
|  28660 MADRID (Spain)           |  Fax :    (+34) 91 336 6913  |
+----------------------------------------------------------------+


More information about the dovecot mailing list