Thanks for the follow up Howard. I'm busy cranking out a number of dependent packages to compile some software, OpenLDAP being one of many. We have an aversion to the use of GCC here so situations like this compilation fail are somewhat common. It's nice though when code is kept simple and portable as it makes life easier.
I don't normally spend much time debugging code and shipping fixes in a nice box with a pretty bow on it, I've just cut and pasted the two lines I used to allow compilation, part of the compile recipe used to crank out this 2.4.33 release. Hopefully that's enough to update your git archives.
ta, Mark.
On Wed, Feb 20, 2013 at 3:20 PM, Howard Chu hyc@symas.com wrote:
mark@ibiblio.org wrote:
Full_Name: Mark Version: 2.4.33 OS: Solaris 10 & 11 URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (203.63.89.15)
The stock 2.4.33 fails to compile mdb with this error:
cc -I/usr/local/include -L/usr/local/lib -I../../../include -I../../../include -I.. -I./.. -I./../../../libraries/libmdb -I/usr/local/include -L/usr/local/lib -c ./../../../libraries/libmdb/mdb.c -o mdb.o "./../../../libraries/libmdb/mdb.c", line 3514: undefined symbol: top "./../../../libraries/libmdb/mdb.c", line 3514: left operand of "->" must be pointer to struct/union cc: acomp failed for ./../../../libraries/libmdb/mdb.c
The problem is top is defined inside #if MDB_DEBUG but used without the same #if qualifier.
Normally the DPRINTF macro would just expand to ((void) 0) if MDB_DEBUG is not defined, so no, top is not being used without MDB_DEBUG. But looking closer, I see this requires a C preprocessor that supports vararg macros. Don't you have a C99-compatible toolchain on Solaris?
The fix is: /bin/perl -pe '($. == 3514) && s%^%#if MDB_DEBUG\n%' -i libraries/libmdb/mdb.c /bin/perl -pe '($. == 3517) && s%^%#endif\n%' -i libraries/libmdb/mdb.c
In the future, please use unified diff format. Preferably just use "git format-patch" like it says on http://www.openldap.org/devel/contributing.html
We don't make changes in already released code, and line numbers alone are a poor reference in development code.
-- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/