summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD239
1 files changed, 239 insertions, 0 deletions
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"
+}
+