G'day, On Sat, Apr 28, 2012, at 11:39 AM, Carson Gaspar wrote:
Thanks for the bug report! > The below is on Solaris 11 using the studio compiler, using the snapshot > from the URL below. > > On 4/28/12 9:15 AM, Jeroen van Meeuwen (Kolab Systems) wrote: > > http://git.cyrusimap.org/cyrus-imapd/snapshot/cyrus-imapd-2.5-snapshot-autoconf-and-automake.tar.gz > > > > The canonical build process we think applies, generally speaking, is: > > > > $ autoreconf -v This should have been $ autoreconf -vi > I also see: > > OPENSSL_LIB = -L/Tools/SunOS_5.11_i86pc_amd64/openssl-1.0.0f-aesni/lib > -L/Tools/SunOS_5.11_i86pc_amd64/openssl-1.0.0f-aesni/lib > -R/Tools/SunOS_5.11_i86pc_amd64/openssl-1.0.0f-aesni/lib > > Something is adding the openssl -L flag twice. LDFLAGS only has it once. It seems we have yet more historically broken logic in the implementation of various --with-foo arguments to configure. I'm guessing your configure arguments included --with-openssl=/Tools/SunOS_5.11_i86pc_amd64/openssl-1.0.0f-aesni ? On our test systems, the OpenSSL headers are in /usr/include/openssl/ and libssl is in /usr/lib, so we're taking a different path through the configure code. I've fixed this in commit 'automake: rejig OpenSSL linker flags and libraries' > lib/auth_krb5.c fails to build, because autofoo does absolutely nothing > to find krb5.h: > > "lib/auth_krb5.c", line 60: cannot find include file: <krb5.h> > > The only configure options I see are for krb4. > > If I manually fix the krb5 problem, I get to: We'll take a look at this later. > > Adding '-Xc' to the sun studio compiler to keep it from polluting the > namespace would fix that, If the description of -Xc here http://docs.oracle.com/cd/E24457_01/html/E22003/cc.1.html is correct then we definitely want to use it. The compiler default behaviour is suitable for transitioning from K&R C to ANSI C, a process that we've recently completed in Cyrus (only two decades late). But for the time being we have bigger problems. > but would also undefine __FUNCTION__ causing > the build to fail on the snmp bits. I'm confused by this statement. We don't use __FUNCTION__ anywhere exception in a unit test, and that's just a leftover debugging thing that could be removed. Can you post the error messages from your build failure? > So I renamed all instances of "sun" > to "mysun" in imap/append.c and imap/idlemsg.c. Sure, if you like. > > Undefined first referenced > symbol in file > krb5_free_principal lib/libcyrus.a(auth_krb5.o) > krb5_realm_compare lib/libcyrus.a(auth_krb5.o) > krb5_build_principal lib/libcyrus.a(auth_krb5.o) > uuid_unparse_lower imap/libimap.a(mailbox.o) > krb5_get_default_realm lib/libcyrus.a(auth_krb5.o) > krb5_parse_name lib/libcyrus.a(auth_krb5.o) > krb5_init_context lib/libcyrus.a(auth_krb5.o) > krb5_free_context lib/libcyrus.a(auth_krb5.o) > krb5_unparse_name lib/libcyrus.a(auth_krb5.o) > > So not only is autofoo not bothering to find the header file, it isn't > adding the krb5 libs, either! How on earth does this link for anyone?! > Manually adding LIBS='-lkrb5' to configure fixes all but the uuid > problem. I'm not sure what went wrong here... > > Solaris 11 has libuuid, but libuuid only has libuuid_unparse, not > libuuid_unparse_lower. configure only checks for uuid_generate (which is > present). I forced it to fail the uuid check by passing > ac_cv_lib_uuid_uuid_generate=no to configure. Ok, the lack of uuid_unparse_lower() should be easy to work around using lcase(). > > With the above changes, it correctly compiles and links, and spot > checking it appears RPATH is correctly set everywhere. Ok. -- Greg.