#!/bin/bash
#
# Do install stuff for powerpc, including making bootable CDs
# Works with debian-installer
#
# $1 is the CD number
# $2 is the temporary CD build dir

. $BASEDIR/tools/boot/$DI_CODENAME/common.sh

set -e
#set -x

N=$1
CDDIR=$2
INSTALLDIR=$CDDIR/install
if [ "$DI_WWW_HOME" = "default" ];then
    DI_WWW_HOME="https://d-i.debian.org/daily-images/powerpc/daily"
    try_di_image_cache
fi

cd $CDDIR/..

install_languages $CDDIR

add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "--iso-level 4"
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "--netatalk"
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-hfs"
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-probe"
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-map $BASEDIR/data/hfs.map"

# Recommended size for a HFS Catalog is 4 megas per giga, defaults to 4 megas
# MAXDISKBLOCKS is measured in 2K blocks
newsize=`echo "$MAXDISKBLOCKS * 2048 / 256" | bc`
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-hfs-parms MAX_XTCSIZE=$newsize"

# Only disk 1* bootable
if [ $N != 1 ] ; then
	exit 0
fi

add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "--chrp-boot"
# For newworld Mac booting  - Note, no spaces in volid!
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-part"
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-no-desktop"
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-hfs-bless CD$N/install"
add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-hfs-volid Debian/PowerPC_${CODENAME}"

cd $INSTALLDIR
# Extract yaboot from the archive
if [ -z "$YABOOT_DEBUG" ]; then
    YADEB=$(find_pkg_file yaboot)
    if [ -z "$YADEB" ]; then
        echo "ERROR: the yaboot package is required." >&2
        exit 1
    fi
    (dpkg --fsys-tarfile "$MIRROR/$YADEB" | \
	tar xf - -C . ./usr/lib/yaboot/yaboot)
    mv usr/lib/yaboot/yaboot .
    rm -rf usr

    if [ -n "$ARCHIVE_EXTRACTED_SOURCES" ]; then
        echo $YADEB >> $CDDIR/../$N.pkgs_extracted
        find_pkg_file yaboot source >> $CDDIR/../$N.pkgs_extracted
    fi

else
 cp -f $YABOOT_DEBUG yaboot
fi

#
# generate/download images for "powerpc"
# (missing: bootvars1.3b.sit.hqx, BootX_1.2.2.sit, boot-floppy-hfs.img)

cp $BASEDIR/data/$DI_CODENAME/yaboot/ofboot.b ofboot.b

if [ "$DESKTOP"x = ""x ] || [ "$DESKTOP"x = "all"x ] ; then
    DEFAULT_DESKTOP="$UNSPEC_DESKTOP_DEFAULT"
else
    DEFAULT_DESKTOP="$DESKTOP"
fi

for subarch in powerpc powerpc64 #prep
do
  case $subarch in
    powerpc|prep)
      bitness=
      yabootconf=mac32.conf
      yabootmsg=boot32.msg
      ;;
    powerpc64)
      bitness=64
      yabootconf=yaboot.conf
      yabootmsg=boot.msg
      ;;
  esac

  cat $BASEDIR/data/$DI_CODENAME/yaboot/$yabootconf \
   | sed "s/CODENAME/${CODENAME}/g" \
   > $yabootconf

  cat $BASEDIR/data/$DI_CODENAME/yaboot/$yabootmsg \
   | sed "s/\${MEDIA_TYPE}/CDROM/" \
   | sed "s/\${DEBIAN_VERSION}/${CODENAME}/g" \
   | sed "s/\${BUILD_DATE}/${BUILD_DATE}/g" \
   | sed "s/\${DEFAULT_DESKTOP}/${DEFAULT_DESKTOP}/g" \
   > $yabootmsg

  if [ -n "$KERNEL_PARAMS" ]; then
      sed -i "/^[[:space:]]\+append=\"/ s|append=\"|append=\"$KERNEL_PARAMS |" $yabootconf
  fi

  if [ ! "$DI_WWW_HOME" ];then
        if [ ! "$DI_DIR" ];then 
           DI_DIR="$MIRROR/dists/$DI_DIST/main/installer-$ARCH/current/images"
        fi
	if ! cp -a "$DI_DIR/$subarch/cdrom" "$subarch" && [ "$bitness" ]; then
	   cp -a "$DI_DIR/$subarch/cdrom${bitness}" "$subarch"
	fi
  else
	if ! $WGET -r -nd --no-parent --level=1 -P "$subarch" -R 'index*' "$DI_WWW_HOME/$subarch/cdrom/" && [ "$bitness" ]; then
	   $WGET -r -nd --no-parent --level=1 -P "$subarch" -R 'index*' "$DI_WWW_HOME/$subarch/cdrom${bitness}/"
	fi
  fi

done

if [ -f prep/vmlinuz-prep.initrd ]; then
  add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-prep-boot install/prep/vmlinuz-prep.initrd"
elif [ -f powerpc/vmlinuz-prep.initrd ]; then
  # We are still missing this for prep
  add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-prep-boot install/powerpc/vmlinuz-prep.initrd"
fi

# Copy pegasos forth script, since pegasos machines don't support yaboot yet.
cat $BASEDIR/data/$DI_CODENAME/pegasos/pegasos \
 | sed "s/\${MEDIA_TYPE}/CDROM/" \
 | sed "s/\${DEBIAN_VERSION}/${CODENAME}/g" \
 | sed "s/\${BUILD_DATE}/${BUILD_DATE}/g" \
 > pegasos

# Let's copy the IBM CHRP stuff into place now.
cd $CDDIR
mkdir ppc
mkdir ppc/chrp
cp $BASEDIR/data/$DI_CODENAME/chrp/bootinfo.txt ppc
mkdir etc
cp $INSTALLDIR/yaboot.conf etc

exit 0
