Jump to content

Talk:Perl package guidelines

From ArchWiki
Latest comment: 23 June by Ryoskzypu in topic Stricter versions for XS module packages

Hardened Example

I have created template file for vim file_templates.vba:

~/.vim/templates/perl.PKGBUILD
pkgname=perl-<+$LBASENAME$+>
pkgver=<+#VERSION#+>
_author=<+#AUTHOR_NAME#+>
_perlmod=<+$BASENAME$+>
pkgrel=1
pkgdesc='<+#DESCRIPTION#+>'
arch=('any')
url="http://search.cpan.org/dist/<+$BASENAME$+>/"
license=('GPL' 'PerlArtistic')
groups=()
depends=('perl>=5.10.0')
makedepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=(!emptydirs)
install=
source=("http://search.cpan.org/CPAN/authors/id/$_author/$_perlmod-$pkgver.tar.gz")
noextract=()

build(){
  cd "$srcdir"/$_perlmod-$pkgver

  # Setting these env variables overwrites any command-line-options we don't want...
  export PERL_MM_USE_DEFAULT=1 PERL_AUTOINSTALL=--skipdeps \
    PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \
    PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \
    MODULEBUILDRC=/dev/null

  # If using Makefile.PL
  if [ -r Makefile.PL ]; then
    /usr/bin/perl Makefile.PL
    make
  # If using Build.PL
  elif [ -r Build.PL ]; then
    /usr/bin/perl Build.PL
    perl Build
  fi
}
check(){
  cd "$srcdir"/$_perlmod-$pkgver

  # If using Makefile.PL
  if [ -r Makefile.PL ]; then
    make test
  # If using Build.PL
  elif [ -r Build.PL ]; then
    perl Build test
  fi
}
package(){
  cd "$srcdir"/$_perlmod-$pkgver

  # If using Makefile.PL
  if [ -r Makefile.PL ]; then
    make install
  # If using Build.PL
  elif [ -r Build.PL ]; then
    perl Build install
  fi

  # remove perllocal.pod and .packlist
  find "$pkgdir" -name .packlist -o -name perllocal.pod -delete
}

--Dracorp (talk) 18:14, 13 March 2013 (UTC)Reply

Stricter versions for XS module packages

Since XS modules only work with a given major version of Perl, I have taken to limiting my packages' required Perl version to within a single major version, like so:

depends=('perl>=5.20.0' 'perl<5.21.0')

Would this be a good idea to add to this page?

--Hoelzro

I'm not sure. I think this only matters for AUR since official Perl pkgs are typically rebuilt with major Perl releases, and now the perl pkg includes a pacman hook that warns when installed Perl modules may need rebuilding. The drawback is that it only warns after the breakage occurs, whereas version locking might prevent it beforehand. --Ryoskzypu (talk) 11:45, 23 June 2026 (UTC)Reply

Add cpan2arch in Automation

I'm announcing cpan2arch here before adding it myself and doing a shameless self-promotion :). If this isn't a good idea, please let me know.

cpan2arch generates PKGBUILD from CPAN metadata and it follows Perl package guidelines. See https://bbs.archlinux.org/viewtopic.php?id=313589 for the rationale.

--Ryoskzypu (talk) 06:09, 18 May 2026 (UTC)Reply