Deployment¶
Abscom is a C library, so "deployment" means making the library and headers available to consuming projects. There is no application or service to deploy.
Install layout¶
meson install -C build (or the one-line installers) installs:
- Headers under
include/abscom/:abs.h,abs_common.h,abs_dynarray.h,abs_string.h,abs_hash.h,abs_hashmap.h,abs_time.h,abs_fs.h. - The static and shared libraries in the platform's library directory.
- A pkg-config file,
lib/pkgconfig/abscom.pc, generated by Meson (Cflags: -I${includedir}, so code uses#include <abscom/abs.h>).
The one-line installers (installer.sh / installer.ps1) produce the same layout and additionally keep an uninstall manifest plus prefix.txt in their cache directory, so a single --selfuninstall run removes everything.
Vendoring¶
Because Abscom has no third-party dependencies, the simplest distribution is to vendor the sources into the consuming project:
- Copy the
include/abscom/headers and thesrc/files. - Compile
src/*.ctogether with the application (they use only C11 plus platform headers). - Link
ws2_32on Windows. - Or just link
build/libabscom.aand pass-Iinclude.
Docker¶
A Dockerfile is provided for reproducible CI-style builds. It uses a Debian base, installs a compiler plus Meson and Ninja, and runs the test suite during the build:
The image fails the build if any test fails, which makes it useful as a CI gate. See development.md for the underlying commands.
Distribution checklist¶
- Confirm the version in
meson.build,.version, andinstaller.sh/installer.ps1match. - Run
meson compile -C buildandmeson test -C buildcleanly. - Verify the example programs run (
demo,py_demo,data_demo,v6_demo). - Verify a
--selfuninstallremoves the installed files and the cache. - Regenerate screenshots if the examples changed (
python tools/generate_screenshots.py). - Tag the release on GitHub.
- Add release notes to
CHANGELOG.md.
Consuming from your own project¶
Minimal Meson consumer:
project('myapp', 'c')
abscom_dep = subproject('abscom').get_variable('abscom_dep')
executable('myapp', 'main.c', dependencies: abscom_dep)
A hand-written build links libabscom.a (or -labscom) and adds the include/abscom directory to the include path. With an installed copy, prefer pkg-config:
Back to README.