diff options
Diffstat (limited to 'scripts/tarpkg')
-rwxr-xr-x | scripts/tarpkg | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/scripts/tarpkg b/scripts/tarpkg new file mode 100755 index 000000000..37c0b2079 --- /dev/null +++ b/scripts/tarpkg @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# create/install compressed tar balls +#set -x + +if [ "$1" = "build" ];then + if [ ! -d $2 ];then + echo "not a directory" + exit 1 + fi + pkgname=$(grep "^Package:" $2/CONTROL/control | sed -e "s/^[^:]*:[[:space:]]*//") + version=$(grep "^Version:" $2/CONTROL/control | sed -e "s/^[^:]*:[[:space:]]*//") + arch=$(grep "^Architecture:" $2/CONTROL/control | sed -e "s/^[^:]*:[[:space:]]*//") + for file in preinst postinst prerm postrm; do + [ ! -f $2/CONTROL/$file ] || ( mkdir -p ${2}/usr/lib/pkg && \ + cp $2/CONTROL/$file ${2}/usr/lib/pkg/${pkgname}.$file && \ + chmod +x ${2}/usr/lib/pkg/${pkgname}.$file ) + done + rm -rf $2/CONTROL + (cd $2 && tar -czf $3/${pkgname}_${version}_${arch}.tar.gz .) +elif [ "$1" = "install" ];then + pkg=$(echo $(basename $2)|sed -e "s#_.*##") + if [ -x ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst ]; then + IPKG_INSTROOT="$PKG_INSTROOT" ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst + rm ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst + fi + tar -xzpf $2 -C ${PKG_INSTROOT} + if [ -x ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst ]; then + IPKG_INSTROOT="$PKG_INSTROOT" ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst + rm ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst + fi + rm -rf ${PKG_INSTROOT}/usr/lib/pkg +else + echo "unknown command" + exit 1 +fi |