#!/bin/sh
# geniso-poldek: Arkadiusz Miskiewicz <misiek@pld-linux.org>, 2001

set -x
umask 022
ROOT="/home/ftp/pub/Linux/PLD"

ARCHLIST="i386 i586 i686"
#ARCHLIST="i386 i686"
#ARCHLIST="i386"

UTILS_SIZE=$(du -scm $ROOT/PLD-1.0/i386/PLD/{coinst,dosutils,images,inst} | grep total  | xargs | cut -d" " -f1)
#SIZE=610
SIZE=`expr 650 - $UTILS_SIZE - 10`
echo $SIZE

#MKISOFSOPT="-print-size"
MKISOFSOPT="-quiet"

#BOOTDISK="PLD/images/bootdisk.img"
BOOTDISK="PLD/images/bootdisk_iso.img"

#ISOTMPDIR=""
ISOTMPDIR="/home/pld/pldadmin/tmp"

pld_info() {
echo "
*************************************************************
  ___ _    ___  
 | _ \ |  |   \  
 |  _/ |__| |) | GNU/Linux 1.0 Ra
 |_| |____|___/  Development Version ISO image

     ftp://ftp.pld-linux.org/ && ftp://ftp.ipv6.pld-linux.org/

 Additional access is at http://www.pld-linux.org/distrib/ftp/.
 For questions and other contacts mailto:feedback@pld-linux.org

ISO Build: `LC_ALL=C date`.
*************************************************************
"
cat ${ROOT}/PLD-1.0/${ARCH}/PLD/images/bootdisk_iso.txt
}

cd $ROOT/.stat/packages && cvs -d:pserver:cvs@cvs.pld-linux.org:/cvsroot up -A poldek-iso.priority

for ARCH in ${ARCHLIST}; do
    echo "Generating ISOs for ${ARCH}, size ${SIZE}"

    rm -rf ${ISOTMPDIR}/pld-${ARCH}.iso*

    ${ROOT}/.stat/bin/poldek -s ${ROOT}/PLD-1.0/${ARCH}/PLD/RPMS/ --mkidxz
    ${ROOT}/.stat/bin/poldek -s ${ROOT}/PLD-1.0/${ARCH}/PLD/RPMS/ --update
    ${ROOT}/.stat/bin/poldek -s ${ROOT}/PLD-1.0/${ARCH}/PLD/RPMS/ \
	--split=650:`expr $UTILS_SIZE - 10` \
    	--split-conf=${ROOT}/.stat/packages/poldek-iso.priority \
	--split-out=${ISOTMPDIR}/pld-${ARCH}.iso.list || exit 1
    COUNT="$(ls -1 ${ISOTMPDIR}/pld-${ARCH}.iso.list* | wc -l)"
    COUNTZERO=`expr $COUNT - 1`
    
    
    
    MAINISODIR=`mktemp -d ${ISOTMPDIR}/pld-${ARCH}-${NR}.iso.dir.XXXXXX` || exit 1


    for NR in $(seq 0 ${COUNTZERO}); do

#	ISODIR=`mktemp -d ${ISOTMPDIR}/pld-${ARCH}-${NR}.iso.dir.XXXXXX` || exit 1
	ISODIR=$MAINISODIR/$NR
	ISODIR0=$MAINISODIR/0
    	mkdir -p ${ISODIR}/PLD || exit 1
	if [ "${NR}" = "0" ]; then
	    cp -a ${ROOT}/PLD-1.0/${ARCH}/PLD/dosutils	${ISODIR}/PLD/dosutils
	    cp -a ${ROOT}/PLD-1.0/${ARCH}/PLD/coinst	${ISODIR}/PLD/coinst
#	    cp -a ${ROOT}/PLD-1.0/${ARCH}/PLD/BOOT		${ISODIR}/PLD/BOOT
	    cp -a ${ROOT}/PLD-1.0/${ARCH}/PLD/images	${ISODIR}/PLD/images
	    cp -a ${ROOT}/PLD-1.0/${ARCH}/PLD/inst	${ISODIR}/PLD/inst

	    case ${ARCH} in
	    	i386|i586|i686)
			cp -a ${ROOT}/PLD-1.0/i386/PLD/images	${ISODIR}/PLD/images
#			cp -a ${ROOT}/PLD-1.0/i386/PLD/BOOT		${ISODIR}/PLD/BOOT
		;;
	    esac

	    echo "cdrom_get = \"/usr/bin/vfjuggle %d %Pn\"" >${ISODIR0}/.poldekrc

	    echo "# priorites of packages used during generation of cd images" >${ISODIR0}/.pkgsplit.conf
	    cat ${ROOT}/.stat/packages/poldek-iso.priority >>${ISODIR0}/.pkgsplit.conf

	elif [ "${NR}" = "$COUNTZERO" ]; then
#	    mkdir -p ${ISODIR}/test/
#	    cp -a ${ROOT}/test/${ARCH}/			${ISODIR}/test/${ARCH}/
#	    mkdir -p ${ISODIR}/supported/
#	    cp -a ${ROOT}/supported/${ARCH}/		${ISODIR}/supported/${ARCH}/
		echo
	fi
	
	mkdir -p ${ISODIR}/PLD/RPMS
#	ln -s .						${ISODIR}/PLD/RPMS/RPMS
	for file in $(cat ${ISOTMPDIR}/pld-${ARCH}.iso.list.${NR}); do
		cp -a ${ROOT}/PLD-1.0/${ARCH}/PLD/RPMS/${file} \
			${ISODIR}/PLD/RPMS/${file}
	done

	# poldek
	${ROOT}/.stat/bin/poldek -s ${ISODIR}/PLD/RPMS/ --mkidxz

	# move indexes to first cd
	mkdir ${ISODIR0}/cd${NR} || exit 1
	mv ${ISODIR}/PLD/RPMS/packages.dir* ${ISODIR0}/cd${NR}
	# create identification file
	IDENT=PLD-1.0-cd${NR}
	IDENT0=PLD-1.0-cd0
	touch ${ISODIR}/${IDENT}
	echo "source${NR} = cdrom://${IDENT0}/cd${NR}/" >>${ISODIR0}/.poldekrc
	echo "prefix${NR} = cdrom://${IDENT}/PLD/RPMS/" >>${ISODIR0}/.poldekrc

	# apt
	mkdir -p ${ISODIR}/apt/SRPMS.base
	mkdir -p ${ISODIR}/apt/PLD-1.0/base
	ln -s ../../PLD/RPMS ${ISODIR}/apt/PLD-1.0/RPMS.base
	
	${ROOT}/.stat/bin/genbasedir --bloat --topdir=${ISODIR}/apt/ PLD-1.0/ base
	# wuch
	# ???
	
#	if [ "${NR}" = "$COUNTZERO" ]; then
#		# poldek
#		${ROOT}/.stat/bin/poldek -s ${ISODIR}/test/${ARCH}/ --mkidxz
#		${ROOT}/.stat/bin/poldek -s ${ISODIR}/supported/${ARCH}/ --mkidxz
#		# apt
#		mkdir -p ${ISODIR}/apt/SRPMS.supported
#		ln -s ../../supported/${ARCH}	${ISODIR}/apt/PLD-1.0/RPMS.supported
#		${ROOT}/.stat/bin/genbasedir --bloat --topdir=${ISODIR}/apt/ PLD-1.0/ supported
#		mkdir -p ${ISODIR}/apt/SRPMS.test
#		ln -s ../../test/${ARCH}		${ISODIR}/apt/PLD-1.0/RPMS.test
#		${ROOT}/.stat/bin/genbasedir --bloat --topdir=${ISODIR}/apt/ PLD-1.0/ test
#		# wuch
#		# ???
#	fi
	
	pld_info > ${ISODIR}/PLD-README.txt


    done

    for NR in $(seq 0 ${COUNTZERO}); do
	ISODIR=$MAINISODIR/$NR

	if [ "${NR}" = "0" ]; then
		ISONAME="pld-${ARCH}-base"
		BOOTOPT="-b ${BOOTDISK} -c PLD/images/boot.cat"
	else
		ISONAME="pld-${ARCH}-${NR}"	
		BOOTOPT=""
	fi

	touch ${ISODIR}/${ISONAME}

	echo "Running mkisofs for ${ISONAME}.iso"
	
	${ROOT}/.stat/bin/mkisofs \
	  ${MKISOFSOPT} \
	  ${BOOTOPT} \
	  -J -r \
	  -o ${ROOT}/iso/ra/${ARCH}/${ISONAME}.iso \
	  ${ISODIR}/ || rm -f ${ROOT}/iso/ra/${ARCH}/${ISONAME}.iso

	echo "Generating ls and md5sum for ${ISONAME}.iso"
	  cd ${ROOT}/iso/ra/${ARCH}
	  	${ROOT}/.stat/bin/isoinfo -R -l -i ${ISONAME}.iso > ${ISONAME}.ls
	  	md5sum ${ISONAME}.iso ${ISONAME}.ls > ${ISONAME}.md5
		ls -l  ${ISONAME}.iso
		pld_info > ${ISONAME}.readme

	rm -rf ${ISODIR}

    done
    
    rm -rf ${ISOTMPDIR}/pld-${ARCH}.iso*

done
