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

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

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

SIZE=620

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

#BOOTDISK="PLD/images/bootdisk.img"
BOOTDISK="PLD/installer/bootdisk_ide.img"

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

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

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

ISO Build: `LC_ALL=C date`.
*************************************************************
"
}

cd $ROOT/stat/packages && cvs -d:pserver:cvs@cvs.pld.org.pl:/cvsroot up -A installer.pkgs

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

    ${ROOT}/stat/poldek -s ${ROOT}/PLD-1.0/${ARCH}/PLD/RPMS/ --mkidxz
    ${ROOT}/stat/poldek -s ${ROOT}/PLD-1.0/${ARCH}/PLD/RPMS/ --update
    ${ROOT}/stat/poldek -s ${ROOT}/PLD-1.0/${ARCH}/PLD/RPMS/ --split=${SIZE} \
    	--split-conf=$ROOT/stat/packages/installer.pkgs \
	--split-out=${ISOTMPDIR}/pld-${ARCH}.iso.list || exit 1
    COUNT="$(ls -1 ${ISOTMPDIR}/pld-${ARCH}.iso.list* | wc -l)"
    COUNTZERO="$(( $COUNT - 1 ))"
    
    for NR in $(seq 0 ${COUNTZERO}); do
#    	ISODIR="/tmp/pld-${ARCH}-${NR}.iso.dir"
	ISODIR=`mktemp -d ${ISOTMPDIR}/pld-${ARCH}-${NR}.iso.dir.XXXXXX` || exit 1
    	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/installer	${ISODIR}/PLD/installer
#			cp -a ${ROOT}/PLD-1.0/i386/PLD/BOOT		${ISODIR}/PLD/BOOT
		;;
	    esac

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

	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"
	
	mkisofs \
	  ${MKISOFSOPT} \
	  ${BOOTOPT} \
	  -J -r \
	  -o ${ROOT}/iso/${ARCH}/${ISONAME}.iso \
	  ${ISODIR}/

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

	rm -rf ${ISODIR}

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

done
