Packaging a Perl (CPAM) package#
Packaging a Perl package is similar to packaging a Python package!
Building a Perl Package#
A perl noarch: generic
package#
The following recipe is for the Perl package Call::Context
. We use perl
in the host
requirements, and install the package using make
.
The noarch: generic
is used to indicate that the package is architecture-independent - since this is a pure Perl package, it can be installed and run on any platform (noarch
).
recipe.yaml
context:
version: 0.03
package:
name: perl-call-context
version: ${{ version }}
source:
url: https://cpan.metacpan.org/authors/id/F/FE/FELIPE/Call-Context-${{ version }}.tar.gz
sha256: 0ee6bf46bc72755adb7a6b08e79d12e207de5f7809707b3c353b58cb2f0b5a26
build:
number: 0
noarch: generic
script:
- perl Makefile.PL INSTALLDIRS=vendor NO_PERLLOCAL=1 NO_PACKLIST=1
- make
- make test
- make install
requirements:
build:
- make
host:
- perl
tests:
- perl:
uses:
- Call::Context
about:
license: GPL-1.0-or-later OR Artistic-1.0-Perl
summary: Sanity-check calling context
homepage: http://metacpan.org/pod/Call-Context
A perl package with a C extension#
Some perl
packages have native code extensions. In this example, we will build a package for the Perl package Data::Dumper
using the C
compiler.
The c
compiler and make
are required at build time in the build
requirements to compile the native code extension.
We use perl
in the host
requirements, and install the package using make
.
recipe.yaml
context:
version: "2.183"
package:
name: "perl-data-dumper"
version: ${{ version }}
source:
url: https://cpan.metacpan.org/authors/id/N/NW/NWCLARK/Data-Dumper-${{ version }}.tar.gz
sha256: e42736890b7dae1b37818d9c5efa1f1fdc52dec04f446a33a4819bf1d4ab5ad3
build:
number: 0
script:
- perl Makefile.PL INSTALLDIRS=vendor NO_PERLLOCAL=1 NO_PACKLIST=1
- make
- make test
- make install VERBINST=1
requirements:
build:
- ${{ compiler('c') }}
- make
host:
- perl
- perl-extutils-makemaker
tests:
- perl:
uses:
- Data::Dumper
about:
homepage: https://metacpan.org/pod/Data::Dumper
license: GPL-1.0-or-later OR Artistic-1.0-Perl
summary: 'seeds germane, yet not germinated'