Bug #3306 Complie fails due to problems with term.h/curses.h
Submitted: 26 Mar 2004 10:13 Modified: 30 Apr 2004 6:23
Reporter: David Saez Padros Email Updates:
Status: No Feedback Impact on me:
None 
Category:MySQL Server: Compiling Severity:S1 (Critical)
Version:4.0.18 OS:Solaris (Solaris 2.8 SPARC)
Assigned to: CPU Architecture:Any

[26 Mar 2004 10:13] David Saez Padros
Description:
Making all in client
make[3]: Entering directory `/usr/local/src/mysql/mysql-4.0.18/client'
source='mysql.cc' object='mysql.o' libtool=no \
depfile='.deps/mysql.Po' tmpdepfile='.deps/mysql.TPo' \
depmode=gcc /bin/ksh ../depcomp \
gcc -DUNDEF_THREADS_HACK -I. -I. -I.. -I./../include -I../include -I./.. -I.. -I..     -O3 -DDBUG_OFF -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -felide-constructors -fno-exceptions -fno-rtti  -fno-implicit-templates -fno-exceptions -fno-rtti -D_FILE_OFFSET_BITS=64 -DHAVE_CURSES_H -I/usr/local/src/mysql/mysql-4.0.18/include -DHAVE_RWLOCK_T -c -o mysql.o `test -f 'mysql.cc' || echo './'`mysql.cc
In file included from mysql.cc:55:
/opt/sfw/include/term.h:711: declaration of C function `int setupterm(const char *, int, int *)' conflicts with
/usr/include/curses.h:341: previous declaration `int setupterm(char *, int, int *)' here
make[3]: *** [mysql.o] Error 1
make[3]: Leaving directory `/usr/local/src/mysql/mysql-4.0.18/client'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/local/src/mysql/mysql-4.0.18'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/local/src/mysql/mysql-4.0.18'
make: *** [mysql] Error 2

How to repeat:
CFLAGS = -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -DHAVE_CURSES_H
CXXFLAGS = $(CFLAGS) -felide-constructors -fno-exceptions -fno-rtti

CC=gcc CFLAGS="$(CFLAGS)" CXX=gcc CXXFLAGS="$(CXXFLAGS)" ./configure \
                        --enable-thread-safe-client \
                        --with-named-z-libs=no \
                        --with-mysqld-ldflags=-all-static \
                        --with-vio --with-openssl \
                        --enable-local-infile \
                        --enable-assembler --disable-shared \
                        --with-extra-charsets=none \
                        --with-charset=latin1 \
                        --with-low-memory \
                        --libdir=/usr/local/lib \
                        --includedir=/usr/local/include

Suggested fix:
include only one of term.h or curses.h in mysql.cc
[30 Mar 2004 6:23] MySQL Verification Team
Problem is that several of  our Solaris 2.8 al has both term.h and curses.h

But none of the term.h contains that symbol.

Beside's, each term.h is in the standard /usr/include directory.

Seems like you are using some custom term file. 

Solution is to undefine HAVE_TERM_H
[14 Feb 2005 22:54] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".