. ../locations.include
MYPWD=`pwd`
export MYPWD
if [ $ARCH != `uname -i` ] ; then
  echo "You seem to be trying to build arch $ARCH , on a `uname -i` system"
  echo "exiting"
  exit 1
fi
MEDIA=$1
if [ -z $MEDIA ] ; then
        echo "You must pass either \"CD\" or \"DVD\" "
        exit 1
fi
if [ $MEDIA = "dvd" -o $MEDIA = "DVD" ] ; then
   echo "You selected to create DVD iso images"
   TOTBINISO=$TOTBINDVD
   TOTISO=$TOTDVD
   TOTSRCISO=$TOTSRCDVD
   DISCSIZE=$DISCSIZEDVD
   MEDIA="DVD"
else
  if [ $MEDIA = "cd" -o $MEDIA = "CD" ] ; then
   	echo "You selected to create CD iso images"
   	TOTBINISO=$TOTBINCD
   	TOTISO=$TOTCD
   	TOTSRCISO=$TOTSRCCD
   	DISCSIZE=$DISCSIZECD
   	MEDIA="CD"
  else
        echo "You must pass either \"CD\" or \"DVD\" "
        exit 1
  fi
fi
#clean up old ones
echo "Cleaning up old directories"
for i in $(seq $TOTCD) 
do
   if [ -d $RELEASEDIR/$ARCH-disc0-disc$i ] ; then
	rm -r $RELEASEDIR/$ARCH-disc0-disc$i
   fi
done
if [ -d $RELEASEDIR/$ARCH-disc0 ] ; then
	rm -r $RELEASEDIR/$ARCH-disc0
fi
mkdir -p $RELEASEDIR/$ARCH-disc0
# Make disc0
#copy in isolinux and special *.iso config files
#sh $MYPWD/subscripts/fix.isolinux.sh
mkdir -p $RELEASEDIR/$ARCH-disc0/isolinux
cp -fa $RELEASEDIR/$ARCH/$SITEDIR/isolinux/* $RELEASEDIR/$ARCH-disc0/isolinux/
if [ -f $RELEASEDIR/$ARCH/$SITEDIR/build/isolinux/isolinux.cfg.iso ] ; then
 cp -f $RELEASEDIR/$ARCH/$SITEDIR/build/isolinux/isolinux.cfg.iso $RELEASEDIR/$ARCH-disc0/isolinux/isolinux.cfg
fi
if [ -f $RELEASEDIR/$ARCH/$SITEDIR/build/isolinux/boot.msg.iso ] ; then
 cp -f $RELEASEDIR/$ARCH/$SITEDIR/build/isolinux/boot.msg.iso $RELEASEDIR/$ARCH-disc0/isolinux/boot.msg
fi
if [  ! -d $RELEASEDIR/$ARCH-disc0/$SITEDIR ] ; then
  mkdir -p  $RELEASEDIR/$ARCH-disc0/$SITEDIR
fi
if [ -d $RELEASEDIR/$ARCH/$SITEDIR/RHupdates ] ; then
  if [ ! -d $RELEASEDIR/$ARCH-disc0/$SITEDIR ] ; then
      mkdir -p $RELEASEDIR/$ARCH-disc0/$SITEDIR 
  fi
  cp -a $RELEASEDIR/$ARCH/$SITEDIR/RHupdates $RELEASEDIR/$ARCH-disc0/$SITEDIR/
fi
#make updates.img from original area and copy in
cd $MYPWD/..
./make.updates.img.sh 
#Copy over misc things
cp $RELEASEDIR/$ARCH/.discinfo $RELEASEDIR/$ARCH-disc0/
#copy in $SITEDIR/RPMS which is really just RPMS 
echo "Copying over the rpms"
mkdir -p $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS
cd $RELEASEDIR/$ARCH/$SITEDIR/RPMS
ln *.rpm $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS
# removing rpms that we know are in security,  should rewrite this 
echo "removing rpms that we know are in the security tree"
#if [ -d /tmp/security ] ; then
#    /bin/rm /tmp/security/*.rpm
#else
#    mkdir /tmp/security
#fi
#echo "not doing security rpms"
echo "doing security rpms"
if [ -s $MYPWD/security ] ; then
  rpm -qp --queryformat "%{name}-%{version}.%{arch}\n" $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS/*.rpm > /tmp/beforesecurity.rpms
  for rpm in `cat $MYPWD/security`
  do
     echo "Removing $rpm* from tree because of security errata"
     if [ -n "$rpm*" ] ; then
        echo "going to remove $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS/$rpm*"
        ls $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS/$rpm*
        rm $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS/$rpm*
     fi
  done
fi


cd $RELEASEDIR/$ARCH/$SITEDIR/updates/security
echo "Adding in security rpms now"
ln  *.rpm $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS
rpm -qp --queryformat "%{name}-%{version}.%{arch}\n" $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS/*.rpm > /tmp/aftersecurity.rpms
cd $RELEASEDIR/$ARCH/$SITEDIR/SITERPMS
echo "Adding in SITERPMS rpms now"
ln -f *.rpm $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS
cd $RELEASEDIR/$ARCH/$SITEDIR/workgroups
echo "Adding in workgroup rpms now"
find . -name "*.rpm" -print | xargs cp -av --target-directory=$RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS/
cd - 
mkdir $RELEASEDIR/$ARCH-disc0/repodata/
mkdir -p $RELEASEDIR/$ARCH-disc0/build/base/
cp -av $RELEASEDIR/$ARCH/$SITEDIR/build/base/* $RELEASEDIR/$ARCH-disc0/build/base/
cp -av $RELEASEDIR/$ARCH/$SITEDIR/SITERPMS/repodata/comps-site.xml $RELEASEDIR/$ARCH-disc0/repodata/
#
echo "Doing a createrepo of $RELEASEDIR/$ARCH-disc0 in quiet mode"
cd $RELEASEDIR/$ARCH-disc0
createrepo  -q -g $RELEASEDIR/$ARCH-disc0/repodata/comps-site.xml .
cd -
echo "Using $RELEASEDIR/$ARCH-disc0/build/base/pkgorder as the fileorder file"
#echo "and not making a new one"
echo "and making a new one"
$MYPWD/pkgorder.site  $RELEASEDIR/$ARCH-disc0/ $ARCH $SITEDIR > /tmp/pkgorder

#openafs-kernel-source is not getting on the cd so adding it manually
grep openafs-kernel-source /tmp/pkgorder
if [ $? -eq 1 ] ; then 
	cd $RELEASEDIR/$ARCH-disc0/$SITEDIR/RPMS 
	ls openafs-kernel-source* >> /tmp/pkgorder
	cd -
fi
cp -v /tmp/pkgorder $RELEASEDIR/$ARCH-disc0/build/base/pkgorder
#Run splittree.py to split the $SITEDIR/RPMS onto multiple cd's

echo "Total Binary dvd is $TOTBINISO, Total SRC dvd is $TOTSRCISO"
echo "Running splittree to decide on how to span the DVD/CD iso images"
echo "$MYPWD/splittree.py --arch=$ARCH --total-discs=$TOTISO " \
 "--bin-discs=$TOTBINISO --src-discs=$TOTSRCISO --release-string=$SITE " \
 "--pkgorderfile=/tmp/pkgorder " \
 "--disc-size=$DISCSIZE " \
 "--srcdir=$RELEASEDIR/SRPMS/$SITEDIR/ --distdir=$RELEASEDIR/$ARCH-disc0 " \
 "--productpath=$SITEDIR --reserve-size=$ISO1RESERVESIZE"
$MYPWD/splittree.py --arch=$ARCH --total-discs=$TOTISO \
  --bin-discs=$TOTBINISO --src-discs=$TOTSRCISO --release-string=$SITEDIR \
  --pkgorderfile=/tmp/pkgorder \
  --disc-size=$DISCSIZE \
  --srcdir=$RELEASEDIR/SRPMS/$SITEDIR/ --distdir=$RELEASEDIR/$ARCH-disc0 \
  --productpath=$SITEDIR --reserve-size=$ISO1RESERVESIZE


cd $RELEASEDIR
mkdir -p $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/SITERPMS/repodata
cp -av $RELEASEDIR/$ARCH/$SITEDIR/SITERPMS/repodata/comps-site.xml $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/SITERPMS/repodata
#The following is because the x86_64 version needs a rpm in the repo, or it dies
ln  $RELEASEDIR/$ARCH/$SITEDIR/SITERPMS/yum-conf-5x* $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/SITERPMS/
cd $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/SITERPMS/
echo "running createrepo with the quite option"
createrepo -q -g repodata/comps-site.xml .
cd $MYPWD 

#TMPBINAREA=`echo $ARCH-disc0-disc[1-$TOTBINISO]/$SITEDIR/RPMS $ARCH-disc0-disc1/$SITEDIR/SITERPMS $ARCH-disc0-disc1/$SITEDIR/updates/security`
TMPBINAREA=`echo $ARCH-disc0-disc[1-$TOTBINISO]/$SITEDIR/RPMS $ARCH-disc0-disc1/$SITEDIR/SITERPMS `
echo "Running createrepo against $TMPBINAREA in quiet mode"
MDATE=`date "+%s"`
echo "/usr/bin/createrepo " \
     "--groupfile $RELEASEDIR/$ARCH/$SITEDIR/RPMS/repodata/comps-sl.xml " \
     "--baseurl media://$MDATE.836690 " \
     "--outputdir $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/ " \
     "--basedir $RELEASEDIR " \
     "--split $TMPBINAREA"
cd $RELEASEDIR
/usr/bin/createrepo -q \
   --groupfile $RELEASEDIR/$ARCH/$SITEDIR/RPMS/repodata/comps-sl.xml \
   --baseurl media://$MDATE.836690 \
   --outputdir $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/ \
   --basedir $RELEASEDIR \
   --split $TMPBINAREA

if [ -d $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/repodata ] ; then
 mv $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/repodata $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/RPMS 
fi
echo "Copying things to disc1"
mkdir -p $RELEASEDIR/$ARCH-disc0-disc1/images
echo "CCC"
if [ -d $TREE/$SITEDIR/images ] ; then
  echo "CCD"
  cd $TREE/$SITEDIR/images
  find . -print | cpio -pvdum $RELEASEDIR/$ARCH-disc0-disc1/images
  cd $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/
  ln -s ../../images images
fi
echo $TREE

mkdir $RELEASEDIR/$ARCH-disc0-disc1/RPM-GPG-KEYs 
cp -a $RELEASEDIR/$ARCH/RPM-GPG-KEYs $RELEASEDIR/$ARCH-disc0-disc1/RPM-GPG-KEYs
#copy in the documentation
if [ -d $RELEASEDIR/$ARCH/$DEFAULT.documentation ] ; then
  mkdir $RELEASEDIR/$ARCH-disc0-disc1/$DEFAULT.documentation
  cp -ra $RELEASEDIR/$ARCH/$DEFAULT.documentation/ $RELEASEDIR/$ARCH-disc0-disc1/
fi
cp -p $RELEASEDIR/$ARCH/$SITEDIR/$SITE.releasenote* $RELEASEDIR/$ARCH-disc0-disc1/
cp -p $RELEASEDIR/$ARCH/README $RELEASEDIR/$ARCH-disc0-disc1/
ln -f $RELEASEDIR/$ARCH/GPL $RELEASEDIR/$ARCH-disc0-disc1/
cp -p $RELEASEDIR/$ARCH/RELEASE-NOTES*.html $RELEASEDIR/$ARCH-disc0-disc1/
#workgroups need the comps files and repomd.xml
mkdir -p $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/workgroups/
cd $RELEASEDIR/$ARCH/$SITEDIR/workgroups
find . -name "comps*" -print | cpio -pvdum $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/workgroups/
find . -name "repomd.xml" -print | cpio -pvdum $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/workgroups/
#cp $TREE/$SITEDIR/SITERPMS/yum-conf*-5x*rpm $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/workgroups/FermiGenericDesktop
cd $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/workgroups/
for i in *
do
  cd $i
#  ln $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/workgroups/FermiGenericDesktop/yum-conf-5x-2-4.SLF.noarch.rpm .
  createrepo -g repodata/comps-workgroup.xml .
  cd -
done
cd $MYPWD 
if [ -d $TREE/$SITEDIR/updates/fastbugs/ ] ; then
  mkdir -p $RELEASEDIR/$ARCH-disc0-disc$TOTISO/fastbugs/
  cd $TREE/$SITEDIR/updates/fastbugs/
  ln $TREE/$SITEDIR/updates/fastbugs/*.rpm $RELEASEDIR/$ARCH-disc0-disc$TOTISO/fastbugs/
  createrepo $RELEASEDIR/$ARCH-disc0-disc$TOTISO/fastbugs
fi
if [ -d $TREE/$SITEDIR/updates/security/ ] ; then
  mkdir -p $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/updates/security/
#This is in here because anaconda has a fit with a empty repo
  ln $TREE/$SITEDIR/SITERPMS/yum-conf*-5x*rpm $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/updates/security/
  cd $RELEASEDIR/$ARCH-disc0-disc1/$SITEDIR/updates/security
  createrepo .
fi
if [ -d $RELEASEDIR/$ARCH-disc0/$SITEDIR/build/ ] ; then
  mkdir -p $RELEASEDIR/$ARCH-disc0-disc$TOTISO/build/
  cp -a $TREE/$SITEDIR/build/*  $RELEASEDIR/$ARCH-disc0-disc$TOTISO/build/
  mv -f $RELEASEDIR/$ARCH-disc0/build/base/* $RELEASEDIR/$ARCH-disc0-disc$TOTISO/build/base/
  if [ -d $RELEASEDIR/$ARCH-disc0-disc1/build/base ] ; then
  	rm -r $RELEASEDIR/$ARCH-disc0-disc1/build/base
  	rmdir $RELEASEDIR/$ARCH-disc0-disc1/build
  fi
fi
if [ -d $RELEASEDIR/$ARCH/$SITEDIR/contrib/ ] ; then
   mkdir -p $RELEASEDIR/$ARCH-disc0-disc$TOTISO/contrib/
   cd $RELEASEDIR/$ARCH/$SITEDIR//contrib/
   for i in *
   do
     if [ ! $i = "headers" ] ; then
	if [ -d $i ] ; then
        	mkdir $RELEASEDIR/$ARCH-disc0-disc$TOTISO/contrib/$i
        	ln $RELEASEDIR/$ARCH/$SITEDIR/contrib/$i/* $RELEASEDIR/$ARCH-disc0-disc$TOTISO/contrib/$i/
	fi
     fi
   done
   cd $RELEASEDIR/$ARCH/$SITEDIR/contrib/SRPMS/
   for i in *
   do
	if [ -d $i ] ; then
     		mkdir $RELEASEDIR/$ARCH-disc0-disc$TOTISO/SRPMS
     		ln $RELEASEDIR/$ARCH/$SITEDIR/contrib/SRPMS/$i/*.src.rpm $RELEASEDIR/$ARCH-disc0-disc$TOTISO/SRPMS/
	fi
   done
   createrepo $RELEASEDIR/$ARCH-disc0-disc$TOTISO/contrib
fi

if [ -d $SLRELEASEDIR/SRPMS/SL ] ; then
  ln $SLRELEASEDIR/SRPMS/SL/*.src.rpm $RELEASEDIR/$ARCH-disc0-disc$TOTISO/SRPMS/
fi
if [ -d $RELEASEDIR/$ARCH-disc0-disc1/repodata ] ; then
        rm -r $RELEASEDIR/$ARCH-disc0-disc1/repodata
fi
echo `date` > $RELEASEDIR/$ARCH-disc0-disc1/.$MEDIA
