diff options
author | Muflone | 2023-11-15 02:12:49 +0100 |
---|---|---|
committer | Muflone | 2023-11-15 02:13:02 +0100 |
commit | 392eb62843be4983a9bfbf5c1f2f92c170c5ea84 (patch) | |
tree | 2a389f799c0e95b830f136ba986bf0779149de55 | |
download | aur-392eb62843be4983a9bfbf5c1f2f92c170c5ea84.tar.gz |
New pkgbase mysql81 8.1.0-1
-rw-r--r-- | .SRCINFO | 89 | ||||
-rw-r--r-- | PKGBUILD | 239 | ||||
-rw-r--r-- | my-default.cnf | 34 | ||||
-rw-r--r-- | mysql-ld.so.conf | 1 | ||||
-rw-r--r-- | mysql.sysconfig | 1 | ||||
-rw-r--r-- | mysql81.install | 8 | ||||
-rw-r--r-- | mysqld_service.patch | 35 | ||||
-rw-r--r-- | systemd-sysusers.conf | 3 | ||||
-rw-r--r-- | systemd-tmpfiles.patch | 20 |
9 files changed, 430 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..f5455cddf5c1 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,89 @@ +pkgbase = mysql81 + pkgdesc = Fast SQL database server, community edition, v8.1 + pkgver = 8.1.0 + pkgrel = 1 + url = https://www.mysql.com/products/community/ + arch = x86_64 + license = GPL + makedepends = openssl + makedepends = zlib + makedepends = cmake + makedepends = systemd-tools + makedepends = systemd-libs + makedepends = libaio + makedepends = jemalloc + makedepends = rpcsvc-proto + makedepends = libtirpc + makedepends = icu + makedepends = libedit + makedepends = libevent + makedepends = libfido2 + makedepends = re2 + makedepends = rapidjson + source = https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-boost-8.1.0.tar.gz + source = my-default.cnf + source = mysql-ld.so.conf + source = mysql.sysconfig + source = mysqld_service.patch + source = systemd-tmpfiles.patch + source = systemd-sysusers.conf + sha256sums = cb19648bc8719b9f6979924bfea806b278bd26b8d67740e5742c6f363f142188 + sha256sums = 6bc24ae510f6b6bbad6b3edda2d0028b29292937b482274a4c2fae335f4de328 + sha256sums = e1c23fa0971a13d998f2790379b68c475438d05b6d6f2691b99051dbf497567f + sha256sums = 203dcd22fea668477ac7123dbd9909fae72d3d07f8855417a669a9c94db072ae + sha256sums = 8fbedfc2c5fe271ed13217feeceeac00202d2cb135e4283eeee2f9a13d6251af + sha256sums = 270074dc0a01e0f959590ad95e5bbaaac3f821bb44eba32d039a6aee506b9c6a + sha256sums = 200a992eb41c95efa99845d017439ddd4018a3e51f57ffca8cb802b0d25123f1 + +pkgname = mysql81 + pkgdesc = Fast SQL database server, community edition, v8.1 + install = mysql81.install + depends = mysql-clients + depends = libsasl + depends = zlib + depends = jemalloc + depends = libaio + depends = libtirpc + depends = icu + depends = lz4 + depends = libevent + depends = systemd-libs + depends = zstd + depends = bash + optdepends = perl-dbd-mysql: for mysqlhotcopy, mysql_convert_table_format, mysql_setpermission, mysqldumpslow + provides = mariadb=8.1.0 + provides = mysql=8.1.0 + conflicts = mariadb + conflicts = mysql + options = emptydirs + backup = etc/mysql/my.cnf + backup = etc/mysqlrouter/mysqlrouter.conf + backup = etc/logrotate.d/mysqlrouter + backup = etc/conf.d/mysql81.conf + +pkgname = libmysqlclient81 + pkgdesc = MySQL client libraries, community edition, v8.1 + depends = libsasl + depends = zlib + depends = zstd + provides = libmariadbclient=8.1.0 + provides = libmysqlclient=8.1.0 + provides = mariadb-libs=8.1.0 + conflicts = libmariadbclient + conflicts = libmysqlclient + conflicts = mariadb-libs + +pkgname = mysql-clients81 + pkgdesc = MySQL client tools, community edition, v8.1 + depends = libmysqlclient + depends = zlib + depends = openssl + depends = jemalloc + depends = libedit + depends = lz4 + depends = zstd + depends = bash + provides = mariadb-clients=8.1.0 + provides = mysql-clients=8.1.0 + conflicts = mariadb-clients + conflicts = mysql-clients diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..66f350f10123 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,239 @@ +# Maintainer: Muflone http://www.muflone.com/contacts/english/ +# Contributor: Francois Menning <f.menning@pm.me> +# Contributor: Rustam Tsurik <rustam.tsurik@gmail.com> +# Contributor: Andrea Scarpino <andrea@archlinux.org> +# Contributor: Douglas Soares de Andrade <douglas@archlinux.org> + +pkgname=('mysql81' 'libmysqlclient81' 'mysql-clients81') +pkgbase=mysql81 +_pkgbase=mysql +pkgver=8.1.0 +pkgrel=1 +pkgdesc="Fast SQL database server, community edition, v8.1" +arch=('x86_64') +makedepends=('openssl' 'zlib' 'cmake' 'systemd-tools' 'systemd-libs' 'libaio' + 'jemalloc' 'rpcsvc-proto' 'libtirpc' 'icu' 'libedit' 'libevent' + 'libfido2' 're2' 'rapidjson') +license=('GPL') +url="https://www.mysql.com/products/community/" +source=("https://cdn.mysql.com/Downloads/MySQL-8.0/${_pkgbase}-boost-${pkgver}.tar.gz" + "my-default.cnf" + "mysql-ld.so.conf" + "mysql.sysconfig" + "mysqld_service.patch" + "systemd-tmpfiles.patch" + "systemd-sysusers.conf") +sha256sums=('cb19648bc8719b9f6979924bfea806b278bd26b8d67740e5742c6f363f142188' + '6bc24ae510f6b6bbad6b3edda2d0028b29292937b482274a4c2fae335f4de328' + 'e1c23fa0971a13d998f2790379b68c475438d05b6d6f2691b99051dbf497567f' + '203dcd22fea668477ac7123dbd9909fae72d3d07f8855417a669a9c94db072ae' + '8fbedfc2c5fe271ed13217feeceeac00202d2cb135e4283eeee2f9a13d6251af' + '270074dc0a01e0f959590ad95e5bbaaac3f821bb44eba32d039a6aee506b9c6a' + '200a992eb41c95efa99845d017439ddd4018a3e51f57ffca8cb802b0d25123f1') + +build() { + rm -rf build + mkdir build + cd build + + cmake "../${_pkgbase}-${pkgver}" \ + -DCMAKE_AR=/usr/bin/gcc-ar \ + -DCMAKE_RANLIB=/usr/bin/gcc-ranlib \ + -DBUILD_CONFIG=mysql_release \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DSYSCONFDIR=/etc/mysql \ + -DMYSQL_DATADIR=/var/lib/mysql \ + -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \ + -DENABLED_LOCAL_INFILE=ON \ + -DINSTALL_INFODIR=share/mysql/docs \ + -DINSTALL_MANDIR=share/man \ + -DINSTALL_PLUGINDIR=lib/mysql/plugin \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_INCLUDEDIR=include/mysql \ + -DINSTALL_DOCREADMEDIR=share/mysql \ + -DINSTALL_SUPPORTFILESDIR=share/mysql \ + -DINSTALL_MYSQLSHAREDIR=share/mysql \ + -DINSTALL_DOCDIR=share/mysql/docs \ + -DINSTALL_SHAREDIR=share/mysql \ + -DROUTER_INSTALL_CONFIGDIR=../etc/mysqlrouter \ + -DROUTER_INSTALL_DATADIR=/var/lib/mysqlrouter \ + -DROUTER_INSTALL_RUNTIMEDIR=/run \ + -DROUTER_INSTALL_LOGDIR=/var/log/mysqlrouter \ + -DWITH_SYSTEM_LIBS=ON \ + -DWITH_FIDO=system \ + -DWITH_SSL=system \ + -DWITH_LIBWRAP=OFF \ + -DWITH_LTO=ON \ + -DWITH_JEMALLOC=ON \ + -DWITH_READLINE=ON \ + -DWITH_SYSTEMD=yes \ + -DWITH_PROTOBUF=bundled \ + -DWITH_UNIT_TESTS=OFF \ + -DPLUGIN_EXAMPLE=NO \ + -DWITHOUT_EXAMPLE_STORAGE_ENGINE=ON \ + -DPLUGIN_FEDERATED=NO \ + -DWITHOUT_FEDERATED_STORAGE_ENGINE=ON \ + -DPLUGIN_FEEDBACK=NO \ + -DCMAKE_C_FLAGS="${CFLAGS}" \ + -DCMAKE_C_LINK_FLAGS="${LDFLAGS}" \ + -DCMAKE_CXX_FLAGS="${CXXFLAGS} -DU_DEFINE_FALSE_AND_TRUE=1" \ + -DCMAKE_CXX_LINK_FLAGS="${LDFLAGS}" \ + -DDEFAULT_CHARSET=utf8mb4 \ + -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ + -DWITH_BOOST="../${_pkgbase}-${pkgver}/boost" + make +} + +check() { + cd build/mysql-test + + # Takes *really* long, so disabled by default. + # ./mtr --parallel=5 --mem --force --max-test-fail=0 +} + +package_libmysqlclient81(){ + pkgdesc="MySQL client libraries, community edition, v8.1" + depends=('libsasl' 'zlib' 'zstd') + conflicts=('libmariadbclient' 'libmysqlclient' 'mariadb-libs') + provides=("libmariadbclient=${pkgver}" "libmysqlclient=${pkgver}" "mariadb-libs=${pkgver}") + + cd build + for dir in include libmysql libservices + do + make -C "${dir}" DESTDIR="${pkgdir}" install + done + + install -m 700 -d "${pkgdir}/var/lib/mysql" + install -m 644 -D "${srcdir}/my-default.cnf" "${pkgdir}/etc/mysql/my.cnf.default" + install -m 644 -D "${srcdir}/${_pkgbase}-${pkgver}/support-files/mysql.m4" "${pkgdir}/usr/share/aclocal/mysql.m4" +} + +package_mysql-clients81(){ + pkgdesc="MySQL client tools, community edition, v8.1" + depends=('libmysqlclient' 'zlib' 'openssl' 'jemalloc' 'libedit' 'lz4' 'zstd' 'bash') + conflicts=('mariadb-clients' 'mysql-clients') + provides=("mariadb-clients=${pkgver}" "mysql-clients=${pkgver}") + + cd build + make -C "client" DESTDIR="${pkgdir}" install + + install -m 755 -d "${pkgdir}/usr/bin" + install -m 755 "runtime_output_directory/mysql_client_test" "${pkgdir}/usr/bin" + install -m 755 "scripts/mysql_config" "${pkgdir}/usr/bin" + + # install man pages + install -m 755 -d "${pkgdir}/usr/share/man/man1" + for man in mysql mysqladmin mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap mysql_config mysql_config_editor + do + install -m 644 "${srcdir}/${_pkgbase}-${pkgver}/man/${man}.1" "${pkgdir}/usr/share/man/man1/${man}.1" + done + + # install pkgconfig + install -m 644 -D "${srcdir}/build/scripts/mysqlclient.pc" "${pkgdir}/usr/lib/pkgconfig/mysqlclient.pc" + + # provided by mysql + rm "${pkgdir}/usr/bin/mysql_upgrade" + rm "${pkgdir}/usr/bin/mysqlbinlog" + rm "${pkgdir}/usr/bin/mysql_migrate_keyring" + rm "${pkgdir}/usr/bin/mysqlpump" + rm "${pkgdir}/usr/bin/mysql_secure_installation" + rm "${pkgdir}/usr/bin/mysql_ssl_rsa_setup" + rm "${pkgdir}/usr/bin/mysqltest" +} + +package_mysql81(){ + pkgdesc="Fast SQL database server, community edition, v8.1" + backup=("etc/mysql/my.cnf" + "etc/mysqlrouter/mysqlrouter.conf" + "etc/logrotate.d/mysqlrouter" + "etc/conf.d/${pkgname}.conf") + install="${pkgbase}.install" + depends=('mysql-clients' 'libsasl' 'zlib' 'jemalloc' 'libaio' 'libtirpc' 'icu' + 'lz4' 'libevent' 'systemd-libs' 'zstd' 'bash') + conflicts=('mariadb' 'mysql') + provides=("mariadb=${pkgver}" "mysql=${pkgver}") + optdepends=('perl-dbd-mysql: for mysqlhotcopy, mysql_convert_table_format, mysql_setpermission, mysqldumpslow') + options=('emptydirs') + + cd build + make DESTDIR="${pkgdir}" install + + install -m 644 -D "${srcdir}/my-default.cnf" "${pkgdir}/etc/mysql/my.cnf" + install -m 755 -d "${pkgdir}/etc/ld.so.conf.d" + install -m 644 -D "${srcdir}/mysql-ld.so.conf" "${pkgdir}/etc/ld.so.conf.d/${pkgname}.conf" + install -m 644 -D "${srcdir}/build/packaging/rpm-common/mysqlrouter.conf" "${pkgdir}/etc/mysqlrouter/mysqlrouter.conf" + + # provided by libmysqlclient + rm "${pkgdir}/usr/bin/mysql_config" + rm "${pkgdir}/usr/lib/libmysqlclient.a" + rm "${pkgdir}/usr/lib/libmysqlclient.so" + rm "${pkgdir}/usr/lib/libmysqlclient.so.22" + rm "${pkgdir}/usr/lib/libmysqlclient.so.22.0.0" + rm "${pkgdir}/usr/lib/libmysqlservices.a" + rm "${pkgdir}/usr/lib/pkgconfig/mysqlclient.pc" + rmdir "${pkgdir}/usr/lib/pkgconfig" + rm -r "${pkgdir}/usr/include" + rm "${pkgdir}/usr/share/mysql/aclocal/mysql.m4" + rmdir "${pkgdir}/usr/share/mysql/aclocal" + + # provided by mysql-clients + rm "${pkgdir}/usr/bin/mysql" + rm "${pkgdir}/usr/bin/mysqladmin" + rm "${pkgdir}/usr/bin/mysqlcheck" + rm "${pkgdir}/usr/bin/mysqldump" + rm "${pkgdir}/usr/bin/mysqlimport" + rm "${pkgdir}/usr/bin/mysqlshow" + rm "${pkgdir}/usr/bin/mysqlslap" + rm "${pkgdir}/usr/bin/mysql_client_test" + rm "${pkgdir}/usr/bin/mysql_config_editor" + rm "${pkgdir}/usr/share/man/man1/mysql.1" + rm "${pkgdir}/usr/share/man/man1/mysqladmin.1" + rm "${pkgdir}/usr/share/man/man1/mysqlcheck.1" + rm "${pkgdir}/usr/share/man/man1/mysql_config.1" + rm "${pkgdir}/usr/share/man/man1/mysql_config_editor.1" + rm "${pkgdir}/usr/share/man/man1/mysqldump.1" + rm "${pkgdir}/usr/share/man/man1/mysqlimport.1" + rm "${pkgdir}/usr/share/man/man1/mysqlshow.1" + rm "${pkgdir}/usr/share/man/man1/mysqlslap.1" + + # not needed + rm -r "${pkgdir}/usr/mysql-test" + + # Move somewhere else + mv "${pkgdir}/usr/LICENSE.router" "${pkgdir}/usr/share/mysql/docs" + mv "${pkgdir}/usr/README.router" "${pkgdir}/usr/share/mysql/docs" + + # Create environment file + install -m 644 -D "${srcdir}/mysql.sysconfig" "${pkgdir}/etc/conf.d/${pkgname}.conf" + + # Fix permissions + chmod 755 "${pkgdir}/usr" + + # Move systemd files + mv "${pkgdir}/usr/usr/lib/systemd" "${pkgdir}/usr/lib" + mv "${pkgdir}/usr/usr/lib/tmpfiles.d" "${pkgdir}/usr/lib" + install -m 755 -d "${pkgdir}/usr/lib/sysusers.d" + install -m 644 "${srcdir}/systemd-sysusers.conf" "${pkgdir}/usr/lib/sysusers.d/${pkgname}.conf" + + # Move logrotate files + install -d -m 755 "${pkgdir}/etc/logrotate.d/" + mv "${pkgdir}/usr/mysqlrouter-log-rotate" "${pkgdir}/etc/logrotate.d/mysqlrouter" + + # Move docs files + mv "${pkgdir}/usr/docs/sample_mysqlrouter.conf" "${pkgdir}/usr/share/mysql/docs" + rmdir "${pkgdir}/usr/docs" + + # Cleanup + rmdir "${pkgdir}/usr/usr/lib" + rmdir "${pkgdir}/usr/usr" + + # Arch Linux specific patches: + # * enable PrivateTmp for a little bit more security + # * force preloading jemalloc for memory management + # * fix path to our config + cd "${pkgdir}" + patch -Np1 -i "${srcdir}/mysqld_service.patch" + patch -Np1 -i "${srcdir}/systemd-tmpfiles.patch" +} + diff --git a/my-default.cnf b/my-default.cnf new file mode 100644 index 000000000000..307f85722f2a --- /dev/null +++ b/my-default.cnf @@ -0,0 +1,34 @@ +# For advice on how to change settings please see +# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html +# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the +# *** default location during install, and will be replaced if you +# *** upgrade to a newer version of MySQL. + +[mysqld] + +# Remove leading # and set to the amount of RAM for the most important data +# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. +# innodb_buffer_pool_size = 128M + +# Remove leading # to turn on a very important data integrity option: logging +# changes to the binary log between backups. +# log_bin + +# These are commonly set, remove the # and set as required. +# basedir = ..... +# datadir = ..... +# port = ..... +# server_id = ..... +# socket = ..... + +# Remove leading # to set options mainly useful for reporting servers. +# The server defaults are faster for transactions and fast SELECTs. +# Adjust sizes as needed, experiment to find the optimal values. +# join_buffer_size = 128M +# sort_buffer_size = 2M +# read_rnd_buffer_size = 2M + +datadir=/var/lib/mysql +socket=/run/mysqld/mysqld.sock + +sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES diff --git a/mysql-ld.so.conf b/mysql-ld.so.conf new file mode 100644 index 000000000000..6f61463563e9 --- /dev/null +++ b/mysql-ld.so.conf @@ -0,0 +1 @@ +/usr/lib/mysqlrouter diff --git a/mysql.sysconfig b/mysql.sysconfig new file mode 100644 index 000000000000..610190ff2bca --- /dev/null +++ b/mysql.sysconfig @@ -0,0 +1 @@ +LD_PRELOAD=/usr/lib/libjemalloc.so diff --git a/mysql81.install b/mysql81.install new file mode 100644 index 000000000000..7c30ee5c4536 --- /dev/null +++ b/mysql81.install @@ -0,0 +1,8 @@ +post_install(){ + echo ":: You need to initialize the MySQL data directory prior to starting" + echo " the service. This can be done with mysqld --initialize command, e.g.:" + echo " mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql" + echo ":: Additionally you should secure your MySQL installation using" + echo " mysql_secure_installation command after starting the mysqld service" +} + diff --git a/mysqld_service.patch b/mysqld_service.patch new file mode 100644 index 000000000000..5f7136ff65c1 --- /dev/null +++ b/mysqld_service.patch @@ -0,0 +1,35 @@ +--- a/usr/lib/systemd/system/mysqld.service ++++ b/usr/lib/systemd/system/mysqld.service +@@ -52,7 +52,7 @@ + ExecStart=/usr/bin/mysqld $MYSQLD_OPTS + + # Use this to switch malloc implementation +-EnvironmentFile=-/etc/sysconfig/mysql ++EnvironmentFile=-/etc/conf.d/mysql + + # Sets open_files_limit + LimitNOFILE = 10000 +@@ -64,4 +64,4 @@ + # Set enviroment variable MYSQLD_PARENT_PID. This is required for restart. + Environment=MYSQLD_PARENT_PID=1 + +-PrivateTmp=false ++PrivateTmp=true + +--- a/usr/lib/systemd/system/mysqld@.service ++++ b/usr/lib/systemd/system/mysqld@.service +@@ -52,7 +52,7 @@ + ExecStart=/usr/bin/mysqld --defaults-group-suffix=@%I $MYSQLD_OPTS + + # Use this to switch malloc implementation +-EnvironmentFile=-/etc/sysconfig/mysql ++EnvironmentFile=-/etc/conf.d/mysql + + # Sets open_files_limit + LimitNOFILE = 10000 +@@ -64,4 +64,4 @@ + # Set enviroment variable MYSQLD_PARENT_PID. This is required for restart. + Environment=MYSQLD_PARENT_PID=1 + +-PrivateTmp=false ++PrivateTmp=true diff --git a/systemd-sysusers.conf b/systemd-sysusers.conf new file mode 100644 index 000000000000..71d6c26bda1c --- /dev/null +++ b/systemd-sysusers.conf @@ -0,0 +1,3 @@ +u mysqlrouter 88 "MySQL" /var/lib/mysqlrouter +u mysql 89 "MySQL" /var/lib/mysql + diff --git a/systemd-tmpfiles.patch b/systemd-tmpfiles.patch new file mode 100644 index 000000000000..d567794b4b64 --- /dev/null +++ b/systemd-tmpfiles.patch @@ -0,0 +1,20 @@ +diff -Naur a/usr/lib/tmpfiles.d/mysql.conf b/usr/lib/tmpfiles.d/mysql.conf +--- a/usr/lib/tmpfiles.d/mysql.conf 2022-01-29 17:27:06.996635977 +0100 ++++ b/usr/lib/tmpfiles.d/mysql.conf 2022-01-29 17:28:52.839503490 +0100 +@@ -21,3 +21,4 @@ + # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + d /run/mysqld 0755 mysql mysql - ++d /var/lib/mysql 0700 mysql mysql - +diff -Naur a/usr/lib/tmpfiles.d/mysqlrouter.conf b/usr/lib/tmpfiles.d/mysqlrouter.conf +--- a/usr/lib/tmpfiles.d/mysqlrouter.conf 2022-01-29 17:47:51.586650998 +0100 ++++ b/usr/lib/tmpfiles.d/mysqlrouter.conf 2022-01-29 17:48:27.181437880 +0100 +@@ -20,4 +20,7 @@ + # along with this program; if not, write to the Free Software + # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +-d /run 0755 mysqlrouter mysqlrouter - ++d /run/mysqlrouter 0755 mysqlrouter mysqlrouter - ++d /var/lib/mysqlrouter 0700 mysqlrouter mysqlrouter - ++d /var/log/mysqlrouter 0750 mysqlrouter mysqlrouter - ++ |