Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

proxysql-test-deps

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

Why this repo exists

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.

Release artifacts

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).

Version pinning

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.

Release flow

# 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.12

The release.yml workflow:

  1. Reads VERSIONS.env
  2. Runs a 2x3 matrix of {ubuntu22, ubuntu24} x {mariadb, mysql57, mysql84}
  3. Each matrix cell runs scripts/build.sh <connector> inside a fresh ubuntu:22.04 / ubuntu:24.04 container, then scripts/package.sh
  4. 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.

Local dev

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.gz

No 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.

About

Pre-built static libraries of MySQL/MariaDB client connectors used by ProxySQL TAP tests. Published as GitHub Release tarballs to avoid recompiling on every ProxySQL CI run.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages