bass
[projects.git] / tools / cpan2deb
1 #!/bin/bash
2 set -e
3
4 usage="cpan2deb <module>"
5
6 if [ $# -ne 1 ]; then
7         echo $usage
8         exit 1
9 fi
10
11 cd $HOME
12 if [ -d locallib ]; then
13         rm -rf locallib
14 fi
15 if [ -d build ]; then
16         rm -rf build
17 fi
18
19 echo "call CPAN ..."
20 cpan -m $1 1>cpan.out 2>&1 || (echo "cpan failed"; exit 1)
21
22 # find build directory
23 mname=$1
24 name=lib${mname/::/-}-perl
25 name=${name,,*}
26 #builddir_prefix=${mname/::/-}
27 builddir=$(ls -rtd ~/.cpan/build/*/ |tail -1)
28
29 cd $builddir
30 perl Makefile.PL INSTALL_BASE="~/locallib"
31 make
32 make install 1>~/cpan.out 2>&1
33 echo "Module $1 installed to ~/locallib, output written to cpan.out"
34 cd
35
36 # check version
37 version=$(perl -M$mname -e 'print $ARGV[0]->VERSION' $mname)
38
39 mkdir build
40 cd build
41
42 mkdir -p $name/DEBIAN
43 cat << EOF >$name/DEBIAN/control
44 Package: $name
45 Version: $version
46 Section: base
47 Priority: optional
48 Architecture: all
49 Depends:
50 Maintainer: WagnerTech UG <mail@wagnertech.de>
51 Description: $1 perl modul
52 EOF
53
54 # execute copy script
55 #mkdir -p $name/usr/share/perl5
56 #mkdir -p $name/usr/share/man
57 #. cpan.cp $name 
58
59 # move locallib content
60 mkdir -p $name/usr/local/
61
62 for dir in $(ls ~/locallib); do
63         case $dir in
64         lib) ;;
65         share) mv ~/locallib/share $name/usr/local/
66         ;;
67         man) mv ~/locallib/man $name/usr/
68         ;;
69         esac
70 done
71
72 fakeroot dpkg-deb --build $name
73 cp $name.deb ${name}_$version.deb
74 echo "${name}_$version.deb erstellt."