Bug 270666

Summary: devel/apr1: Broken with MySQL 5.7
Product: Ports & Packages Reporter: denzill <denis.kachurin>
Component: Individual Port(s)Assignee: freebsd-apache (Nobody) <apache>
Status: Closed FIXED    
Severity: Affects Only Me CC: joneum, t.masub
Priority: --- Flags: bugzilla: maintainer-feedback? (apache)
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
[patch] MY_BOOL definition only added since MySQL 8.0.1 none

Description denzill 2023-04-06 08:53:36 UTC
devel/apr1 not build if DEFAULT_VERSIONS+= mysql=5.7 is set:
/bin/sh /usr/ports/devel/apr1/work/apr-1.7.3/libtool --silent --mode=compile --tag=CC cc   -O2 -pipe  -DLIBICONV_PLUG -DLDAP_DEPRECATED -fstack-protector-strong -fno-strict-aliasing -DHAVE_CONFIG_H    -DLIBICONV_PLUG -I/usr/ports/devel/apr1/work/apr-util-1.6.3/include -I/usr/ports/devel/apr1/work/apr-util-1.6.3/include/private -I/usr/local/include/mysql  -I/usr/ports/devel/apr1/work/apr-1.7.3/include  -I/usr/include -I/usr/local/include -I/usr/local/include/db18  -o dbm/apr_dbm_berkeleydb.lo -c dbm/apr_dbm_berkeleydb.c && touch dbm/apr_dbm_berkeleydb.lo
--- dbd/apr_dbd_mysql.lo ---
dbd/apr_dbd_mysql.c:49:14: error: typedef redefinition with different types ('bool' vs 'char')
typedef bool my_bool;
             ^
/usr/local/include/mysql/mysql.h:49:14: note: previous definition is here
typedef char my_bool;
             ^
dbd/apr_dbd_mysql.c:1271:5: warning: implicit declaration of function 'my_init' is invalid in C99 [-Wimplicit-function-declaration]
    my_init();
    ^
1 warning and 1 error generated.
*** [dbd/apr_dbd_mysql.lo] Error code 1

make[3]: stopped in /usr/ports/devel/apr1/work/apr-util-1.6.3
1 error

make[3]: stopped in /usr/ports/devel/apr1/work/apr-util-1.6.3
*** [all-recursive] Error code 1

make[2]: stopped in /usr/ports/devel/apr1/work/apr-util-1.6.3
1 error

make[2]: stopped in /usr/ports/devel/apr1/work/apr-util-1.6.3
*** Error code 2

Stop.
make[1]: stopped in /usr/ports/devel/apr1
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/apr1
Comment 1 Toshimichi Masubuchi 2023-04-10 10:20:41 UTC
Created attachment 241398 [details]
[patch] MY_BOOL definition only added since MySQL 8.0.1

In MySQL, the definition of MY_BOOL is in mysql.h up to version 8.0.0 [1],
so a double definition error occurs.

As a workaround, I created a patch that adds the definition of MY_BOOL to
that version or later.

It has been confirmed that the build can be done with the following settings.

(1) DEFAULT_VERSIONS+=mysql=5.7
(2) DEFAULT_VERSIONS+=mysql=8.0
(3) DEFAULT_VERSIONS+=mysql=10.6m

* Note that mysql5[67]-* is DEPRECATED.
  in mysql57-server/Makefile:
    | DEPRECATED=     Upstream support ended in October 2019
    | EXPIRATION_DATE=        2023-12-31

References:
[1] MySQL Bug #25597667: REMOVE MY_BOOL
https://github.com/mysql/mysql-server/commit/6c174bd2a59dfb411b0830455121618acfc10406
Comment 2 Jochen Neumeister freebsd_committer freebsd_triage 2024-01-02 11:27:51 UTC
MySQL57 ist EOL and no longer into the Ports, so i will closed here