Just recently upgraded some Homebrew packages, including MySQL@8.0, and thus required a reinstall for mysql2-gem.
Compilation of extension fails with following error:
compiling client.c
In file included from client.c:15:
./mysql_enc_name_to_ruby.h:43:35: error: unknown type name 'str'
43 | mysql2_mysql_enc_name_to_rb_hash (str, len)
| ^
./mysql_enc_name_to_ruby.h:43:40: error: unknown type name 'len'
43 | mysql2_mysql_enc_name_to_rb_hash (str, len)
| ^
./mysql_enc_name_to_ruby.h:43:44: error: expected ';' after top level declarator
43 | mysql2_mysql_enc_name_to_rb_hash (str, len)
| ^
| ;
./mysql_enc_name_to_ruby.h:44:27: error: illegal storage class on file-scoped variable
44 | register const char *str;
| ^
./mysql_enc_name_to_ruby.h:45:28: error: illegal storage class on file-scoped variable
45 | register unsigned int len;
| ^
./mysql_enc_name_to_ruby.h:46:1: error: expected identifier or '('
46 | {
| ^
./mysql_enc_name_to_ruby.h:86:30: error: unknown type name 'str'
86 | mysql2_mysql_enc_name_to_rb (str, len)
| ^
./mysql_enc_name_to_ruby.h:86:35: error: unknown type name 'len'
86 | mysql2_mysql_enc_name_to_rb (str, len)
| ^
./mysql_enc_name_to_ruby.h:86:39: error: expected ';' after top level declarator
86 | mysql2_mysql_enc_name_to_rb (str, len)
| ^
| ;
./mysql_enc_name_to_ruby.h:87:27: error: illegal storage class on file-scoped variable
87 | register const char *str;
| ^
./mysql_enc_name_to_ruby.h:88:28: error: illegal storage class on file-scoped variable
88 | register unsigned int len;
| ^
./mysql_enc_name_to_ruby.h:89:1: error: expected identifier or '('
89 | {
| ^
12 errors generated.
make: *** [client.o] Error 1
make failed, exit code 2
AI proposed following patch which worked on a forked branch
--- a/ext/mysql2/mysql_enc_name_to_ruby.h
+++ b/ext/mysql2/mysql_enc_name_to_ruby.h
@@ -40,9 +40,7 @@ inline
#endif
#endif
static unsigned int
-mysql2_mysql_enc_name_to_rb_hash (str, len)
- register const char *str;
- register unsigned int len;
+mysql2_mysql_enc_name_to_rb_hash (const char *str, unsigned int len)
{
static const unsigned char asso_values[] =
{
@@ -83,9 +81,7 @@ __attribute__ ((__gnu_inline__))
#endif
#endif
const struct mysql2_mysql_enc_name_to_rb_map *
-mysql2_mysql_enc_name_to_rb (str, len)
- register const char *str;
- register unsigned int len;
+mysql2_mysql_enc_name_to_rb (const char *str, unsigned int len)
{
enum
{
Currently using:
mysql2-gem 0.5.7
MacOS 26.4 (also on 26.3)
ruby 3.4.9 (also on 3.4.7)
MySQL 8.0.45 (tried also with 8.4 and with just mysql-client@8.0)
XCode 26.4 (also 26.2)
clang 21.0.0 (also 17.0.0)
Just recently upgraded some Homebrew packages, including MySQL@8.0, and thus required a reinstall for mysql2-gem.
Compilation of extension fails with following error:
AI proposed following patch which worked on a forked branch
Currently using:
mysql2-gem 0.5.7
MacOS 26.4 (also on 26.3)
ruby 3.4.9 (also on 3.4.7)
MySQL 8.0.45 (tried also with 8.4 and with just mysql-client@8.0)
XCode 26.4 (also 26.2)
clang 21.0.0 (also 17.0.0)