Pre-built static libraries for the three MySQL / MariaDB client connectors that ProxySQL's TAP test suite links against:
| Connector | Upstream version | Purpose |
|---|---|---|
mariadb |
mariadb-connector-c 3.1.9 | MariaDB protocol tests |
mysql57 |
mysql-boost-5.7.44 | MySQL 5.7 compatibility tests |
mysql84 |
mysql-8.4.0 | MySQL 8.4 compatibility tests |
Before this repo, test/deps/ in sysown/proxysql compiled all three connectors
from source on every cache miss. The MySQL 8.4 build alone dominates
make <distro>-tap because -DWITHOUT_SERVER=ON still builds every component
MySQL needs to build itself, producing a ~2.8 GB test/deps/ tree. That tree
then bloated the _test cache past GitHub's 10 GB per-repo quota and forced a
readelf-based strip step in ci-builds.yml.
This repo builds the three connectors once per release, packages only
include/ + the static .a, and publishes them as GitHub Release assets.
ProxySQL CI downloads the matching tarballs instead of compiling.
Every release tag publishes 6 assets (2 distros x 3 connectors):
proxysql-test-deps-mariadb-<VER>-ubuntu22-x86_64.tar.gz
proxysql-test-deps-mariadb-<VER>-ubuntu24-x86_64.tar.gz
proxysql-test-deps-mysql57-<VER>-ubuntu22-x86_64.tar.gz
proxysql-test-deps-mysql57-<VER>-ubuntu24-x86_64.tar.gz
proxysql-test-deps-mysql84-<VER>-ubuntu22-x86_64.tar.gz
proxysql-test-deps-mysql84-<VER>-ubuntu24-x86_64.tar.gz
Each tarball is self-contained and extracts to this layout (matching the
legacy test/deps/<connector>/mysql-connector-c/ paths so the existing
include/makefiles_paths.mk in sysown/proxysql keeps working verbatim):
<extract-root>/
include/ # connector headers
libbinlogevents/export/ # mysql57 / mysql84 only
libmysql/libmysqlclient.a (mysql57 / mysql84)
libmariadb/libmariadbclient.a (mariadb)
pkg-manifest.txt # version, source sha256, build date, compiler, glibc
No shared libraries. No dynamic dependencies on this repo's contents. Every
TAP binary in sysown/proxysql statically links these .a files; this was
verified in sysown/proxysql#5603 via a readelf -d sweep of all 380 TAP
binaries (zero NEEDED or RUNPATH references to test/deps).
VERSIONS.env at the repo root declares the current set:
MARIADB=3.1.9+1
MYSQL57=5.7.44+1
MYSQL84=8.4.0+1
The +N suffix is our build revision — bump it when the build recipe
(patch set, cmake flags, toolchain) changes but the upstream version doesn't.
The upstream version left of the + is cosmetic inside the tag but is what
gets stamped into the tarball manifest.
ProxySQL pins which release to pull by committing its own
test/deps/VERSIONS.env with matching values; test/deps/Makefile reads
that file and fails loudly if any pinned asset is missing from the release.
# edit VERSIONS.env if versions changed
git add VERSIONS.env && git commit -m "bump mysql84 to 8.4.0+2"
# tag + push triggers .github/workflows/release.yml
git tag v2026.04.12
git push origin v2026.04.12The release.yml workflow:
- Reads
VERSIONS.env - Runs a 2x3 matrix of
{ubuntu22, ubuntu24} x {mariadb, mysql57, mysql84} - Each matrix cell runs
scripts/build.sh <connector>inside a freshubuntu:22.04/ubuntu:24.04container, thenscripts/package.sh - Uploads the 6 tarballs as assets of GitHub Release
v2026.04.12
Pull requests run ci.yml, which executes the same matrix but does not
create a release — just validates that the build still works end-to-end.
Reproduce a release build on ubuntu22 with:
docker run --rm -v $PWD:/src -w /src ubuntu:22.04 bash -lc '
apt-get update && apt-get install -y build-essential cmake git curl patch libssl-dev zlib1g-dev perl pkg-config bison libncurses-dev libreadline-dev
scripts/build.sh mysql84
scripts/package.sh mysql84 ubuntu22
'
ls dist/ # proxysql-test-deps-mysql84-<VER>-ubuntu22-x86_64.tar.gzNo macOS support today. If a contributor wants macOS artifacts later, they'd
add a macos-arm64 matrix entry and the consumer side of ProxySQL's
test/deps/Makefile would learn to pick it up.