# sparc.pseudo.py


##### constants #####

ANABOOTDIR = "usr/share/anaconda/boot"

IMAGESDIR = "images"

SPARCDIR = "boot"

ISOPATHDIR = "isopath"

MKISOFS = "mkisofs"
IMPLANTISOMD5 = "implantisomd5"


##### main() #####

""" kernellist, installroot, outputroot, product, version, treeinfo, bootiso

"""

# create directories
makedirs(joinpaths(outputroot, IMAGESDIR))
makedirs(joinpaths(outputroot, SPARCDIR))

# copy silo.conf
siloconf = copy(joinpaths(installroot, ANABOOTDIR, "silo.conf"),
                joinpaths(outputroot, SPARCDIR))

# copy boot.msg
bootmsg = copy(joinpaths(installroot, ANABOOTDIR, "boot.msg"),
               joinpaths(outputroot, SPARCDIR))

replace(bootmsg, "%PRODUCT%", product)
replace(bootmsg, "%VERSION%", version)

# copy  *.b to sparc dir
copy(joinpaths(installroot, ANABOOTDIR, "*.b"),
     joinpaths(outputroot, SPARCDIR))

# create images
for kernel in kernellist:
    # copy kernel
    kernel.fname = "vmlinuz"
    kernel.fpath = copy(kernel.fpath,
                        joinpaths(outputroot, SPARCDIR,  kernel.fname))

    # create and copy initrd
    initrd_fname = "initrd.img"
    initrd_fpath = copy(create_initrd(kernel),
                        joinpaths(outputroot, SPARCDIR,  initrd_fname))

    # add kernel and initrd to .treeinfo
    with open(treeinfo, "a") as f:
        f.write("[images-%s]\n" % kernel.arch)
        f.write("kernel = %s\n" % joinpaths(SPARCDIR, kernel.fname))
        f.write("initrd = %s\n" % joinpaths(SPARCDIR, initrd_fname))

if (bootiso):
    # create isopath dir
    isopathdir = joinpaths(outputroot, ISOPATHDIR)
    makedirs(isopathdir)

    # copy sparc dir to isopath dir
    copytree(joinpaths(outputroot, SPARCDIR), isopathdir)

    # create boot.iso
    bootiso_fpath = joinpaths(outputroot, IMAGESDIR, bootiso)

    # run mkisofs (XXX what's with the "Fedora" exclude?)
    rc = exec([MKISOFS, "-R", "-J", "-T",
               "-G", "/%s" % joinpaths(SPARCDIR, "isofs.b"),
               "-B",  "...",
               "-s",  "/%s" % joinpaths(SPARCDIR, "silo.conf"),
               "-r", "-V", '"PBOOT"', "-A", '"%s %s"' % (product, version),
               "-x", "Fedora", "-x", "repodata",
               "-sparc-label", '"%s %s Boot Disc"' % (product, version),
               "-o", bootiso_fpath, "-graft-points",
               "boot=%s" % joinpaths(outputroot, SPARCDIR)])

    # run implantisomd5
    rc = exec([IMPLANTISOMD5, bootiso_fpath])

    # remove isopath dir
    remove(isopathdir)