#!/usr/bin/perl ################################################## # Creates Debian-Packeges for Perl-Modules # # # # Author : Andreas Klein # # Licence : GPL # # Version : 0.11 # ################################################## use warnings; use strict; my $instdir = "/usr/local"; # get package-name my $tarfile = shift or die "Usage: perl2deb "; ############################################# print "Processing ${tarfile}\n"; ############################################# my ($name, $version); $tarfile =~ /^(.*)-([0-9.]*)\.tar\.gz$/; $name = "lib".lc($1); $version=$2; $name =~ s/liblib/lib/; $name = $name."-perl" unless $name =~ /-perl$/; ############################################# print "Unpacking TAR-file\n"; ############################################# `mkdir perl2deb_temp`; `tar -C perl2deb_temp -xzf ${tarfile}`; # Check if the tar-file creates a new directory my $tarpath; if (`ls perl2deb_temp | wc -l` == 1) { $tarpath=`ls perl2deb_temp`; chomp $tarpath; } else { $tarpath=''; } #print "${tarpath}\n"; rename ("perl2deb_temp/${tarpath}","${name}-${version}"); `rm -rf perl2deb_temp`; `mv -f ${name}-${version}/[Cc]hange* ${name}-${version}/ChangeLog`; ############################################# print "Creating debian Directory\n"; ############################################# `mkdir ${name}-${version}/debian`; open (FILE,">${name}-${version}/debian/README.Debian"); print FILE "Automatically generated from ${tarfile} \n"; print FILE "Generated by perl2deb at ",`date`,"\n"; close FILE; open (FILE,">${name}-${version}/debian/docs"); print FILE "README\n"; close FILE; open (FILE,">${name}-${version}/debian/changelog"); print FILE "${name} (${version}-1) unstabel; urgency=low\n\n"; print FILE " * Automatic generated release.\n"; print FILE " * See Changelog.gz\n\n"; print FILE " -- perl2deb ",`date +"%a, %d %b %Y %T %z"`; close FILE; open (FILE,">${name}-${version}/debian/copyright"); print FILE "This package was debianized perl2deb\n"; print FILE `date`,"\n\n"; print FILE "It was downloaded from \n\n"; print FILE "Upstream Author(s): \n\n"; print FILE "Copyright: \n"; open (README,"${name}-${version}/README") or die "Cannot find README"; my $found = 0; while() { print FILE $_ if $found; $found = 1 if /^copyright$/i; } close README; close FILE; open (FILE,">${name}-${version}/debian/control"); print FILE "Source: ${name}\n"; print FILE "Section: perl\n"; print FILE "Priority: optional\n"; print FILE "Maintainer: \n"; print FILE "Build-Depends: debhelper (>> 3.0.0), perl\n"; print FILE "Standards-Version: 3.5.2\n\n"; print FILE "Package: ${name}\n"; print FILE "Architecture: any\n"; print FILE "Depends: perl"; ################################### # Check Dependencies ################################### my $dep = `grep PREREQ_PM ${name}-${version}/Makefile.PL`; $dep =~ s/::/-/; $dep = lc($dep); print FILE ", lib$1-perl (>= $2)" while $dep =~ /'([a-z\-]*)'\s*=>\s*([0-9.]*)/g; print FILE "\n"; print FILE "Description: Perl-Module generatet from ${tarfile}\n"; print FILE `head -10 ${name}-${version}/README | perl -ne 'print /^\$/ ? qq( \.\n) : qq( \$_)'`; close FILE; my $pathname = `pwd`; chomp($pathname); `cp ${instdir}/share/perl2deb/rules ${name}-${version}/debian/rules`; `perl -i -pe 's!XXXXX!${pathname}/${name}-${version}/debian/${name}!' ${name}-${version}/debian/rules`; ##################################### print "Generating Debian-Package\n"; ##################################### `cd ${name}-${version}; dpkg-buildpackage -rfakeroot`