Skip to content

Commit

Permalink
databases/proxysql: New port!
Browse files Browse the repository at this point in the history
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/
  • Loading branch information
zi0r committed Mar 29, 2024
1 parent bfc0a43 commit e0cf1d8
Show file tree
Hide file tree
Showing 9 changed files with 177 additions and 0 deletions.
1 change: 1 addition & 0 deletions databases/Makefile
Expand Up @@ -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
Expand Down
80 changes: 80 additions & 0 deletions 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 <bsd.port.mk>
3 changes: 3 additions & 0 deletions 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
2 changes: 2 additions & 0 deletions databases/proxysql/files/proxysql.conf
@@ -0,0 +1,2 @@
!proxysql
*.* /var/log/proxysql.log
1 change: 1 addition & 0 deletions databases/proxysql/files/proxysql.conf-newsyslog
@@ -0,0 +1 @@
/var/log/proxysql.log root:wheel 640 10 1000 * JC
62 changes: 62 additions & 0 deletions 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"
9 changes: 9 additions & 0 deletions 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.
9 changes: 9 additions & 0 deletions databases/proxysql/pkg-message
@@ -0,0 +1,9 @@
[
{ type: install
message: <<EOM
In order for logging to function, you must restart syslogd:

# service syslogd restart
EOM
}
]
10 changes: 10 additions & 0 deletions databases/proxysql/pkg-plist
@@ -0,0 +1,10 @@
etc/syslog.d/proxysql.conf
sbin/proxysql
@dir(,proxysql,0750) %%ETCDIR%%
@sample(,proxysql,0640) %%ETCDIR%%/proxysql.cfg.sample
@sample %%LOCALBASE%%/etc/newsyslog.conf.d/proxysql.conf.sample
@dir(proxysql,proxysql,0750) /var/db/proxysql
@dir(proxysql,proxysql,0750) /var/run/proxysql
@dir(proxysql,proxysql,0750) /var/log/proxysql
@postexec test -f /var/log/proxysql.log || touch /var/log/proxysql.log
@postexec chmod 600 /var/log/proxysql.log

0 comments on commit e0cf1d8

Please sign in to comment.