Skip to content

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 the src/ files.
  • Compile src/*.c together with the application (they use only C11 plus platform headers).
  • Link ws2_32 on Windows.
  • Or just link build/libabscom.a and 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:

docker build -t abscom .

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

  1. Confirm the version in meson.build, .version, and installer.sh/installer.ps1 match.
  2. Run meson compile -C build and meson test -C build cleanly.
  3. Verify the example programs run (demo, py_demo, data_demo, v6_demo).
  4. Verify a --selfuninstall removes the installed files and the cache.
  5. Regenerate screenshots if the examples changed (python tools/generate_screenshots.py).
  6. Tag the release on GitHub.
  7. 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:

cc -std=c11 main.c $(pkg-config --cflags --libs abscom) -o main

Back to README.