#! /bin/sh
# Package Request - @2000 by Antonio Gallo
# agx@linux.it - www.badpenguin.org - www.linux.it/~agx
# 11 Sep 2000, This script is used to build deps automatically

##### =====================      tools    =========================  #####
. /usr/local/libexec/package-library
MYVERSION="2.2.0"

##### =====================   fn_package_pack          =========================  #####

fn_package_request() {
  #echoc CYAN "(*) analyzing request"

  echoc GREEN "> analizing files ..."
  TEMPA="$PKGROOT/.request-a"
  TEMPB="$PKGROOT/.request-b"
  TEMPC="$PKGROOT/.request-c"
  > $TEMPA
  > $TEMPB
  > $TEMPC
  # Avoid sig11 on static libs
  find $PKGROOT -type f -perm +111 -exec ldd {} >>$TEMPA 2>/dev/null \;
  find $PKGROOT -type f -iname "lib*so*" -exec ldd {} >>$TEMPA 2>/dev/null \;
  cat $TEMPA | grep "not found"
  if [ $? -eq 0 ]; then
    echoc RED    "! there are missed libraries !"
    echoc YELLOW "  We suggest you to NOT continue and check the problem."
    echoc YELLOW "  Press Enter to continue or CTRL+C to exit"
    read x
  fi
  cat $TEMPA | grep -v "not found" | grep "=>" >$TEMPB
  > $TEMPA
  while read a b libs d; do
    [ "$libs" = "" ] && continue
    basename $libs >> $TEMPA
  done < $TEMPB
  sort $TEMPA > $TEMPB
  > $TEMPA
  uniq -d $TEMPB >> $TEMPA
  uniq -u $TEMPB >> $TEMPA
  echo >> $TEMPA

  echo "> looking libraries for deps ..."
  REQTEMP=""
  ( cat $TEMPA ; echo ) | while read libs ; do
    [ "$libs" = "" ] && continue
    echo "> searching $libs"
    DEPFOUND=0
    for i in $PKG_SPOOLDIR/* ; do
      [ ! -f $i/MANIFEST ] && continue
      grep -h  "/$libs"  "$i/MANIFEST"  >$TEMPB
      REPLY=$?
      [ $REPLY -ne 0 ] && continue
      #SHORTPKG="`basename $i | cut -f 1-2 -d '.'`"
      SHORTPKG=`basename $i`
      LNKNAME="/`head -1 $TEMPB`"
      if [ -L "$LNKNAME" ]; then
        REALNAME=`linkname $LNKNAME`
        REALNAME=`basename $REALNAME`
        echoc GREEN "- found $LNKNAME --> $REALNAME into $SHORTPKG"
      else
        REALNAME=`basename $LNKNAME`
        echoc GREEN "- found $REALNAME into $SHORTPKG"
      fi						
      echo "$SHORTPKG::`basename $LNKNAME`::  " >> $TEMPC
      DEPFOUND=1
    done
    if [ $DEPFOUND -eq 0 ]; then
      echoc RED "! no dependencies found for $libs"
      exit 1
    fi
  done
  # Format Deps
  REQUEST=""
  for i in `cat $TEMPC` ; do
    REQUEST="$REQUEST $i"
  done
  rm -f $TEMPA $TEMPB $TEMPC 
  # Save Info
  fn_write_pkginfo
  echoc CYAN "! REQUEST: $REQUEST"
}


##### =====================   M  A  I  N   =========================  #####

# Banner
echo "======================================================================"
echoc CYAN  "Bad Penguin - Package Request $MYVERSION"
echo "======================================================================"

# Check Parameters
if [ "$1" = "" ]; then
  echoc RED "package-request: need at least 1 argument !"
  exit 1
fi

# Define package subdirs
fn_read_settings $1
fn_read_pkginfo

# Check if job already done
if [ "$REQUEST" != "" ]; then
  if [ "$2" != "force" ] ; then
    echoc YELLOW "- dependencies has been already computed"
    sleep 2
    exit 1
  fi
fi

# Globals
fn_package_request
echoc GREEN "- request ok"
exit 0
