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',
];
```

alienfile  view on Meta::CPAN

    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 1.363 second using v1.01-cache-2.11-cpan-b554fb43c41 )