#!/bin/bash # mkslapt # # By Eko M. Budi, from slapt-get FAQ # Released under GNU GPL # function usage() { cat <<_EOF_ makeslapt - make slapt-get dependency info usage: $0 [all|new|txt|md5] all : create all meta info, then make PACKAGES.TXT and CHECKSUMS.MD5 new : create new meta info, then make PACKAGES.TXT and CHECKSUMS.MD5 txt : make PACKAGES.TXT md5 : make CHECKSUMS.MD5 _EOF_ } function gen_packages_txt { echo Making PACKAGES.TXT echo '' > PACKAGES.TXT for pkg in `find . -type f -name '*.meta' -print | sort` ; do cat $pkg >> PACKAGES.TXT done } function gen_md5_checksums { echo Making CHECKSUMS.MD5 echo '' > CHECKSUMS.md5 for pkg in `find . -type f -name '*.tgz' -print | sort` ; do md5sum $pkg >> CHECKSUMS.md5 done } function gen_meta { if [ ! -f $1 ]; then echo "File not found: $1" exit 1; fi echo "Generating metafile for $pkg" if [ "`echo $1|grep -E '(.*{1,})\-(.*[\.\-].*[\.\-].*).tgz[ ]{0,}$'`" == "" ]; then return; fi # extract install info first rm -rf install if ! tar xzf $1 install; then if ! tar xzf $1 ./install; then echo This archive does not have install information exit 1 fi fi # Ok, here we go .. NAME=$(echo $1|sed -re "s/(.*\/)(.*.tgz)$/\2/") LOCATION=$(echo $1|sed -re "s/(.*)\/(.*.tgz)$/\1/") SIZE=$( expr `gunzip -l $1 |tail -1|awk '{print $1}'` / 1024 ) USIZE=$( expr `gunzip -l $1 |tail -1|awk '{print $2}'` / 1024 ) REQUIRED="" if [ -f install/slack-required ]; then REQUIRED=$(cat ./install/slack-required |xargs -r -iZ echo -n "Z,"|sed -e "s/,$//") #echo " required=$REQUIRED" fi CONFLICTS="" if [ -f install/slack-conflicts ]; then CONFLICTS=$(cat install/slack-conflicts |xargs -r -iZ echo -n "Z,"|sed -e "s/,$//") #echo " conflicts=$CONFLICTS" fi SUGGESTS="" if [ -f install/slack-suggests ]; then SUGGESTS=$(cat install/slack-suggests |xargs -r -iZ echo -n "Z,"|sed -e "s/,$//") #echo " suggests=$SUGGESTS" fi METAFILE=${NAME%tgz}meta echo "PACKAGE NAME: $NAME" > $LOCATION/$METAFILE echo "PACKAGE LOCATION: $LOCATION" >> $LOCATION/$METAFILE echo "PACKAGE SIZE (compressed): $SIZE K" >> $LOCATION/$METAFILE echo "PACKAGE SIZE (uncompressed): $USIZE K" >> $LOCATION/$METAFILE echo "PACKAGE REQUIRED: $REQUIRED" >> $LOCATION/$METAFILE echo "PACKAGE CONFLICTS: $CONFLICTS" >> $LOCATION/$METAFILE echo "PACKAGE SUGGESTS: $SUGGESTS" >> $LOCATION/$METAFILE echo "PACKAGE DESCRIPTION:" >> $LOCATION/$METAFILE PKGNAME=`basename $1` PKGNAME=${PKGNAME%%-*} if [ -f install/slack-desc ]; then cat install/slack-desc |grep -e "^$PKGNAME" >> $LOCATION/$METAFILE fi echo "" >> $LOCATION/$METAFILE # cleaning up rm -rf install } ############################################# # main program case "$1" in all) for pkg in `find . -type f -name '*.tgz' -print`; do gen_meta $pkg done gen_packages_txt gen_md5_checksums ;; new) for pkg in `find . -type f -name '*.tgz' -print`; do if [ $pkg -nt ${pkg%tgz}meta ]; then gen_meta $pkg fi done gen_packages_txt gen_md5_checksums ;; pkg) if [ -n "$2" ]; then gen_meta $2 else usage fi ;; txt) gen_packages_txt ;; md5) gen_md5_checksums ;; *) usage ;; esac