Talk:Perl package guidelines

From ArchWiki
Latest comment: 13 March 2013 by Dracorp in topic Hardened Example

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[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