#!/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 <module>"
if [ $# -ne 1 ]; then
exit 1
fi
-cd $HOME
+#cd $HOME
if [ -d locallib ]; then
rm -rf locallib
fi
-if [ -d build ]; then
- rm -rf build
-fi
-
-cpan -m $1 1>cpan.out 2>&1 || (echo "cpan failed"; exit 1)
-builddir=$(ls -rt ~/.cpan/build |tail -1)
-cd ~/.cpan/build/$builddir
-perl Makefile.PL PREFIX="~/locallib"
-make
-make install 1>~/cpan.out 2>&1
-echo "Module $1 installed to ~/locallib, output written to cpan.out"
-cd
-
-mkdir build
+#if [ -d build ]; then
+# rm -rf build
+#fi
-# build copy file
-#grep "^Installing" cpan.out |sed "s/Installing //" >build/cpan.tmp
+start_dir=$(pwd)
-cd build
+echo "call CPAN ..."
+cpan -m $1 1>$start_dir/cpan.out 2>&1 || (echo "cpan failed"; exit 1)
-# edit copy file
-#awk '{FS="/";} \
-#/lib/ {print $0" $1/usr/share/perl5";} \
-#/man/ {print $0" $1/usr/share/man";}' cpan.tmp >cpan.cp
-
-# build package name
-version=$(perl -M$1 -e 'print $ARGV[0]->VERSION' $1)
+# find build directory
mname=$1
name=lib${mname/::/-}-perl
name=${name,,*}
+builddir=$(ls -rtd ~/.cpan/build/*/ |tail -1)
-mkdir -p $name/DEBIAN
-cat << EOF >$name/DEBIAN/control
-Package: $name
-Version: $version
-Section: base
-Priority: optional
-Architecture: all
-Depends:
-Maintainer: WagnerTech UG <mail@wagnertech.de>
-Description: $1 perl modul
-EOF
+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
-# execute copy script
-#mkdir -p $name/usr/share/perl5
-#mkdir -p $name/usr/share/man
-#. cpan.cp $name
+arch=all
# move locallib content
-mkdir -p $name/usr/local/
+mkdir -p $name/usr/
for dir in $(ls ~/locallib); do
case $dir in
- lib) ;;
- share) mv ~/locallib/share $name/usr/local/
+ 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 <mail@wagnertech.de>
+Description: $1 perl modul
+EOF
+
fakeroot dpkg-deb --build $name
-cp $name.deb ${name}_$version.deb
-echo "${name}_$version.deb erstellt."
+cp $name.deb ${name}_$version$arch_name.deb
+echo "${name}_$version$arch_name.deb erstellt."
+