Skip to content

sysown/proxysql-test-deps

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages