GDPR-IAB-TCFv2
view release on metacpan or search on metacpan
Backwards compat: the human-readable text emitted by
C<Validator::Result> stringification must stay the same so existing
CLI output is unchanged.
=item *
Tests: extend F<t/14-cmp-validator.t> (and/or
F<t/16-validator-failures.t>) with subtests asserting each new code,
reusing the fixed reference dates already in place for determinism.
=back
=head1 HELP WANTED -- DISTRIBUTION
These items are about packaging the existing code, not about adding
features.
=head2 Linux package artifacts (.deb and .rpm)
Wire up a GitHub Actions workflow that, on every C<v*> tag, builds a
C<.deb> and a C<.rpm> from the released tarball and uploads both as
assets on the corresponding GitHub Release. Both packages are pure
Perl (noarch / C<all>), so a single Linux runner per format is
enough; no build matrix, no cross-arch concerns.
See: L<https://github.com/peczenyj/GDPR-IAB-TCFv2/issues/81>
Suggested toolchain:
=over 4
=item *
B<.deb>: C<dh-make-perl --build --cpan-mirror=file:./> against the
C<make dist> tarball. Produces C<libgdpr-iab-tcfv2-perl_VERSION_all.deb>.
Confirm the resulting C<debian/control> picks up
C<bin/iabtcfv2> as an executable and respects the META C<recommends>.
=item *
B<.rpm>: C<cpanspec> on the tarball to produce a C<.spec>, then
C<rpmbuild -ba> inside a C<fedora:latest> container. Produces
C<perl-GDPR-IAB-TCFv2-VERSION-1.noarch.rpm>.
=item *
Upload both via C<gh release upload "$GITHUB_REF_NAME" *.deb *.rpm>.
=back
Out of scope (separate, larger efforts -- not part of this item):
filing an ITP bug to ship the package via Debian proper, hosting a
signed apt repo, or maintaining a Fedora COPR. The deliverable here is
B<artifacts on the Release page>, downloadable with C<wget> + C<dpkg -i>
or C<dnf install ./perl-GDPR-IAB-TCFv2-VERSION-1.noarch.rpm>.
=head2 Homebrew tap (macOS + Linux)
Stand up a self-hosted Homebrew tap repository
(C<peczenyj/homebrew-tap>) with a C<Formula/iabtcfv2.rb> formula that
installs the CLI from the released CPAN tarball. Users opt in with:
See: L<https://github.com/peczenyj/GDPR-IAB-TCFv2/issues/88>
brew tap peczenyj/tap
brew install iabtcfv2
Maintenance contract: a small CI step on this repository's release
event that opens a PR against the tap repo bumping the formula's
C<url> + C<sha256>. Self-hosted (not C<homebrew-core>), so no
external review queue and no
C<homebrew-core>'s "notable + stable + popular" gate.
Same formula works on Homebrew on Linux (Linuxbrew), so this single
channel covers macOS plus a slice of Linux developer machines for
free.
=head2 Snap package (Ubuntu / cross-distro Linux)
Author a C<snapcraft.yaml> that packages C<bin/iabtcfv2> and the Perl
runtime, and publish to C<snapcraft.io> on every C<v*> tag. Users
install with:
See: L<https://github.com/peczenyj/GDPR-IAB-TCFv2/issues/89>
sudo snap install iabtcfv2
Heads-up for the contributor: snaps run under confinement, so any
file paths the CLI reads (config files, GVL JSON dumps) need to be
inside the snap-allowed locations or a C<personal-files> /
C<system-files> plug must be declared and connected. Path the
release notes accordingly so first-time users do not hit a silent
"file not found" inside the sandbox.
=head2 AUR package (Arch Linux)
Publish a C<PKGBUILD> for Arch's user repository. The recipe is
short -- C<makepkg> drives a C<perl Makefile.PL && make && make
install> against the release tarball. Best handled by a community
co-maintainer rather than this repo's CI; volunteer contributions
welcome.
See: L<https://github.com/peczenyj/GDPR-IAB-TCFv2/issues/90>
=head1 ECOSYSTEM -- SISTER DISTRIBUTIONS
The following ideas are intentionally B<separate CPAN distributions>
rather than features of this one. Each adds a runtime dependency on
its host framework, so packaging them separately keeps
C<GDPR::IAB::TCFv2>'s own deps lean.
=head2 Highest priority
=over 4
=item *
L<GDPR::IAB::TCFv2::Validator::LIVR>
See: L<https://github.com/peczenyj/GDPR-IAB-TCFv2/issues/82>
LIVR rule-engine binding for JSON-shaped TC payloads.
=item *
L<GDPR::IAB::TCFv2::Validator::TypeTiny>
See: L<https://github.com/peczenyj/GDPR-IAB-TCFv2/issues/83>
Reusable Type::Tiny constraints (parameterized by purpose / vendor
sets) for Moo, Moose, or pure-Perl callers that prefer type-level
enforcement.
=item *
L<Plack::Middleware::GDPR::TCFv2>
See: L<https://github.com/peczenyj/GDPR-IAB-TCFv2/issues/84>
( run in 0.632 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )