From e0cf1d89c0ea475fdaf82dfce2d27c23b743dd3d Mon Sep 17 00:00:00 2001 From: Ryan Steinmetz Date: Fri, 29 Mar 2024 12:23:00 -0400 Subject: databases/proxysql: New port! ProxySQL is a high performance, high availability, protocol aware proxy for MySQL and forks (like Percona Server and MariaDB). With its ability to intelligently route queries, balance loads, and provide failover handling, ProxySQL empowers organizations to harness the full potential of their database infrastructure. Whether grappling with scalability challenges, striving to enhance performance, or seeking to ensure high availability, ProxySQL emerges as a versatile ally, capable of addressing diverse needs across various database environments. WWW: https://www.proxysql.com/ --- databases/Makefile | 1 + databases/proxysql/Makefile | 80 ++++++++++++++++++++++++ databases/proxysql/distinfo | 3 + databases/proxysql/files/proxysql.conf | 2 + databases/proxysql/files/proxysql.conf-newsyslog | 1 + databases/proxysql/files/proxysql.in | 62 ++++++++++++++++++ databases/proxysql/pkg-descr | 9 +++ databases/proxysql/pkg-message | 9 +++ databases/proxysql/pkg-plist | 10 +++ 9 files changed, 177 insertions(+) create mode 100644 databases/proxysql/Makefile create mode 100644 databases/proxysql/distinfo create mode 100644 databases/proxysql/files/proxysql.conf create mode 100644 databases/proxysql/files/proxysql.conf-newsyslog create mode 100644 databases/proxysql/files/proxysql.in create mode 100644 databases/proxysql/pkg-descr create mode 100644 databases/proxysql/pkg-message create mode 100644 databases/proxysql/pkg-plist (limited to 'databases') diff --git a/databases/Makefile b/databases/Makefile index 3a97008d17a3..e196510964d4 100644 --- a/databases/Makefile +++ b/databases/Makefile @@ -696,6 +696,7 @@ SUBDIR += proftpd-mod_sql_sqlite SUBDIR += proftpd-mod_sql_tds SUBDIR += prometheus-postgresql-adapter + SUBDIR += proxysql SUBDIR += pspg SUBDIR += puppetdb-terminus7 SUBDIR += puppetdb-terminus8 diff --git a/databases/proxysql/Makefile b/databases/proxysql/Makefile new file mode 100644 index 000000000000..b611737d97d8 --- /dev/null +++ b/databases/proxysql/Makefile @@ -0,0 +1,80 @@ +PORTNAME= proxysql +PORTVERSION= 2.6.1 +CATEGORIES= databases + +MAINTAINER= zi@FreeBSD.org +COMMENT= High performance, high availability, protocol-aware proxy for MySQL +WWW= https://www.proxysql.com/ + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= aclocal:devel/automake \ + autoreconf:devel/autoconf \ + bash:shells/bash \ + cmake:devel/cmake-core \ + ${LOCALBASE}/bin/grep:textproc/gnugrep \ + libgcrypt>0:security/libgcrypt \ + libtoolize:devel/libtool \ + e2fsprogs-libuuid>0:misc/e2fsprogs-libuuid \ + gnutls>0:security/gnutls +RUN_DEPENDS= libgcrypt>0:security/libgcrypt \ + e2fsprogs-libuuid>0:misc/e2fsprogs-libuuid \ + gnutls>0:security/gnutls + +USES= compiler:gcc-c++11-lib gmake libtool perl5 python:build shebangfix +USE_PERL5= build +USE_GCC= yes +MAKE_ENV= GIT_VERSION=${PORTVERSION} +USE_GITHUB= yes +ALL_TARGET= build_deps default +SHEBANG_FILES= deps/libssl/verify-bio_st-match.sh +MAKE_JOBS_UNSAFE=yes +LDFLAGS+= -L${LOCALBASE}/lib +CFLAGS+= -fPIC +CXXFLAGS+= -fPIC +BINARY_ALIAS= python3=${PYTHON_CMD} +USE_RC_SUBR= ${PORTNAME} + +USERS= ${PORTNAME} +GROUPS= ${PORTNAME} + +GH_ACCOUNT= sysown + +post-patch: + @${REINPLACE_CMD} -e 's,/etc/,${ETCDIR}/,g' ${WRKSRC}/lib/ProxySQL_GloVars.cpp + @${REINPLACE_CMD} \ + -e 's|strftime(__buffer, 25, "%Y-%m-%d %H:%M:%S", __tm_info);|snprintf(__buffer, 3, "%s", "");|g' \ + -e 's,"%s \[,"%s\[,g' \ + -e '/__timer/d' \ + -e '/__tm_info/d' \ + ${WRKSRC}/include/proxysql_debug.h + @${REINPLACE_CMD} \ + -e 's,/var/lib,/var/db,g' \ + -e '7s/^/errorlog="\/var\/log\/proxysql\/proxysql-error.log"\n\n/g' \ + -e '7s/^/pid="\/var\/run\/${PORTNAME}\/${PORTNAME}.pid"\n/g' \ + ${WRKSRC}/src/proxysql.cfg + @${REINPLACE_CMD} \ + -e 's,grep,${LOCALBASE}/bin/grep,g' \ + -e 's,ln -fsT,ln -fs,' \ + -e 's,PROXYSQLCLICKHOUSE=1 ,,g' \ + ${WRKSRC}/Makefile ${WRKSRC}/deps/Makefile \ + ${WRKSRC}/lib/Makefile ${WRKSRC}/src/Makefile + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/src/proxysql ${STAGEDIR}${LOCALBASE}/sbin + +post-install: + ${MKDIR} ${STAGEDIR}${ETCDIR} ${STAGEDIR}/var/db/${PORTNAME} \ + ${STAGEDIR}/var/run/${PORTNAME} \ + ${STAGEDIR}${LOCALBASE}/etc/syslog.d \ + ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d \ + ${STAGEDIR}/var/log/${PORTNAME} + ${INSTALL_DATA} ${FILESDIR}/${PORTNAME}.conf \ + ${STAGEDIR}${LOCALBASE}/etc/syslog.d + ${INSTALL_DATA} ${FILESDIR}/proxysql.conf-newsyslog \ + ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d/proxysql.conf.sample + ${INSTALL_DATA} ${WRKSRC}/src/proxysql.cfg \ + ${STAGEDIR}${ETCDIR}/proxysql.cfg.sample + +.include diff --git a/databases/proxysql/distinfo b/databases/proxysql/distinfo new file mode 100644 index 000000000000..663665b2cd2a --- /dev/null +++ b/databases/proxysql/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1711406812 +SHA256 (sysown-proxysql-2.6.1_GH0.tar.gz) = b4021fd4bd27ef2c506da91396ed995fa1d6ee8f3d421fcb200331716f9a8979 +SIZE (sysown-proxysql-2.6.1_GH0.tar.gz) = 50028685 diff --git a/databases/proxysql/files/proxysql.conf b/databases/proxysql/files/proxysql.conf new file mode 100644 index 000000000000..68fbfbcf23e8 --- /dev/null +++ b/databases/proxysql/files/proxysql.conf @@ -0,0 +1,2 @@ +!proxysql +*.* /var/log/proxysql.log diff --git a/databases/proxysql/files/proxysql.conf-newsyslog b/databases/proxysql/files/proxysql.conf-newsyslog new file mode 100644 index 000000000000..8a51ca3a6927 --- /dev/null +++ b/databases/proxysql/files/proxysql.conf-newsyslog @@ -0,0 +1 @@ +/var/log/proxysql.log root:wheel 640 10 1000 * JC diff --git a/databases/proxysql/files/proxysql.in b/databases/proxysql/files/proxysql.in new file mode 100644 index 000000000000..781d5b4bdf1f --- /dev/null +++ b/databases/proxysql/files/proxysql.in @@ -0,0 +1,62 @@ +#!/bin/sh + +# PROVIDE: proxysql +# REQUIRE: LOGIN mysql +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# proxysql_enable (bool): Set to NO by default. +# Set it to YES to enable proxysql. +# proxysql_user (string): Set user that proxysql will run under +# Default is "proxysql". +# proxysql_group (string): Set group that proxysql will run under +# Default is "proxysql". +# proxysql_config (string): Set path to config file +# Default is "%%ETCDIR%%/proxysql.cfg". +# proxysql_args (string): Set extra arguments to pass to proxysql +# Default is "". + +. /etc/rc.subr + +name=proxysql +rcvar=proxysql_enable + +load_rc_config $name + +: ${proxysql_enable:="NO"} +: ${proxysql_user:="proxysql"} +: ${proxysql_group:="proxysql"} +: ${proxysql_config:="%%ETCDIR%%/proxysql.cfg"} +: ${proxysql_socket:="/var/run/proxysql/proxysql.sock"} +: ${proxysql_datadir:="/var/db/proxysql"} +: ${proxysql_args:=""} +: ${proxysql_restart_delay:="10"} + + +pidfile="/var/run/proxysql/proxysql.pid" +command="/usr/sbin/daemon" +proxysql_command="%%PREFIX%%/sbin/proxysql" +command_args="-rP ${pidfile} -S -R ${proxysql_restart_delay} \ + -T ${name} ${proxysql_command} \ + -f -c ${proxysql_config} -S ${proxysql_socket} \ + -D ${proxysql_datadir} \ + --no-version-check ${proxysql_args}" +required_files="${proxysql_config}" +extra_commands="reload initialize" +reload_cmd=proxysql_reload +initialize_cmd=proxysql_initialize + +proxysql_initialize() +{ + su -m ${proxysql_user} -c "${proxysql_command} --initial" +} + +proxysql_reload() +{ + su -m ${proxysql_user} -c "${proxysql_command} --reload" +} + +load_rc_config $name +run_rc_command "$1" diff --git a/databases/proxysql/pkg-descr b/databases/proxysql/pkg-descr new file mode 100644 index 000000000000..265692c0bee4 --- /dev/null +++ b/databases/proxysql/pkg-descr @@ -0,0 +1,9 @@ +ProxySQL is a high performance, high availability, protocol aware proxy for +MySQL and forks (like Percona Server and MariaDB). + +With its ability to intelligently route queries, balance loads, and provide +failover handling, ProxySQL empowers organizations to harness the full +potential of their database infrastructure. Whether grappling with +scalability challenges, striving to enhance performance, or seeking to +ensure high availability, ProxySQL emerges as a versatile ally, capable of +addressing diverse needs across various database environments. diff --git a/databases/proxysql/pkg-message b/databases/proxysql/pkg-message new file mode 100644 index 000000000000..f8af81593652 --- /dev/null +++ b/databases/proxysql/pkg-message @@ -0,0 +1,9 @@ +[ +{ type: install + message: <