Bug #53022 Compilation of "embedded" is broken
Submitted: 21 Apr 2010 10:45 Modified: 28 Apr 2010 2:12
Reporter: Joerg Bruehe Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Compiling Severity:S1 (Critical)
Version:6.0.14 OS:Any
Assigned to: Alexander Nozdrin CPU Architecture:Any

[21 Apr 2010 10:45] Joerg Bruehe
Description:
Compile error in a local Linux build of current "mysql-6.0-codebase-bugfixing" ("configure.in" lists version 6.0.14).
My last successful build of this tree was on March 25, no attempt in between, today it fails.

Client and server get built, but compiling "embedded" ("libmysqld") fails with these messages:

=====
+g++ -DEMBEDDED_LIBRARY -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr/local/mysql\"" -DMYSQL_DATADIR="\"/usr/local/mysql/var\"" -DSHAREDIR="\"/usr/local/mysql/share/mysql\"" -DHAVE_CONFIG_H -DLIBDIR="\"/usr/local/mysql/lib\"" -DPLUGINDIR="\"/usr/local/mysql/lib/mysql/plugin\"" -DDISABLE_DTRACE -I. -I../include  -I../include -I../sql -I../sql -I../sql/examples -I../regex  -I../zlib -I../storage/federated/ -I../storage/heap/ -I../storage/myisammrg/ -I../storage/myisam/   -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -mtune=native -O3 -fno-omit-frame-pointer -g   -fno-implicit-templates -fno-exceptions -fno-rtti  -MT item_strfunc.o -MD -MP -MF .deps/item_strfunc.Tpo -c -o item_strfunc.o item_strfunc.cc
+item_strfunc.cc: In member function ‘virtual String* Item_func_des_encrypt::val_str(String*)’:
+item_strfunc.cc:639: error: ‘DES_cblock’ was not declared in this scope
+item_strfunc.cc:639: error: expected `;' before ‘ivec’
+item_strfunc.cc:640: error: aggregate ‘st_des_keyblock keyblock’ has incomplete type and cannot be defined
+item_strfunc.cc:641: error: aggregate ‘st_des_keyschedule keyschedule’ has incomplete type and cannot be defined
+item_strfunc.cc:653: error: ‘LOCK_des_key_file’ was not declared in this scope
+item_strfunc.cc:654: error: ‘des_keyschedule’ was not declared in this scope
+item_strfunc.cc:654: error: ‘des_default_key’ was not declared in this scope
+item_strfunc.cc:662: error: ‘LOCK_des_key_file’ was not declared in this scope
+item_strfunc.cc:663: error: ‘des_keyschedule’ was not declared in this scope
+item_strfunc.cc:674: error: ‘ivec’ was not declared in this scope
+item_strfunc.cc:675: error: ‘EVP_des_ede3_cbc’ was not declared in this scope
+item_strfunc.cc:675: error: ‘EVP_md5’ was not declared in this scope
+item_strfunc.cc:677: error: ‘EVP_BytesToKey’ was not declared in this scope
+item_strfunc.cc:678: error: ‘DES_set_key_unchecked’ was not declared in this scope
+item_strfunc.cc:705: error: ‘ivec’ was not declared in this scope
+item_strfunc.cc:712: error: ‘DES_ede3_cbc_encrypt’ was not declared in this scope
+item_strfunc.cc: In member function ‘virtual String* Item_func_des_decrypt::val_str(String*)’:
+item_strfunc.cc:734: error: ‘DES_cblock’ was not declared in this scope
+item_strfunc.cc:734: error: expected `;' before ‘ivec’
+item_strfunc.cc:735: error: aggregate ‘st_des_keyblock keyblock’ has incomplete type and cannot be defined
+item_strfunc.cc:736: error: aggregate ‘st_des_keyschedule keyschedule’ has incomplete type and cannot be defined
+item_strfunc.cc:754: error: ‘LOCK_des_key_file’ was not declared in this scope
+item_strfunc.cc:755: error: ‘des_keyschedule’ was not declared in this scope
+item_strfunc.cc:765: error: ‘ivec’ was not declared in this scope
+item_strfunc.cc:766: error: ‘EVP_des_ede3_cbc’ was not declared in this scope
+item_strfunc.cc:766: error: ‘EVP_md5’ was not declared in this scope
+item_strfunc.cc:768: error: ‘EVP_BytesToKey’ was not declared in this scope
+item_strfunc.cc:770: error: ‘DES_set_key_unchecked’ was not declared in this scope
+item_strfunc.cc:778: error: ‘ivec’ was not declared in this scope
+item_strfunc.cc:785: error: ‘DES_ede3_cbc_encrypt’ was not declared in this scope
=====

Alik just tells me in IRC that "trunk" has the same issue, I'll soon try that.

How to repeat:
Just try "BUILD/compile-pentium-max" on current "mysql-6.0-codebase-bugfixing".
[21 Apr 2010 12:03] Joerg Bruehe
Removing the "trunk" cersion reference -
I can compile current "trunk-bugfixing" (including "embedded") without issues.

There is no changeset in current "trunk-bugfixing" which would be missing in "6.0-codebase-bugfixing", so the bug seems to have arisen after "trunk" only.
[22 Apr 2010 8:34] Alexander Nozdrin
Patch pushed into trunk-bugfixing.
[22 Apr 2010 9:11] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/106329

3012 Alexander Nozdrin	2010-04-21
      Patch for Bug#53022: Compilation of "embedded" is broken.
      
      The bug was a side effect of WL#5030 (fix header files) and
      WL#5161 (CMake).
      
      The problem was that CMake-generated config.h (and my_config.h
      as a copy of it) had a header guard. GNU autotools-generated
      [my_]config.h did not. During WL#5030 the order of header files
      was changed, so the following started to happen (using GNU autotools,
      in embedded server):
        - my_config.h included, defining HAVE_OPENSSL
        - my_global.h included, un-defining  HAVE_OPENSSL
        - zlib.h included, including config.h,
          defining HAVE_OPENSSL again.
      
      The fix is to change the order of header file, moving zlib.h
      to the top of the header list. More proper fix would be to wrap
      unguarded auto-generated [my_]config.h by guarded non-generated
      header file.
[22 Apr 2010 9:11] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/106330

3013 Alexander Nozdrin	2010-04-21
      Patch for Bug#53022: Compilation of "embedded" is broken.
      
      The bug was a side effect of WL#5030 (fix header files) and
      WL#5161 (CMake).
      
      The problem was that CMake-generated config.h (and my_config.h
      as a copy of it) had a header guard. GNU autotools-generated
      [my_]config.h did not. During WL#5030 the order of header files
      was changed, so the following started to happen (using GNU autotools,
      in embedded server):
        - my_config.h included, defining HAVE_OPENSSL
        - my_global.h included, un-defining  HAVE_OPENSSL
        - zlib.h included, including config.h,
          defining HAVE_OPENSSL again.
      
      The fix is to change the order of header file, moving zlib.h
      to the top of the header list. More proper fix would be to wrap
      unguarded auto-generated [my_]config.h by guarded non-generated
      header file.
[22 Apr 2010 18:54] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/106392

3015 Alexander Nozdrin	2010-04-22
      Patch for Bug#53022: Compilation of "embedded" is broken.
      
      The bug was a side effect of WL#5030 (fix header files) and
      WL#5161 (CMake).
      
      The problem was that CMake-generated config.h (and my_config.h
      as a copy of it) had a header guard. GNU autotools-generated
      [my_]config.h did not. During WL#5030 the order of header files
      was changed, so the following started to happen (using GNU autotools,
      in embedded server):
        - my_config.h included, defining HAVE_OPENSSL
        - my_global.h included, un-defining  HAVE_OPENSSL
        - zlib.h included, including config.h,
          defining HAVE_OPENSSL again.
      
      The fix is to check HAVE_OPENSSL in conjuction with EMBEDDED_LIBRARY.
      More common fix would be to define a macros as HAVE_OPENSSL && !EMBEDDED_LIBRARY
      and use it instead of HAVE_OPENSSL.
[27 Apr 2010 9:47] Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100427094135-5s49ecp3ckson6e2) (version source revid:alik@sun.com-20100427093843-uekr85qkd7orx12t) (merge vers: 6.0.14-alpha) (pib:16)
[27 Apr 2010 9:49] Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100427093804-a2k3rrjpwu5jegu8) (version source revid:alik@sun.com-20100427093804-a2k3rrjpwu5jegu8) (merge vers: 5.5.5-m3) (pib:16)
[27 Apr 2010 9:53] Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100427094036-38frbg3famdlvjup) (version source revid:alik@sun.com-20100427093825-92wc8b22d4yg34ju) (pib:16)
[28 Apr 2010 2:12] Paul DuBois
Not in any released version. No changelog entry needed.