#!/bin/sh proot="/media/cryptofs/apps" palmpkg="ipkg" freepkg="ipkg -o $proot" tmp=/opt/tmp infodir="/usr/lib/ipkg/info" appdir="/usr/palm/applications" pwd=`pwd` tar="/bin/tar" gzip="/bin/gzip" app=$1 apps="" createpkg() { app=$1 isfree=yes version=`$freepkg info $app | grep Version | head -1 | awk '{print $2}'` if test -z "$version"; then version=`$palmpkg info $app | grep Version | head -1 | awk '{print $2}'` if test -z "$version"; then echo "There seems no app \"$app\" to be installed!" continue else isfree=no fi fi arch=`$freepkg info $app | grep Architecture | head -1 | awk '{print $2}'` if test -z "$arch"; then arch=`$palmpkg info $app | grep Architecture | head -1 | awk '{print $2}'` if test -z "$arch"; then arch=all fi fi echo -n "creating package for $app version $version ... " pkgdir="$tmp/$app-$version" controldir="$tmp/control" datadir="$tmp/data" mkdir -p $pkgdir $controldir $datadir tmpar="$tmp/tmp.ar" pkgfile="${app}_${version}_${arch}.ipk" base=$proot if test "$isfree" = "no"; then base="" fi # package files cat ${base}$infodir/$app.list | while read file; do fdir=`dirname "$file"` mkdir -p $datadir/$fdir cp -a "${base}${file}" $datadir/$fdir/ done cd $datadir && $tar cpf - ./* | $gzip -7 -c > $pkgdir/data.tar.gz rm -rf $datadir # package control files for script in `ls ${base}$infodir/${app}*`; do if echo "$script" | egrep "${app}.(list|pmmanifest)" > /dev/null 2>&1; then continue else scriptfile=`echo "$script" | awk -F $app. '{print $2}'` cp -a $script $controldir/$scriptfile fi done cd $controldir && $tar cpf - ./* | $gzip -7 -c > $pkgdir/control.tar.gz rm -rf $controldir echo "2.0" > $pkgdir/debian-binary # finally build the debian package ar -rc $tmpar $pkgdir/debian-binary $pkgdir/control.tar.gz $pkgdir/data.tar.gz cp $tmpar $pwd/${pkgfile} rm -f $tmpar rm -rf $pkgdir echo "done: created ${pkgfile}" } if test -n "$app"; then createpkg $app else ( $freepkg list_installed | grep "^[a-z]*\."; $palmpkg list_installed | grep "^[a-z]*\." ) | while read app dash version undef; do createpkg $app done fi