Attached is a port for MySQL 8.1. This is not designed to replace the
existing MariaDB port, it is designed for interoperability testing,
since MySQL and MariaDB have diverged sufficiently such that software
designed to support MySQL and MariaDB databases should be tested against
both.

A number of patches are required, because OpenBSD doesn't support:

* ffsll(3)
* EVFILT_USER in kqueue or timer_create(3)
* res_ninit(3)
* AI_V4MAPPED and AI_ALL
* sigwaitinfo
* MAP_HUGETLB

Most of the patches are simple, though the lack of EVFILT_USER and
timer_create(3) required developing an alternative approach for timers
that I'm not sure is thread safe.

To avoid conflicts with the MariaDB port, this installs into a versioned
directory (/usr/local/mysql-8.1).  The port current doesn't create the
data or socket directories, instead providing instructions to created
versioned directories in the README to match what the rc.d script
expects.

Currently, the port README suggests using the _mysql user, even though
the port doesn't create a user.  I'm not sure what our practice is here
in regards to multiple ports sharing users.  Should it create the same
_mysql user as the mariadb port?  Should it create a different user
(e.g. _oracle_mysql)?

We previously had a MySQL port that was removed in 2014, so this keeps
the same EPOCH and bumps the shared library.  All of the shared
libraries are installed into the versioned directory, so they shouldn't
be picked up by other ports.

This passes 100% of databases/ruby-sequel's MySQL integration tests.  I
haven't done additional testing with it.

Is this something anybody wants in ports?

Thanks,
Jeremy

Attachment: mysql.tar.gz
Description: application/tar-gz

Reply via email to