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