Difference between revisions of "Perl package guidelines"

From ArchWiki
Jump to: navigation, search
m (Example Build.PL PKGBUILD: license + variables)
Line 5: Line 5:
 
[[Category:Package development (English)]]
 
[[Category:Package development (English)]]
  
 +
=Generating PKGBUILD=
 +
As Perl is centered around the CPAN, there are a few scripts to make the most of this, and save you writing PKGBUILDs by hand.
 +
 +
There is a CPANPLUS::Dist plugin which adds support for pacman, avaiable on the AUR: http://aur.archlinux.org/packages.php?ID=5954
 +
 +
There is also a script called pacpan, which can generate (recursively) PKGBUILDs for a module: http://aur.archlinux.org/packages.php?ID=23495
 +
 +
=Writing PKGBUILDs=
 
There are basically two types of “distributions” on CPAN: those that rely on Makefile.PL and those that use Build.PL.
 
There are basically two types of “distributions” on CPAN: those that rely on Makefile.PL and those that use Build.PL.
  

Revision as of 21:11, 20 April 2009

Tango-document-new.pngThis article is a stub.Tango-document-new.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Perl package guidelines#)

Generating PKGBUILD

As Perl is centered around the CPAN, there are a few scripts to make the most of this, and save you writing PKGBUILDs by hand.

There is a CPANPLUS::Dist plugin which adds support for pacman, avaiable on the AUR: http://aur.archlinux.org/packages.php?ID=5954

There is also a script called pacpan, which can generate (recursively) PKGBUILDs for a module: http://aur.archlinux.org/packages.php?ID=23495

Writing PKGBUILDs

There are basically two types of “distributions” on CPAN: those that rely on Makefile.PL and those that use Build.PL.


Perl 5.10.0-1 And After

Will be posted soon.


Before Perl 5.10.0-1

Packages before perl 5.10.0-1 installed modules into /usr/lib/perl5/current and /usr/lib/perl5/site_perl/current.


Example Makefile.PL PKGBUILD

# Contributor:  Your Name <your_email@foobar.org>
pkgname=perl-dbd-pg
pkgver=1.49
pkgrel=1
pkgdesc="Postgres Driver for DBI"
url="http://search.cpan.org/~DBDPG/DBD-Pg"
depends=('perl-dbi>=1.45')
license=('GPL')
options=('!emptydirs')
arch=('i686' 'x86_64')
source=(http://www.cpan.org/authors/id/D/DB/DBDPG/DBD-Pg-$pkgver.tar.gz) 
md5sums=('76b9d6a2f4cbaefcba23380f83998215')

build() {
  cd  ${srcdir}/DBD-Pg-$pkgver
  eval `perl -V:archname`
  /usr/bin/perl Makefile.PL \
      INSTALLARCHLIB=/usr/lib/perl5/current/${archname} \
      INSTALLSITELIB=/usr/lib/perl5/site_perl/current \
      INSTALLSITEARCH=/usr/lib/perl5/site_perl/current/${archname}
  /usr/bin/make || return 1
  /usr/bin/make DESTDIR=${pkgdir} install
  /usr/bin/find ${pkgdir} -name '.packlist' -delete
  /usr/bin/find ${pkgdir} -name '*.pod' -delete
}

Example Build.PL PKGBUILD

# Contributor:  Your Name <your_email@foobar.org>
pkgname=perl-string-random
pkgver=0.22
pkgrel=1
pkgdesc="Generate random strings"
url="http://search.cpan.org/~STEVE/String-Random"
makedepends=('perl-module-build')
license=('GPL')
options=('!emptydirs')
arch=('i686' 'x86_64')
source=(http://www.cpan.org/authors/id/S/ST/STEVE/String-Random-$pkgver.tar.gz) 
md5sums=('c0319f95c56450624cc646f7425e327e')

build() {
  cd  ${srcdir}/String-Random-$pkgver
  eval `perl -V:archname`
  perl Build.PL destdir=${pkgdir} \
       --install_path lib=/usr/lib/perl5/site_perl/current \
       --install_path arch=/usr/lib/perl5/site_perl/current/${archname}
  ./Build
  ./Build install
  /usr/bin/find ${pkgdir} -name '.packlist' -delete
  /usr/bin/find ${pkgdir} -name '*.pod' -delete
}