#!/bin/bash set -e function process_lib { pushd ~/locallib 1>/dev/null if [ $(ls lib/p*/ |wc -w) -eq 1 ] then # seems to be arichtecturalsub dir arch_dir=$(ls lib/p*/) cd lib/p*/ mv $arch_dir/* . rmdir $arch_dir cd ../.. fi # check, if there is a real archtecturel depandence shared_lib=$(find . -name "*.so") if [ -n "$shared_lib" ] then arch=$(arch) fi popd 1>/dev/null mv ~/locallib/lib $name/usr/ } usage="cpan2deb " if [ $# -ne 1 ]; then echo $usage exit 1 fi #cd $HOME if [ -d locallib ]; then rm -rf locallib fi #if [ -d build ]; then # rm -rf build #fi start_dir=$(pwd) echo "call CPAN ..." cpan -m $1 1>$start_dir/cpan.out 2>&1 || (echo "cpan failed"; exit 1) # find build directory mname=$1 name=lib${mname/::/-}-perl name=${name,,*} builddir=$(ls -rtd ~/.cpan/build/*/ |tail -1) pushd $builddir 1>/dev/null perl Makefile.PL INSTALL_BASE="~/locallib" make make install 1>>~/cpan.out 2>&1 echo "Module $1 installed to ~/locallib, output written to $start_dir/cpan.out" popd 1>/dev/null arch=all # move locallib content mkdir -p $name/usr/ for dir in $(ls ~/locallib); do case $dir in lib) process_lib ;; share) mv ~/locallib/share $name/usr/ ;; man) mv ~/locallib/man $name/usr/ ;; esac done # check version export PERL5LIB="$start_dir/$name/usr/lib/perl5:$PERL5LIB" version=$(perl -M$mname -e 'print $ARGV[0]->VERSION' $mname) arch_name="" if [ "$arch" != "all" ] then arch_name="_$arch" if [ "$arch" = "i686" ] then # i686-Paketarchitektur gibt es nicht arch="i386" fi fi mkdir -p $name/DEBIAN cat << EOF >$name/DEBIAN/control Package: $name Version: $version Section: base Priority: optional Architecture: $arch Depends: Maintainer: WagnerTech UG Description: $1 perl modul EOF fakeroot dpkg-deb --build $name cp $name.deb ${name}_$version$arch_name.deb echo "${name}_$version$arch_name.deb erstellt."