Hi Jim,
On Tue, 25 Jun 2024, at 9:45 AM, fenton@xxxxxxxxxxxxxxx wrote:
I'm trying to compile Cyrus imapd from source because I want to enable jmap. <waves at jmappers> Having a couple problems doing this.Using the procedure at http://www.cyrusimap.org/imap/developer/compiling.html on Debian Bookworm:1. Running the commandautoreconf -i -s
, I keep getting warnings about a bunch of macros being obsolete, interspersed with messages telling me to run autoupdate. I have run autoupdate, but still get the warnings. Not sure whether these should be ignored or not.
Those are really warnings for maintainers, not for people just compiling the software, so you can ignore them. You don't need to run autoupdate either. You get them because Bookworm's autotools packages are fairly new, and Cyrus has some old stuff to accommodate working with older autotools versions.
2. Get the following error:configure: error: Unit tests explicitly requested, but CUnit library is not installedI'm not familiar with CUnit, so I looked for a Debian package by that name. Closest thing was libcunit1, which I installed but didn't fix the error.
On Debian, packages like "libfoo" are runtime packages. They're used by software that has already been compiled. If you're compiling software, you'll also need the compile time packages, which are called like "libfoo-dev". So in this case you'll want "libcunit1-dev". The same pattern applies for all the other dependencies.
Ended up working around this by removing --enable-unit-tests from the configure command, which was successful. Is there a reason for people just compiling imapd to enable unit tests?
They can be useful for detecting subtle incompatibilities on new or unusual platforms. But if you're using Debian stable on x86_64 and not making code changes, there's not much to be gained from running the unit tests.
3. The make command fails with an error:imap/mbpath.c:119:13: error: ‘find_tier’ defined but not used [-Werror=unused-function] 119 | static void find_tier(const char *key, const char *val __attribute__((unused)), void *rock) | ^~~~~~~~~This one is curious; both the definition and use of the function are inside a#ifdef USE_XAPIAN
conditional. Any thoughts on what would be causing this?
That's weird. Do you have Xapian enabled in the build? If not, does enabling Xapian (and installing the dependencies it wants) make it go away? Either way, it's odd that it sees one and not the other when they're both behind the same ifdef guard. You could open a Github issue for this and attach your config.log, redacted as necessary.
But without changing anything else about what you're doing, you might be able to just work around it by running configure like this:
./configure CFLAGS=-Wno-unused-function [your other configure args...]
But that inconsistency is weird...
I'll probably be back with more questions once I get past this...
Good luck! :)
ellie