You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
proxysql/Makefile

536 lines
17 KiB

#!/bin/make -f
### NOTES:
### version string is fetched from git history
### when not available, specify GIT_VERSION on commnad line:
###
### ```
### export GIT_VERSION=3.x.y-dev
### ```
GIT_VERSION ?= $(shell git describe --long --abbrev=7 2>/dev/null || git describe --long --abbrev=7 --always)
ifndef GIT_VERSION
$(error GIT_VERSION is not set)
endif
# If PROXYSQLGENAI is enabled, increment the major version number by 1
# Only increment if GIT_VERSION was not passed from environment (to avoid double-incrementing in Docker)
ifeq ($(PROXYSQLGENAI),1)
ifneq ($(origin GIT_VERSION),environment)
GIT_VERSION := $(shell echo "$(GIT_VERSION)" | awk -F. '{printf "%d.%s", $$1+1, substr($$0, length($$1)+2)}')
endif
endif
export GIT_VERSION
# Extract CURVER from GIT_VERSION (first 3 numbers, e.g., 3.0.6 from 3.0.6-388-ga94b7d6)
CURVER := $(shell echo "$(GIT_VERSION)" | sed -nE 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/p' | head -1)
# Validate CURVER has 3 numbers separated by dots
CURVER_CHECK := $(shell echo "$(CURVER)" | grep -cE '^[0-9]+\.[0-9]+\.[0-9]+$$')
ifeq ($(CURVER_CHECK),0)
$(error CURVER "$(CURVER)" derived from GIT_VERSION "$(GIT_VERSION)" does not have 3 numbers separated by dots (expected format: X.Y.Z)
endif
export CURVER
export PROXYSQLGENAI
### NOTES:
### SOURCE_DATE_EPOCH is used for reproducible builds
### for details consult https://reproducible-builds.org/docs/source-date-epoch/
SOURCE_DATE_EPOCH ?= $(shell git show -s --format=%ct HEAD || date +%s)
export SOURCE_DATE_EPOCH
### NOTES:
### to compile without jemalloc, set environment variable NOJEMALLOC=1
### to compile with gcov code coverage, set environment variable WITHGCOV=1
### to compile with ASAN, set environment variables NOJEMALLOC=1, WITHASAN=1:
### * To perform a full ProxySQL build with ASAN then execute:
###
### ```
### make build_deps_debug -j$(nproc) && make debug -j$(nproc) && make build_tap_test_debug -j$(nproc)
### ```
###
### ** to use on-demand coredump generation feature, compile code without ASAN option (WITHASAN=0).
###
### NOTES for Valgrind:
### When running Valgrind, SQLite's internal memory allocator may cause false
### positives in pcache*, memjrnl*, and sqlite3Btree* functions. To avoid this,
### rebuild SQLite with -USQLITE_ENABLE_MEMORY_MANAGEMENT in deps/Makefile
O0 := -O0
O2 := -O2
O1 := -O1
O3 := -O3 -mtune=native
#EXTRALINK := #-pg
ALL_DEBUG := $(O0) -ggdb -DDEBUG
NO_DEBUG := $(O2) -ggdb
DEBUG := $(ALL_DEBUG)
#export DEBUG
#export EXTRALINK
export MAKE
### detect compiler support for c++17 (required)
CPLUSPLUS := $(shell ${CC} -std=c++17 -dM -E -x c++ /dev/null 2>/dev/null | grep -F __cplusplus | egrep -o '[0-9]{6}L')
ifneq ($(CPLUSPLUS),201703L)
$(error Compiler must support at least c++17)
endif
STDCPP := -std=c++17 -DCXX17
### detect distro
DISTRO := Unknown
ifneq (,$(wildcard /etc/os-release))
DISTRO := $(shell awk -F= '/^NAME/{print $$2}' /etc/os-release)
endif
### multiprocessing
NPROCS := 1
OS := $(shell uname -s)
UNAME_S := $(OS)
ifeq ($(OS),Linux)
NPROCS := $(shell nproc)
endif
ifneq (,$(findstring $(OS),Darwin FreeBSD))
NPROCS := $(shell sysctl -n hw.ncpu)
LEGACY_BUILD := 1
export CC=gcc
export CXX=g++
endif
export MAKEOPT := -j${NPROCS}
### systemd
SYSTEMD := 0
ifeq ($(wildcard /usr/lib/systemd/system), /usr/lib/systemd/system)
SYSTEMD := 1
endif
### check user/group
USERCHECK :=
GROUPCHECK :=
ifeq ($(OS),Linux)
USERCHECK := $(shell getent passwd proxysql)
GROUPCHECK := $(shell getent group proxysql)
endif
### main targets
.DEFAULT: default
.PHONY: default
default: build_src
.PHONY: debug
debug: build_src_debug
.PHONY: testaurora_random
testaurora_random: build_src_testaurora_random
.PHONY: testaurora
testaurora: build_src_testaurora
# cd test/tap && OPTZ="${O0} -ggdb -DDEBUG -DTEST_AURORA" CC=${CC} CXX=${CXX} ${MAKE}
# cd test/tap/tests && OPTZ="${O0} -ggdb -DDEBUG -DTEST_AURORA" CC=${CC} CXX=${CXX} ${MAKE} $(MAKECMDGOALS)
.PHONY: testgalera
testgalera: build_src_testgalera
cd test/tap && OPTZ="${O0} -ggdb -DDEBUG -DTEST_GALERA" CC=${CC} CXX=${CXX} ${MAKE}
cd test/tap/tests && OPTZ="${O0} -ggdb -DDEBUG -DTEST_GALERA" CC=${CC} CXX=${CXX} ${MAKE} $(MAKECMDGOALS)
.PHONY: testgrouprep
testgrouprep: build_src_testgrouprep
.PHONY: testreadonly
testreadonly: build_src_testreadonly
.PHONY: testreplicationlag
testreplicationlag: build_src_testreplicationlag
.PHONY: testall
testall: build_src_testall
.PHONY: clickhouse
clickhouse: build_src_clickhouse
.PHONY: debug_clickhouse
debug_clickhouse: build_src_debug_clickhouse
### helper targets
.PHONY: build_deps
build_deps: $(if $(LEGACY_BUILD),build_deps_legacy,build_deps_default)
.PHONY: build_lib
build_lib: $(if $(LEGACY_BUILD),build_lib_legacy,build_lib_default)
.PHONY: build_src
build_src: $(if $(LEGACY_BUILD),build_src_legacy,build_src_default)
.PHONY: build_deps_debug
build_deps_debug: $(if $(LEGACY_BUILD),build_deps_debug_legacy,build_deps_debug_default)
.PHONY: build_lib_debug
build_lib_debug: $(if $(LEGACY_BUILD),build_lib_debug_legacy,build_lib_debug_default)
.PHONY: build_src_debug
build_src_debug: $(if $(LEGACY_BUILD),build_src_debug_legacy,build_src_debug_default)
# RAG ingester (PoC)
.PHONY: rag_ingest
rag_ingest: build_deps
cd RAG_POC && ${MAKE} CC=${CC} CXX=${CXX} CXXFLAGS="${CXXFLAGS}"
.PHONY: rag_ingest_clean
rag_ingest_clean:
cd RAG_POC && ${MAKE} clean
# legacy build targets (pre c++17)
.PHONY: build_deps_legacy
build_deps_legacy:
cd deps && OPTZ="${O2} -ggdb" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_legacy
build_lib_legacy: build_deps_legacy
cd lib && OPTZ="${O2} -ggdb" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_legacy
build_src_legacy: build_lib_legacy
cd src && OPTZ="${O2} -ggdb" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_deps_debug_legacy
build_deps_debug_legacy:
cd deps && OPTZ="${O0} -ggdb -DDEBUG" PROXYDEBUG=1 CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_debug_legacy
build_lib_debug_legacy: build_deps_debug_legacy
cd lib && OPTZ="${O0} -ggdb -DDEBUG" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_debug_legacy
build_src_debug_legacy: build_lib_debug_legacy
cd src && OPTZ="${O0} -ggdb -DDEBUG" CC=${CC} CXX=${CXX} ${MAKE}
#--
.PHONY: build_src_testaurora
build_src_testaurora: build_lib_testaurora
cd src && OPTZ="${O0} -ggdb -DDEBUG -DTEST_AURORA" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_testaurora_random
build_src_testaurora_random: build_lib_testaurora_random
cd src && OPTZ="${O0} -ggdb -DDEBUG -DTEST_AURORA -DTEST_AURORA_RANDOM" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_testaurora
build_lib_testaurora: build_deps_debug
cd lib && OPTZ="${O0} -ggdb -DDEBUG -DTEST_AURORA" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_testaurora_random
build_lib_testaurora_random: build_deps_debug
cd lib && OPTZ="${O0} -ggdb -DDEBUG -DTEST_AURORA -DTEST_AURORA_RANDOM" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_testgalera
build_src_testgalera: build_lib_testgalera
cd src && OPTZ="${O0} -ggdb -DDEBUG -DTEST_GALERA" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_testgalera
build_lib_testgalera: build_deps_debug
cd lib && OPTZ="${O0} -ggdb -DDEBUG -DTEST_GALERA" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_testgrouprep
build_src_testgrouprep: build_lib_testgrouprep
cd src && OPTZ="${O0} -ggdb -DDEBUG -DTEST_GROUPREP" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_testgrouprep
build_lib_testgrouprep: build_deps_debug
cd lib && OPTZ="${O0} -ggdb -DDEBUG -DTEST_GROUPREP" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_testreadonly
build_src_testreadonly: build_lib_testreadonly
cd src && OPTZ="${O0} -ggdb -DDEBUG -DTEST_READONLY" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_testreadonly
build_lib_testreadonly: build_deps_debug
cd lib && OPTZ="${O0} -ggdb -DDEBUG -DTEST_READONLY" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_testreplicationlag
build_src_testreplicationlag: build_lib_testreplicationlag
cd src && OPTZ="${O0} -ggdb -DDEBUG -DTEST_REPLICATIONLAG" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_testreplicationlag
build_lib_testreplicationlag: build_deps_debug
cd lib && OPTZ="${O0} -ggdb -DDEBUG -DTEST_REPLICATIONLAG" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_testall
build_src_testall: build_lib_testall
cd src && OPTZ="${O0} -ggdb -DDEBUG -DTEST_AURORA -DTEST_GALERA -DTEST_GROUPREP -DTEST_READONLY -DTEST_REPLICATIONLAG" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_testall
build_lib_testall: build_deps_debug
cd lib && OPTZ="${O0} -ggdb -DDEBUG -DTEST_AURORA -DTEST_GALERA -DTEST_GROUPREP -DTEST_READONLY -DTEST_REPLICATIONLAG" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_tap_test
build_tap_test: build_tap_tests
.PHONY: build_tap_tests
build_tap_tests: build_src
cd test/tap && OPTZ="${O2} -ggdb" CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_tap_test_debug
build_tap_test_debug: build_tap_tests_debug
.PHONY: build_tap_tests_debug
build_tap_tests_debug: build_src_debug
cd test/tap && OPTZ="${O0} -ggdb -DDEBUG" CC=${CC} CXX=${CXX} ${MAKE} debug
# ClickHouse build targets are now default build targets.
# To maintain backward compatibility, ClickHouse targets are still available.
.PHONY: build_deps_clickhouse
build_deps_clickhouse: build_deps_default
.PHONY: build_deps_debug_clickhouse
build_deps_debug_clickhouse: build_deps_debug_default
.PHONY: build_lib_clickhouse
build_lib_clickhouse: build_lib_default
.PHONY: build_lib_debug_clickhouse
build_lib_debug_clickhouse: build_lib_debug_default
.PHONY: build_src_clickhouse
build_src_clickhouse: build_src_default
.PHONY: build_src_debug_clickhouse
build_src_debug_clickhouse: build_src_debug_default
#--
.PHONY: build_deps_default
build_deps_default:
cd deps && OPTZ="${O2} -ggdb" PROXYSQLCLICKHOUSE=1 PROXYSQLGENAI=$(PROXYSQLGENAI) CC=${CC} CXX=${CXX} ${MAKE}
PHONY: build_deps_debug_default
build_deps_debug_default:
cd deps && OPTZ="${O0} -ggdb -DDEBUG" PROXYSQLCLICKHOUSE=1 PROXYSQLGENAI=$(PROXYSQLGENAI) PROXYDEBUG=1 CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_default
build_lib_default: build_deps_default
cd lib && OPTZ="${O2} -ggdb" PROXYSQLCLICKHOUSE=1 PROXYSQLGENAI=$(PROXYSQLGENAI) CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_lib_debug_default
build_lib_debug_default: build_deps_debug_default
cd lib && OPTZ="${O0} -ggdb -DDEBUG" PROXYSQLCLICKHOUSE=1 PROXYSQLGENAI=$(PROXYSQLGENAI) CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_default
build_src_default: build_lib_default
cd src && OPTZ="${O2} -ggdb" PROXYSQLCLICKHOUSE=1 PROXYSQLGENAI=$(PROXYSQLGENAI) CC=${CC} CXX=${CXX} ${MAKE}
.PHONY: build_src_debug_default
build_src_debug_default: build_lib_debug_default
cd src && OPTZ="${O0} -ggdb -DDEBUG" PROXYSQLCLICKHOUSE=1 PROXYSQLGENAI=$(PROXYSQLGENAI) CC=${CC} CXX=${CXX} ${MAKE}
### packaging targets
SYS_KERN := $(shell uname -s)
#SYS_DIST := $(shell source /etc/os-release &>/dev/null; if [ -z ${NAME} ]; then head -1 /etc/redhat-release; else echo ${NAME}; fi | awk '{ print $1 })
SYS_ARCH := $(shell uname -m)
REL_ARCH = $(subst x86_64,amd64,$(subst aarch64,arm64,$(SYS_ARCH)))
RPM_ARCH = .$(SYS_ARCH)
DEB_ARCH = _$(REL_ARCH)
ifeq ($(UNAME_S),Darwin)
REL_VERS := $(shell echo ${GIT_VERSION} | sed -E 's/^v//' | grep -Eo '^[0-9\.]+')
else
REL_VERS := $(shell echo ${GIT_VERSION} | grep -Po '(?<=^v|^)[\d\.]+')
endif
RPM_VERS := -$(REL_VERS)-1
DEB_VERS := _$(REL_VERS)
packages: $(REL_ARCH)-packages ;
almalinux: $(REL_ARCH)-almalinux ;
centos: $(REL_ARCH)-centos ;
debian: $(REL_ARCH)-debian ;
fedora: $(REL_ARCH)-fedora ;
opensuse: $(REL_ARCH)-opensuse ;
ubuntu: $(REL_ARCH)-ubuntu ;
pkglist: $(REL_ARCH)-pkglist
amd64-%: SYS_ARCH := x86_64
amd64-packages: amd64-centos amd64-ubuntu amd64-debian amd64-fedora amd64-opensuse amd64-almalinux
amd64-almalinux: almalinux8 almalinux8-clang almalinux8-dbg almalinux9 almalinux9-clang almalinux9-dbg almalinux10 almalinux10-clang almalinux10-dbg
amd64-centos: centos9 centos9-clang centos9-dbg centos10 centos10-clang centos10-dbg
amd64-debian: debian12 debian12-clang debian12-dbg debian13 debian13-clang debian13-dbg
amd64-fedora: fedora42 fedora42-clang fedora42-dbg fedora43 fedora43-clang fedora43-dbg
amd64-opensuse: opensuse15 opensuse15-clang opensuse15-dbg opensuse16 opensuse16-clang opensuse16-dbg
amd64-ubuntu: ubuntu22 ubuntu22-clang ubuntu22-dbg ubuntu24 ubuntu24-clang ubuntu24-dbg
amd64-pkglist:
@${MAKE} -nk amd64-packages 2>/dev/null | grep -Po '(?<=binaries/)proxysql\S+$$'
arm64-%: SYS_ARCH := aarch64
arm64-packages: arm64-centos arm64-debian arm64-ubuntu arm64-fedora arm64-opensuse arm64-almalinux
arm64-almalinux: almalinux8 almalinux9 almalinux10
arm64-centos: centos9 centos10
arm64-debian: debian12 debian13
arm64-fedora: fedora42 fedora43
arm64-opensuse: opensuse15 opensuse16
arm64-ubuntu: ubuntu22 ubuntu24
arm64-pkglist:
@${MAKE} -nk arm64-packages 2>/dev/null | grep -Po '(?<=binaries/)proxysql\S+$$'
almalinux%: build-almalinux% ;
centos%: build-centos% ;
debian%: build-debian% ;
fedora%: build-fedora% ;
opensuse%: build-opensuse% ;
ubuntu%: build-ubuntu% ;
.PHONY: build-%
.NOTPARALLEL: build-%
build-%: BLD_NAME=$(patsubst build-%,%,$@)
build-%: PKG_VERS=$(if $(filter $(shell echo ${BLD_NAME} | grep -Po '[a-z]+'),debian ubuntu),$(DEB_VERS),$(RPM_VERS))
build-%: PKG_TYPE=$(if $(filter $(shell echo $(BLD_NAME) | grep -Po '\-de?bu?g|\-test|\-tap'),-dbg -debug -test -tap),-dbg,)
build-%: PKG_NAME=$(firstword $(subst -, ,$(BLD_NAME)))
build-%: PKG_COMP=$(if $(filter $(shell echo $(BLD_NAME) | grep -Po '\-clang'),-clang),-clang,)
build-%: PKG_ARCH=$(if $(filter $(shell echo ${BLD_NAME} | grep -Po '[a-z]+'),debian ubuntu),$(DEB_ARCH),$(RPM_ARCH))
build-%: PKG_KIND=$(if $(filter $(shell echo ${BLD_NAME} | grep -Po '[a-z]+'),debian ubuntu),deb,rpm)
build-%: PKG_FILE=binaries/proxysql$(PKG_VERS)$(PKG_TYPE)-$(PKG_NAME)$(PKG_COMP)$(PKG_ARCH).$(PKG_KIND)
build-%:
@echo 'building $@'
@IMG_NAME=$(PKG_NAME) IMG_TYPE=$(subst -,_,$(PKG_TYPE)) IMG_COMP=$(subst -,_,$(PKG_COMP)) BLD_NAME=$(BLD_NAME) $(MAKE) $(PKG_FILE)
.NOTPARALLEL: binaries/proxysql%
binaries/proxysql%:
${MAKE} cleanbuild
${MAKE} cleantest
find . -not -path "./binaries/*" -not -path "./.git/*" | xargs touch -h --date=@${SOURCE_DATE_EPOCH}
@docker compose -p "${GIT_VERSION/./}" down -v --remove-orphans
@docker compose -p "${GIT_VERSION/./}" up $(IMG_NAME)$(IMG_TYPE)$(IMG_COMP)_build
@docker compose -p "${GIT_VERSION/./}" down -v --remove-orphans
### clean targets
.PHONY: clean
clean:
cd lib && ${MAKE} clean
cd src && ${MAKE} clean
cd test/tap && ${MAKE} clean
rm -f pkgroot || true
.PHONY: cleandeps
cleandeps:
cd deps && ${MAKE} cleanall
cd lib && ${MAKE} clean
cd src && ${MAKE} clean
.PHONY: cleandev
cleandev:
cd lib && ${MAKE} clean
cd src && ${MAKE} clean
.PHONY: cleantest
cleantest:
cd test/tap && ${MAKE} clean
cd test/deps && ${MAKE} cleanall
.PHONY: cleanall
cleanall:
cd deps && ${MAKE} cleanall
cd lib && ${MAKE} clean
cd src && ${MAKE} clean
cd test/tap && ${MAKE} clean
cd test/deps && ${MAKE} cleanall
rm -f binaries/* || true
rm -rf pkgroot || true
.PHONY: cleanbuild
cleanbuild:
cd deps && ${MAKE} cleanall
cd lib && ${MAKE} clean
cd src && ${MAKE} clean
rm -rf pkgroot || true
### install targets
.PHONY: install
install: src/proxysql
install -m 0755 src/proxysql /usr/bin
install -m 0600 etc/proxysql.cnf /etc
if [ ! -d /var/lib/proxysql ]; then mkdir /var/lib/proxysql ; fi
ifeq ($(findstring proxysql,$(USERCHECK)),)
@echo "Creating proxysql user and group"
useradd -r -U -s /bin/false proxysql
endif
ifeq ($(SYSTEMD), 1)
install -m 0644 systemd/system/proxysql.service /usr/lib/systemd/system/
systemctl enable proxysql.service
else
install -m 0755 etc/init.d/proxysql /etc/init.d
ifeq ($(DISTRO),"CentOS Linux")
chkconfig --level 0123456 proxysql on
else
ifeq ($(DISTRO),"Rocky Linux")
chkconfig --level 0123456 proxysql on
else
ifeq ($(DISTRO),"Red Hat Enterprise Linux Server")
chkconfig --level 0123456 proxysql on
else
ifeq ($(DISTRO),"Ubuntu")
update-rc.d proxysql defaults
else
ifeq ($(DISTRO),"Debian GNU/Linux")
update-rc.d proxysql defaults
else
ifeq ($(DISTRO),"Unknown")
$(warning Not sure how to install proxysql service on this OS)
endif
endif
endif
endif
endif
endif
endif
.PHONY: uninstall
uninstall:
if [ -f /etc/proxysql.cnf ]; then rm /etc/proxysql.cnf ; fi
if [ -f /usr/bin/proxysql ]; then rm /usr/bin/proxysql ; fi
if [ -d /var/lib/proxysql ]; then rmdir /var/lib/proxysql 2>/dev/null || true ; fi
ifeq ($(SYSTEMD), 1)
systemctl stop proxysql.service
if [ -f /usr/lib/systemd/system/proxysql.service ]; then rm /usr/lib/systemd/system/proxysql.service ; fi
find /etc/systemd -name "proxysql.service" -exec rm {} \;
systemctl daemon-reload
else
ifeq ($(DISTRO),"CentOS Linux")
chkconfig --level 0123456 proxysql off
if [ -f /etc/init.d/proxysql ]; then rm /etc/init.d/proxysql ; fi
else
ifeq ($(DISTRO),"Red Hat Enterprise Linux Server")
chkconfig --level 0123456 proxysql off
if [ -f /etc/init.d/proxysql ]; then rm /etc/init.d/proxysql ; fi
else
ifeq ($(DISTRO),"Ubuntu")
if [ -f /etc/init.d/proxysql ]; then rm /etc/init.d/proxysql ; fi
update-rc.d proxysql remove
else
ifeq ($(DISTRO),"Debian GNU/Linux")
if [ -f /etc/init.d/proxysql ]; then rm /etc/init.d/proxysql ; fi
update-rc.d proxysql remove
else
ifeq ($(DISTRO),"Unknown")
$(warning Not sure how to uninstall proxysql service on this OS)
endif
endif
endif
endif
endif
endif
ifneq ($(findstring proxysql,$(USERCHECK)),)
@echo "Deleting proxysql user"
userdel proxysql
endif
ifneq ($(findstring proxysql,$(GROUPCHECK)),)
@echo "Deleting proxysql group"
groupdel proxysql
endif