#!/bin/bash

CWD=`pwd`
OUT="$1"

if [[ "$OUT" = "" ]]
then
  echo "Usage: $0 <outputdir>"
  exit 1
fi

mkdir $OUT
(cd $OUT ; tar xf $CWD/skeleton_initrd.tar.xz)
(cd $OUT/lib ; tar xf $CWD/firmware.tar.xz)

if [[ "$LIBDIRSUFFIX" = "" ]]
then
  (cd $OUT
   mv lib64/* lib/
   rmdir lib64
  )
fi

for d in *.list
do
  d=`basename $d .list`
  dorig="$d"
  if [[ "$d" = "lib64" && "$LIBDIRSUFFIX" = "" ]]
  then
    d="lib"
  fi
  mkdir -p $OUT/$d
  for file in `cat $d.list`
  do
    dfile=`dirname $file`
    file=`basename $file`
    if [[ "$dfile" = "." ]]
    then
      dfile=""
    else
      if [[ "$LIBDIRSUFFIX" = "" ]]
      then
        dfile=`echo $dfile | sed 's|lib64/|lib/|g'`
      fi
      mkdir -p $OUT/$d/$dfile
      dfile="$dfile/"
    fi
    ofile="/$d/${dfile}"`basename $file .bin`
    if [[ ! -f $ofile ]]
    then
      if [[ "$d" = "sbin" || "$d" = "bin" || "$dorig" = "lib64" ]]; then
        ofile="/usr/$d/$dfile"`basename $file .bin`
	if [[ ! -f $ofile ]]
	then
	  if [[ "$d" = "sbin" ]]; then
	    ofile="/usr/bin/$dfile"`basename $file .bin`
	  fi
        fi
      fi
    fi
    if [[ -f $ofile ]]
    then
      cp -p $ofile "$OUT/$d/$dfile$file"
    else 
      echo "WARNING: file $ofile not found"
    fi
  done
done

chroot $OUT ldconfig

cd $OUT
find . | cpio -o -H newc | gzip -9c > $TMP/initrd-setup.gz
cd -
