view scripts/bndi @ 2833:0f3030598435 lwtools-port

Really fix level 1 builds: Do not use os9 dcopy Bugs in os9 dcopy make it run into infinite recursion before it eventually dies of buffer overflow. Instead use os9 makdir and copy, which was already used some places.
author Tormod Volden <debian.tormod@gmail.com>
date Wed, 10 Jul 2013 19:09:05 +0200
parents 0a302a23acaa
children
line wrap: on
line source

#!/usr/bin/perl
#
# BNDI - Build a NitrOS-9 Disk Image
#
# This script builds a NitrOS-9 disk image

use IO::File;
use POSIX qw(tmpnam);

$NITROS9DIR = $ENV{'NITROS9DIR'};
$CLOUD9DIR = $ENV{'CLOUD9DIR'};
$DISTRO = "6809l2";


# Check for proper number of arguments
$numargs = $#ARGV + 1;
if ($numargs != 4)
{
	print "Usage: bundi <bootlist> <tracklist> <diskname> <distro>\n";
	exit;
}

$bootlist = $ARGV[0];
$tracklist = $ARGV[1];
$diskname = $ARGV[2];
$DISTRO = $ARGV[3];

printf("Building '%s' distribution onto '%s'\n", $DISTRO, $diskname);

$os9_sectors = 4096;
printf("Number of sectors: %d\n", $os9_sectors);

print "########## PART  I ##########\n";
print "#                           #\n";
print "#    Assemble EVERYTHING!   #\n";
print "#                           #\n";
print "#############################\n\n";

print "Step 1 - Making the ENTIRE NitrOS-9 Project (could take a while)...\n";
#system("cd $NITROS9DIR; make dsk>&/dev/null");

print "Step 2 - Making the HDB-DOS Product...\n";
system("cd $CLOUD9DIR/Products/HDB-DOS/Software; make dsk>&/dev/null");

print "Step 3 - Making the Ved Product...\n";
system("cd $ENV{'CLOUD9DIR'}/Products/Ved/Software; make dsk>&/dev/null");

print "########## PART II ##########\n";
print "#                           #\n";
print "#   Prepare the Disk Image  #\n";
print "#                           #\n";
print "#############################\n\n";

print "Step 1 - Format the disk and make the boot disk\n";
system("os9 format -qe -l$os9_sectors tmp.dsk");


# Read bootlist file and expand any variables
open(FILE, "$bootlist") or die ("Unable to open $bootlist");
@bootarray = <FILE>;
close(FILE);
foreach $element (@bootarray)
{
	if (($element =~ /^#/) || ($element =~ /^\*/))
	{
		$element = "";
	}
	else
	{
		$element =~ s/\$(\w+)/${$1}/g;
		$element =~ s/\s+$//;
	}
}

$bls = "@bootarray";
system("cat $bls>bootfile");

# Read tracklist file and expand any variables
open(FILE, "$tracklist") or die ("Unable to open $tracklist");
@trackarray = <FILE>;
close(FILE);
foreach $element (@trackarray)
{
	if (($element =~ /^#/) || ($element =~ /^\*/))
	{
		$element = "";
	}
	else
	{
		$element =~ s/\$(\w+)/${$1}/g;
		$element =~ s/\s+$//;
	}
}

$tls = "@trackarray";
system("cat $tls>trackfile");
system("os9 padrom 4608 trackfile");

system("os9 gen -b=bootfile -t=trackfile tmp.dsk>&/dev/null");
system("os9 copy -o=0 $NITROS9DIR/$DISTRO/modules/sysgo_dd tmp.dsk,sysgo");
system("os9 attr tmp.dsk,sysgo -epepr");
system("os9 dsave -e $NITROS9DIR/$DISTRO/nos9"."$DISTRO"."_80d.dsk, tmp.dsk, >&/dev/null");
system("os9 copy -o=0 $NITROS9DIR/3rdparty/p2mods/noice/calldbg tmp.dsk,cmds/calldbg");
system("os9 attr tmp.dsk,cmds/calldbg -epepr");

print "Step 3 - Put it all together\n";
system("mv tmp.dsk $diskname");

print "Ok, we're done! The file $diskname is now a fresh disk image.\n";