Alien-TinyCDB
view release on metacpan or search on metacpan
.claude/skills/getty-perl-release-author-getty/SKILL.md view on Meta::CPAN
effect.
## Release Workflow
```bash
dzil release # Builds, tests, uploads to CPAN, bumps version, commits, tags
```
Read the `{{$NEXT}}` section of `Changes` once as a whole first. It was written bullet
by bullet over weeks, so this is where entries circling one topic get merged into one
and over-detailed ones get cut back (skill `getty-git-commit-style`). It is not only a
changelog: `GitHub::CreateRelease` runs with `notes_from = ChangeLog` and publishes the
section verbatim as the release notes.
Fix it in its own commit *before* `dzil release`. `Changes` sits in the release commit's
`allow_dirty` list, so an uncommitted edit stops nothing â it is folded into the release
snapshot silently, under a message naming only the version.
## Conventions
1. `copyright_year` IS used in dist.ini â GETTY has it in ALL distributions, do NOT remove it
.claude/skills/perl-alien/references/alienfile.md view on Meta::CPAN
A helper can be defined in the alienfile and then used in any command string:
```perl
meta->interpolator->add_helper(foo_config => sub { 'foo-config' });
```
## Command lists
`build` takes an arrayref of commands. A plain string is interpolated and run
through the shell; a nested arrayref is `system()`-style, argument by argument, and
is what to use as soon as any argument can contain a space:
```perl
build [
[ '%{cmake}', '-DCMAKE_INSTALL_PREFIX=%{.install.prefix}', '%{.install.extract}' ],
'%{make}',
'%{make} install',
];
```
version => qr/^tinycdb-([0-9\.]+)\.tar\.gz$/,
);
plugin 'Extract' => 'tar.gz';
# TinyCDB ships a plain hand-written Makefile (no ./configure). Its default
# `all: static` target builds only the static libcdb.a plus the cdb binary;
# the shared library lives behind the separate `sharedlib` (build) and
# `install-sharedlib` (install) targets, which upstream marks GNU CC/LD
# specific (-fPIC / -shared). Build and install BOTH the static archive and
# the shared object, so that ->libs links libcdb.a and ->dynamic_libs finds
# libcdb.so for FFI::Platypus. %s-style prefix is supplied by Alien::Build
# as the staging install prefix; never hardcode a path.
build [
'%{make} prefix=%{.install.prefix} static sharedlib',
'%{make} prefix=%{.install.prefix} install install-sharedlib',
];
# Move the shared libraries into their own dynamic/ directory, keeping
# ->libs (static link against libcdb.a) and ->dynamic_libs (the .so, for
# FFI) cleanly separate.
plugin 'Gather::IsolateDynamic';
( run in 4.093 seconds using v1.01-cache-2.11-cpan-b554fb43c41 )