231 lines
4.2 KiB
Perl
231 lines
4.2 KiB
Perl
#!/usr/bin/perl
|
|
#
|
|
#
|
|
# functions required by share_setup and client_setup
|
|
#
|
|
#
|
|
|
|
# Define description strings
|
|
|
|
%description = (
|
|
"CPUBOARD" => "CPU board",
|
|
"CPUARCH" => "CPU architecture",
|
|
"GFXBOARD" => "graphics board",
|
|
"SUBGR" => "graphics subgroup",
|
|
"VIDEO" => "video card",
|
|
"MODE" => "mode",
|
|
);
|
|
|
|
# Get the support architecture list from .dl_classes
|
|
|
|
sub get_arch()
|
|
{
|
|
open (IN, ".dl_classes") || die "Can't open .dl_classes: $!\n";
|
|
$i = 0;
|
|
line: while (<IN>)
|
|
{
|
|
chomp;
|
|
next line if /^#/;
|
|
next line if (!$_);
|
|
$_ =~s/\s+/:/g;
|
|
($data[$i]{CPUBOARD}, $data[$i]{CPUARCH}, $data[$i]{GFXBOARD},
|
|
$data[$i]{SUBGR}, $data[$i]{VIDEO},
|
|
$data[$i]{MODE}) = split(/:/,$_,6);
|
|
|
|
#Video is the only thing that can be tagged "NULL" in .dl_classes
|
|
|
|
if ($data[$i]{VIDEO} eq "NULL")
|
|
{
|
|
$data[$i]{VIDEO} = "";
|
|
}
|
|
$i++;
|
|
}
|
|
close IN;
|
|
return;
|
|
}
|
|
|
|
# Pick the necessary information for use
|
|
|
|
sub pick_info()
|
|
{
|
|
foreach $item ("CPUBOARD", "CPUARCH", "GFXBOARD", "SUBGR", "VIDEO", "MODE")
|
|
{
|
|
$j = 0;
|
|
$i = 0;
|
|
$there = 0;
|
|
splice(@temp,0);
|
|
for ($k = 0 ; $k < scalar@data ; $k++)
|
|
{
|
|
$l = 0;
|
|
while ($l < scalar@temp)
|
|
{
|
|
if ($data[$k]{$item} eq $temp[$l])
|
|
{
|
|
$there = 1;
|
|
}
|
|
$l++;
|
|
}
|
|
if (!$there)
|
|
{
|
|
if (defined $MODE)
|
|
{
|
|
if ($data[$k]{'MODE'} eq $MODE)
|
|
{
|
|
$temp[$j++] = $data[$k]{$item};
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$temp[$j++] = $data[$k]{$item};
|
|
}
|
|
}
|
|
$there = 0;
|
|
}
|
|
$k = 1;
|
|
if (scalar@temp != 1)
|
|
{
|
|
print "Choose the $description{$item}:\n";
|
|
foreach $item (@temp)
|
|
{
|
|
if ($item eq "")
|
|
{
|
|
print "\t$k. Not installed\n";
|
|
}
|
|
else
|
|
{
|
|
print "\t$k. $item\n";
|
|
}
|
|
$k++;
|
|
}
|
|
ww: print "\nChoose one \(";
|
|
for ($k = 1 ; $k <= scalar@temp ; $k++)
|
|
{
|
|
print "$k ";
|
|
}
|
|
print "\): ";
|
|
chomp($choice = <STDIN>);
|
|
if (($choice<1)||($choice>scalar@temp))
|
|
{
|
|
print "Please choose a proper selection\n";
|
|
goto ww;
|
|
}
|
|
$itemx=$temp[$choice-1];
|
|
print ">> $itemx selected.\n";
|
|
}
|
|
else
|
|
{
|
|
$itemx=$temp[0];
|
|
}
|
|
var: while ($i<scalar@data)
|
|
{
|
|
if ($itemx ne $data[$i]{$item})
|
|
{
|
|
splice(@data,$i,1);
|
|
next var;
|
|
}
|
|
$i++;
|
|
}
|
|
if (scalar@data==1)
|
|
{
|
|
print "You have defined a client class with these components: \n";
|
|
if (!defined $MODE)
|
|
{
|
|
$CPUBOARD=$data[0]{CPUBOARD};
|
|
$CPUARCH=$data[0]{CPUARCH};
|
|
$GFXBOARD=$data[0]{GFXBOARD} . " -mSUBGR=" . $data[0]{SUBGR};
|
|
$VIDEO=$data[0]{VIDEO};
|
|
$MODE=$data[0]{MODE};
|
|
}
|
|
else
|
|
{
|
|
if (index($CPUBOARD,$data[0]{CPUBOARD})<0)
|
|
{
|
|
$CPUBOARD.=" -mCPUBOARD=" . $data[0]{CPUBOARD};
|
|
}
|
|
if (index($CPUARCH,$data[0]{CPUARCH})<0)
|
|
{
|
|
$CPUARCH.=" -mCPUARCH=" . $data[0]{CPUARCH};
|
|
}
|
|
$temp=$data[0]{GFXBOARD} . " -mSUBGR=" . $data[0]{SUBGR};
|
|
if (index($GFXBOARD,$temp)<0)
|
|
{
|
|
$GFXBOARD.=" -mGFXBOARD=" . $temp;
|
|
}
|
|
if ($VIDEO eq "")
|
|
{
|
|
$VIDEO=$data[0]{VIDEO};
|
|
}
|
|
elsif (index($VIDEO,$data[0]{VIDEO})<0)
|
|
{
|
|
$VIDEO.=" -mVIDEO=" . $data[0]{VIDEO};
|
|
}
|
|
}
|
|
print "\tCPUBOARD=$CPUBOARD\n";
|
|
print "\tCPUARCH=$CPUARCH\n";
|
|
print "\tGFXBOARD=$GFXBOARD\n";
|
|
print "\tVIDEO=$VIDEO\n";
|
|
print "\tMODE=$MODE\n";
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
sub pickallxxbit()
|
|
{
|
|
#Get all xx-bit platforms from .dl_classes
|
|
#NOTE: This is only used in share_setup
|
|
|
|
my $xyz = shift(@_);
|
|
open (IN, ".dl_classes") || die "Can't open .dl_classes: $!\n";
|
|
linex: while (<IN>)
|
|
{
|
|
chomp;
|
|
next linex if /^#/;
|
|
next linex if (!$_);
|
|
$_ =~s/\s+/:/g;
|
|
($CPB,$CPA,$GFB,$SGR,$VID,$MD) = split(/:/,$_,6);
|
|
if ($VID eq "NULL")
|
|
{
|
|
$VID = "";
|
|
}
|
|
if ($MD eq $xyz)
|
|
{
|
|
#Append to old or create if new
|
|
if (!defined $MODE)
|
|
{
|
|
$CPUBOARD=$CPB;
|
|
$CPUARCH=$CPA;
|
|
$GFXBOARD=$GFB . " -mSUBGR=" . $SGR;
|
|
$VIDEO=$VID;
|
|
$MODE=$MD;
|
|
}
|
|
else
|
|
{
|
|
if (index($CPUBOARD,$CPB)<0)
|
|
{
|
|
$CPUBOARD.=" -mCPUBOARD=" . $CPB;
|
|
}
|
|
if (index($CPUARCH,$CPA)<0)
|
|
{
|
|
$CPUARCH.=" -mCPUARCH=" . $CPA;
|
|
}
|
|
$temp=$GFB . " -mSUBGR=" . $SGR;
|
|
if (index($GFXBOARD,$temp)<0)
|
|
{
|
|
$GFXBOARD.=" -mGFXBOARD=" . $temp;
|
|
}
|
|
if ($VIDEO eq "")
|
|
{
|
|
$VIDEO=$VID;
|
|
}
|
|
elsif (index($VIDEO,$VID)<0)
|
|
{
|
|
$VIDEO.=" -mVIDEO=" . $VID;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return 1; #Just to do it
|