#!/usr/bin/perl -w
#
# build script for building the LTSP build environment
#
# Copyright (c) 2003 by James A. McQuillan (McQuillan Systems, LLC)
#
# This software is licensed under the Gnu General Public License.
# The full text of which can be found at http://www.LTSP.org/license.txt
#
use strict;
use Getopt::Long;
my $version = "0.3";
my $clean_only = 0;
my $makepkgs = 0;
my $cpus = 0;
my $start_time = time();
my %times;
my @packages = ( "crosscomp-src",
"lbe-src",
"ltsp-src",
"initramfs-src" );
my @opts;
my $getopt_result;
if( ! -f "build_all" ){
die "Your current directory MUST be where this script is!";
}
$getopt_result = GetOptions(
"clean" => sub { push @opts, "--clean"; $clean_only=1 },
"cpus=i" => sub { push @opts, sprintf("--cpus=%d",$_[1]); },
"gcc=s" => sub { push @opts, "--gcc" },
"fetch" => sub { push @opts, "--fetch"; },
"unpack" => sub { push @opts, "--unpack"; },
"prepatch" => sub { push @opts, "--prepatch"; },
"configure" => sub { push @opts, "--configure"; },
"postpatch" => sub { push @opts, "--postpatch"; },
"build" => sub { push @opts, "--build"; },
"makepkg" => sub { push @opts, "--makepkg"; $makepkgs=1 },
);
if ( ! $getopt_result ){
printf("\n");
exit 1;
}
my $optlist = join( " ", @opts );
my $catalog_file = "catalog.dat";
my $catalog_cmd = "./catalog_it.pl"
. " ./"
. " base"
. " base";
system("$catalog_cmd");
$ENV{LBE_BUILDALL} = 1;
foreach my $pkg ( @packages ){
my $start_time = time();
chdir($pkg) or die "Unable to chdir($pkg): $!\n";
printf("\n$pkg:\n");
my $rs = system( "./build $optlist" );
if( $rs ){
exit;
}
#
# leave the package directory
#
chdir("..") || die "Unable to chdir(".."): $!\n";
my $end_time = time();
my $diff_time = $end_time - $start_time;
$times{$pkg} = $diff_time;
}
printf("\n");
if( $clean_only ){
my $dirlist = join ( " ", qw ( bin
catalog.dat
dev
doc
etc
i386-linux
i386-linux-crosscomp
include
info
ltsp_kernel_kit
lib
libexec
man
opt
proc
sbin
share
tmp
usr
var ) );
system("rm -rf $dirlist");
printf("\n");
}
my $end_time = time();
push @packages, "Total";
$times{"Total"} = $end_time - $start_time;
printf("Processing time to run ./build_all %s:\n\n", $optlist );
foreach my $pkg ( @packages ){
my $total_secs = $times{$pkg};
my $elapsed_mins = int( $total_secs / 60 );
my $elapsed_secs = $total_secs - ( $elapsed_mins * 60 );
if($pkg eq "Total"){
printf(" %-20s =======\n", "" );
}
printf(" %-20s %4d:%02d\n", $pkg, $elapsed_mins, $elapsed_secs);
}
exit 0;