Skip to content

Add cpanfile for non-core dependencies - #90

Open
tomjn wants to merge 1 commit into
Yaribz:masterfrom
tomjn:feature/cpanfile
Open

Add cpanfile for non-core dependencies#90
tomjn wants to merge 1 commit into
Yaribz:masterfrom
tomjn:feature/cpanfile

Conversation

@tomjn

@tomjn tomjn commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

What

Adds a cpanfile declaring the non-core Perl modules currently described only in
prose in INSTALL.md:

  • FFI::Platypus (required, non-Windows) / Win32, Win32::API,
    Win32::TieRegistry (Windows), gated on $^O
  • IO::Socket::SSL (recommended)
  • DBD::SQLite (recommended, multi-instance mode)

Why

Makes the dependencies machine-readable, enabling cpanm --installdeps . and use
by CI. Core modules are intentionally omitted, and INSTALL.md remains
authoritative for the preferred system-package install method (the cpanfile
comments point back to it).

Purely additive; no runtime code is touched. Validated that the file evaluates
cleanly and declares the expected modules.

Machine-readable manifest of the non-core Perl modules described in INSTALL.md,
enabling 'cpanm --installdeps .'. FFI::Platypus is required on non-Windows (the
Win32::* set on Windows); IO::Socket::SSL and DBD::SQLite are recommended (TLS /
engine install / map downloads, and multi-instance mode respectively). Core
modules are intentionally omitted, and INSTALL.md remains authoritative for the
preferred system-package install method.
@Yaribz

Yaribz commented Jul 2, 2026

Copy link
Copy Markdown
Owner

SPADS isn't a standard Perl program/module. It's not published on CPAN, it self-updates, its directory structure doesn't follow the standards, and so on. Its dependencies are usually provided directly by system-provided packages. I'm a bit mitigated about this PR, because providing a cpanfile might misleadingly suggest that SPADS integrates seamlessly into the CPAN ecosystem and that it is the preferred way to retrieve dependencies.

I guess a cpanfile would only be useful in the very specific case you mentioned: preferring to use cpanm to fetch/build the dependencies rather than directly using the system-provided prebuilt packages. Could you explain why you would prefer maintaining a cpanfile and use cpanm for CI rather than directly retrieving the system-provided packages in the CI actions (as currently done in the Automated tests GitHub action ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants