Bug #4050 Fails to compile - bad usage of include files
Submitted: 8 Jun 2004 4:24 Modified: 10 Jun 2004 4:27
Reporter: [ name withheld ] Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Administrator Severity:S2 (Serious)
Version:1.0.4 OS:Linux (Debian/Linux)
Assigned to: Ulrich Bayer CPU Architecture:Any

[8 Jun 2004 4:24] [ name withheld ]
Description:
adamm@mira:~/work/debian/mysql-admin/mysql-admin-1.0.4/mysql-gui-common$ make
Making all in library
make[1]: Entering directory `/home/adamm/work/debian/mysql-admin/mysql-admin-1.0.4/mysql-gui-common/library'
Making all in source
make[2]: Entering directory `/home/adamm/work/debian/mysql-admin/mysql-admin-1.0.4/mysql-gui-common/library/source'
if gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"mysql-gui-common\" -DVERSION=\"0.5.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LOCALE_H=1 -DHAVE_LC_MESSAGES=1 -DHAVE_BIND_TEXTDOMAIN_CODESET=1 -DHAVE_GETTEXT=1 -DHAVE_DCGETTEXT=1 -DENABLE_NLS=1  -I. -I. -I../include -I../public_interface/linux -I/usr/include/mysql -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include       -g -O2 -MT myx_library.o -MD -MP -MF ".deps/myx_library.Tpo" \
  -c -o myx_library.o `test -f 'myx_library.c' || echo './'`myx_library.c; \
then mv -f ".deps/myx_library.Tpo" ".deps/myx_library.Po"; \
else rm -f ".deps/myx_library.Tpo"; exit 1; \
fi
In file included from myx_library.c:27:
/usr/include/mysql/m_ctype.h:45: error: parse error before "pchar"
In file included from myx_library.c:27:
/usr/include/mysql/m_ctype.h:66:1: warning: "_CTYPE_H" redefined
In file included from myx_library.c:21:
/usr/include/ctype.h:25:1: warning: this is the location of the previous definition
myx_library.c: In function `myx_get_server_charset_name':
myx_library.c:464: error: structure has no member named `csname'
make[2]: *** [myx_library.o] Error 1
make[2]: Leaving directory `/home/adamm/work/debian/mysql-admin/mysql-admin-1.0.4/mysql-gui-common/library/source'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/adamm/work/debian/mysql-admin/mysql-admin-1.0.4/mysql-gui-common/library'
make: *** [all-recursive] Error 1

How to repeat:
Try to compile mysql-gui-common. Try using Debian (Sid/Unstable)

with MySQL 4.0.20
etc...

Suggested fix:
Get your headers fixed. 

/usr/include/mysql/m_ctype.h says,

/*
  A better inplementation of the UNIX ctype(3) library.
  Notes:   my_global.h should be included before ctype.h
*/

*BUT* my_global.h is not included. Attempting to include my_global.h shows that some internal include already defined all of the mysql definitions, and not always in most arch independent way.

Furthermore, m_ctype.h explicitly states that system ctype.h should not be included, yet, it *is*. Why?? The only function that is used is toupper, which you can use a definitions from m_ctype.h.

The build system is simpler than in 1.0.2, but now I cannot compile this application. Until this gets fixed, mysql-administrator cannot be part of Debian.
[10 Jun 2004 4:27] Alfredo Kojima
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at
    http://www.mysql.com/doc/en/Installing_source_tree.html

Additional info:

Previous versions were requiring MySQL 5.0 client libraries and headers. The 
repository version has been fixed to work with 4.x client libraries, which is the 
minimal required version.