Script Help?
Drew Lane
yellowdog-general@lists.terrasoftsolutions.com
Mon Nov 4 13:27:01 2002
I'm not much of a shell scripter. I've been trying to get the
following script working in YDL 2.x, but it always freezes
up in the middle of processing. It works fine on my Intel
box with RH 7.2, however.
As I understand it, the script extracts some information from
an .ipk file and writes the info to a text file called "Packages".
Does anyone know what might be the problem?
Thanks,
Drew
---------------------------
#!/bin/sh
set -e
pkg_dir=$1
if [ -z $pkg_dir ] || [ ! -d $pkg_dir ]; then
echo "Usage: ipkg-make-index <package_directory>"
exit 1
fi
for pkg in `find $pkg_dir -name '*.ipk' -maxdepth 1 | sort`; do
filename=`basename $pkg`
pkgname=${filename%%_*}
echo "Generating index for package ${pkgname}" >&2
## checking for multiple versions
oldflag=
for other in ${pkg_dir}/${pkgname}_*; do
if [ $pkg != $other -a $other -nt $pkg ]; then
oldflag=y
break;
fi;
done
if [ -z "$oldflag" ]; then \
file_size=$(ls -l $pkg | awk '{print $5}')
md5sum=$(md5sum $pkg | awk '{print $1}')
# Take pains to make variable value sed-safe
sed_safe_pkg=`echo $filename | sed -e 's/\\//\\\\\\//g'`
tar -xzOf $pkg ./control.tar.gz | tar xzOf - ./control | sed -e
"s/^Filename:.*//g" | grep -v '^$' | sed -e "s/^Description:/Filename:
$sed_safe_pkg\\
Size: $file_size\\
MD5Sum: $md5sum\\
Description:/"
echo ""
else
echo >&2 "Skipped old file: $pkg ($other is newer)"
mv $pkg $pkg_dir/old/
fi
done >> $pkg_dir/Packages