<%page args="kernels, runtime_img, basearch, libdir, inroot, outroot, product, isolabel"/> <% configdir="tmp/config_files/ppc" BOOTDIR="ppc" LIVEDIR="LiveOS" MACDIR=BOOTDIR+"/mac" NETBOOTDIR="images/netboot" WRAPPER="usr/sbin/wrapper" WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper" bitsizes = set() prepboot = "" %> mkdir ${LIVEDIR} install ${runtime_img} ${LIVEDIR}/squashfs.img ## install bootloaders mkdir ${BOOTDIR} ## basic ppc stuff install ${configdir}/bootinfo.txt ${BOOTDIR} install boot/efika.forth ${BOOTDIR} ## boot dir for CHRP systems mkdir ${BOOTDIR}/chrp install usr/lib/yaboot/yaboot ${BOOTDIR}/chrp runcmd ${inroot}/usr/lib/yaboot/addnote ${outroot}/${BOOTDIR}/chrp/yaboot ## boot dir for PowerMacs mkdir ${MACDIR} install usr/lib/yaboot/yaboot ${MACDIR} install ${configdir}/ofboot.b ${MACDIR} ## NOTE: PPC is kind of funky. There's three possible "arch" setups here: ## ppc, ppc64, and 'hybrid' (ppc userspace, both ppc & ppc64 kernels). ## Install kernel and bootloader config (in separate places for each arch) %for kernel in kernels: <% bits = 64 if kernel.arch == "ppc64" else 32 ## separate dirs/images for each arch KERNELDIR=BOOTDIR+"/ppc%s" % bits NETIMG=NETBOOTDIR+"/ppc%s.img" % bits bitsizes.add(bits) %> ## install kernel mkdir ${KERNELDIR} ${NETBOOTDIR} installkernel images-${kernel.arch} ${kernel.path} ${KERNELDIR}/vmlinuz installinitrd images-${kernel.arch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img ## install bootloader config install ${configdir}/yaboot.conf.in ${KERNELDIR}/yaboot.conf replace @BITS@ ${bits} ${KERNELDIR}/yaboot.conf ## kernel-wrapper magic that makes the netboot combined ppc{32,64}.img runcmd ${inroot}/${WRAPPER} -p of \ -D ${inroot}/${WRAPPER_DATA} \ -i ${outroot}/${KERNELDIR}/initrd.img \ ${outroot}/${KERNELDIR}/vmlinuz \ -o ${outroot}/${NETIMG} treeinfo images-${kernel.arch} zimage ${NETIMG} ## PReP is 32-bit only %if bits == 32: ## Yes, this is supposed to be a relative path <% prepboot="-prep-boot " + NETIMG %> %endif %endfor ## copy correct yaboot.conf into /etc mkdir etc %if len(bitsizes) == 2: ## hybrid - use the magic hybrid config install ${configdir}/yaboot.conf.3264 etc/yaboot.conf %else: ## single arch - use the yaboot.conf we created above copy ${KERNELDIR}/yaboot.conf etc/yaboot.conf %endif ## configure bootloader replace @PRODUCT@ ${product.name} etc/yaboot.conf replace @VERSION@ ${product.version} etc/yaboot.conf replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' etc/yaboot.conf ## make boot.iso runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \ ${prepboot} -part -hfs -T -r -l -J \ -A "${product.name} ${product.version}" -sysid PPC -V '${isolabel}' \ -volset "${product.version}" -volset-size 1 -volset-seqno 1 \ -hfs-volid ${product.version} -hfs-bless ${outroot}/${MACDIR} \ -map ${inroot}/${configdir}/mapping \ -no-desktop -allow-multidot -graft-points \ etc=${outroot}/etc \ ${BOOTDIR}=${outroot}/${BOOTDIR} \ ${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \ ${LIVEDIR}=${outroot}/${LIVEDIR} %if len(bitsizes) == 2: treeinfo images-ppc boot.iso images/boot.iso treeinfo images-ppc64 boot.iso images/boot.iso %else: treeinfo images-${kernel.arch} boot.iso images/boot.iso %endif