use File::Spec;\r
use File::Basename;\r
use lib "$FindBin::Bin/build/lib";\r
-#use Logger;\r
+use ActivePerl::PPM::Logger;\r
use Getopt::Long;\r
use Cwd;\r
use XML::Simple;\r
use Data::Dumper;\r
-use Archive::Zip qw( :ERROR_CODES :CONSTANTS );\r
- \r
-# my $zip = Zip->new();\r
\r
my $BAIL;\r
$0 = fileparse($0);\r
-my $OPT = { logfile => 'bkw.pl.log' };\r
+my $OPT = {foo => 'bar'};\r
+\r
my $MAKE = 'NMAKE';\r
\r
sub get_info\r
/srcdir dir Source directory to use. Should contain \r
pismere/athena. If cvstag or svntag is null, \r
the directory should be prepopulated.\r
- /cvstag tag \\ For whichever of these tags is specified,\r
- /svntag url / a checkout will be done into srcdir\r
- /debug Do debug make instead of release make\r
/outdir dir Directory to be created where build results will go\r
+ /repository checkout | co \\ What repository action to take.\r
+ update | up ) Options are to checkout, update or \r
+ skip / take no action [skip].\r
+ /cvstag tag \\ For whichever of these tags is specified,\r
+ /svntag tag / the repository action will be done into srcdir\r
+ /debug Do debug make instead of release make\r
/nomake Skip make step\r
/nopackage Skip packaging step\r
/clean Build clean target\r
'debug|d',\r
'config|f:s',\r
'logfile|l:s',\r
+ 'repository:s',\r
'clean',\r
'verbose',\r
'vverbose',\r
@prepackage = $config->{Stages}->{PrePackage};\r
@files = $config->{Stages}->{PrePackage}->{CopyList}->{Files};\r
\r
- # Update the config with overrides from the command line:\r
- $tags[0]->{cvs}->{value} = $OPT->{cvstag} if exists $OPT->{cvstag};\r
- $tags[0]->{svn}->{value} = $OPT->{svnurl} if exists $OPT->{svnurl};\r
- $paths[0]->{src}->{path} = $OPT->{srcdir} if exists $OPT->{srcdir};\r
- $paths[0]->{out}->{path} = $OPT->{outdir} if exists $OPT->{outdir};\r
- $switches[0]->{debug}->{value} = $OPT->{debug} if exists $OPT->{debug};\r
- $switches[0]->{clean}->{value} = 1 if exists $OPT->{clean};\r
- $switches[0]->{nomake}->{value} = 1 if exists $OPT->{nomake};\r
- $switches[0]->{nopackage}->{value} = 1 if exists $OPT->{nopackage};\r
- $switches[0]->{verbose}->{value} = $OPT->{verbose} if exists $OPT->{verbose};\r
- $switches[0]->{vverbose}->{value} = $OPT->{verbose} if exists $OPT->{vverbose};\r
+ # Update the configuration with overrides from the command line:\r
+ $tags[0]->{cvs}->{value} = $OPT->{cvstag} if exists $OPT->{cvstag};\r
+ $tags[0]->{svn}->{value} = $OPT->{svnurl} if exists $OPT->{svnurl};\r
+ $paths[0]->{src}->{path} = $OPT->{srcdir} if exists $OPT->{srcdir};\r
+ $paths[0]->{out}->{path} = $OPT->{outdir} if exists $OPT->{outdir};\r
+ $switches[0]->{debug}->{value} = $OPT->{debug} if exists $OPT->{debug};\r
+ $switches[0]->{clean}->{value} = 1 if exists $OPT->{clean};\r
+ $switches[0]->{logfile}->{value} = 1 if exists $OPT->{logfile};\r
+ $switches[0]->{repository}->{value} = $OPT->{repository} if exists $OPT->{repository};\r
+ $switches[0]->{nomake}->{value} = 1 if exists $OPT->{nomake};\r
+ $switches[0]->{nopackage}->{value} = 1 if exists $OPT->{nopackage};\r
+ $switches[0]->{verbose}->{value} = $OPT->{verbose} if exists $OPT->{verbose};\r
+ $switches[0]->{vverbose}->{value} = $OPT->{verbose} if exists $OPT->{vverbose};\r
if (exists $OPT->{logfile}) {\r
$switches[0]->{log}->{path} = $OPT->{logfile};\r
$switches[0]->{log}->{value} = 1;\r
##-- Assemble configuration from config file and command line.\r
\r
# Begin logging:\r
-# my $l;\r
-# if ($OPT->{logfile}) {\r
+ my $l;\r
+ if ($OPT->{logfile}) {\r
# $l = new Logger $OPT->{logfile} or die "Fatal -- Can't create Logger.";\r
# $l->start;\r
-# }\r
-\r
-if (!$switches[0]->{nomake}->{value}) {\r
- if ($verbose) {print "Info -- *** Begin fetching sources.\n";}\r
- \r
- my ($wd, $result);\r
- $wd = $paths[0]->{src}->{path};\r
- chdir($wd) or die "Fatal -- couldn't chdir to $wd\n";\r
- if ($verbose) {print "Info -- chdir to $wd\n";}\r
- \r
- #if (! -d "pismere") {print "Warning -- can't find pismere in $wd. It will be created.\n";}\r
- #if (! -d "pismere\\athena") {print "Warning -- can't find pismere\\athena in $wd. It will be created.\n";}\r
- \r
- if ($tags[0]->{cvs}->{value}) {\r
- # Set up cvs environment variables:\r
- print "Warning -- cvs checkout skipped for now.\n";\r
- # system("cvs checkout krb") or die "Fatal -- checkout of cvs source failed; return code $?\n";\r
}\r
- else {print "Info -- cvs tag not specified; no cvs sources will be checked out.\n";}\r
+\r
+##++ Begin repository action:\r
+ my $sw = $switches[0]->{repository}->{value};\r
+ my $rverb;\r
+ if ($sw =~ /skip/i) {print "Info -- Skipping repository access.\n";}\r
+ elsif ($sw =~ /update/i) {$rverb = "update";}\r
+ elsif ($sw =~ /up/i) {$rverb = "update";}\r
+ elsif ($sw =~ /checkout/i) {$rverb = "checkout";}\r
+ elsif ($sw =~ /co/i) {$rverb = "checkout";}\r
+ else {\r
+ print "Fatal -- invalid /repository value.\n";\r
+ usage();\r
+ die;\r
+ }\r
+\r
+ my $wd = $paths[0]->{src}->{path}."\\pismere";\r
\r
- if ($tags[0]->{svn}->{value}) {\r
- # Set up svn environment variables:\r
- print "Warning -- svn checkout skipped for now.\n";\r
- # system("svn checkout krb") or die "Fatal -- checkout of svn source failed; return code $?\n";\r
+ if ($rverb) {\r
+ if ($verbose) {print "Info -- *** Begin fetching sources.\n";}\r
+\r
+ my $krb5dir = $wd."\\athena\\auth\\krb5";\r
+\r
+ # If we are fetching into a new directory, the directory structure won't exist and many cd commands will fail.\r
+ # Use an xcopy to create the directory paths we will need:\r
+ !system("echo tempfile > kpk.tmp") or die "Fatal -- Couldn't creqte a simple temp file.\n";\r
+ !system("echo F | xcopy /y kpk.tmp $krb5dir") or die "Fatal -- Couldn't create path $krb5dir\n";\r
+ !system("del kpk.tmp") or die "Fatal -- Couldn't clean up temporary file.\n";\r
+ \r
+ chdir("$wd") or die "Fatal -- couldn't chdir to $wd\n";\r
+ if ($verbose) {print "Info -- chdir to $wd\n";}\r
+ \r
+ #if (! -d "pismere") {print "Warning -- can't find pismere in $wd. It will be created.\n";}\r
+ if (! -d "athena") {print "Warning -- can't find pismere\\athena in $wd. It will be created.\n";}\r
+ \r
+ # [TODO] Set up cvs environment variables:\r
+ my $cvscmd = "cvs $rverb ";\r
+ if ($tags[0]->{cvs}->{value}) {$cvscmd .= $tags[0]->{cvs}->{value};}\r
+ !system($cvscmd) or die "Fatal -- command \"$cvscmd\" failed; return code $?\n";\r
+ \r
+ # [TODO] Set up svn environment variables:\r
+ chdir("$krb5dir") or die "Fatal -- couldn't chdir to $krb5dir\n";\r
+ if ($verbose) {print "Info -- chdir to $krb5dir\n";}\r
+ my $svncmd = "svn $rverb ";\r
+ if ($tags[0]->{svn}->{value}) {$svncmd .= $tags[0]->{svn}->{value};}\r
+ !system($svncmd) or die "Fatal -- command \"$svncmd\" failed; return code $?\n";\r
+ \r
+ if ($verbose) {print "Info -- *** End fetching sources.\n";}\r
}\r
- else {print "Info -- svn tag not specified; no svn sources will be checked out.\n";}\r
- \r
- if ($verbose) {print "Info -- *** End fetching sources.\n";}\r
+##-- End repository action.\r
\r
if ($verbose) {print "Info -- *** Begin preparing for build.\n";}\r
- \r
+ $wd = $paths[0]->{src}->{path};\r
+ chdir("$wd") or die "Fatal -- couldn't chdir to $wd\n";\r
+ if ($verbose) {print "Info -- chdir to $wd\n";}\r
+\r
my ($path, $destpath);\r
\r
# Copy athena\scripts\site\graft\krb5\Makefile.src to athena\auth\krb5:\r
\r
if ($verbose) {print "Info -- *** End preparing for build.\n";}\r
\r
- my ($buildtarget, $buildtext);\r
- if ($switches[0]->{clean}->{value}) {\r
- $buildtarget = "clean" ;\r
- $buildtext = " clean."\r
- }\r
- else {\r
- $buildtarget = "" ;\r
- $buildtext = "."\r
- }\r
- if ($verbose) {print "Info -- *** Begin build".$buildtext."\n";}\r
- \r
- chdir("pismere/athena") or die "Fatal -- couldn't chdir to source directory $wd\\pismere\\athena\n";\r
- if ($verbose) {print "Info -- chdir to $wd\\pismere\\athena\n";}\r
- !system("perl ../scripts/build.pl --softdirs $buildtarget") or die "Fatal -- build $buildtarget failed.";\r
+ if (!$switches[0]->{nomake}->{value}) {\r
+ my ($buildtarget, $buildtext);\r
+ if ($switches[0]->{clean}->{value}) {\r
+ $buildtarget = "clean" ;\r
+ $buildtext = " clean."\r
+ }\r
+ else {\r
+ $buildtarget = "" ;\r
+ $buildtext = "."\r
+ }\r
+ if ($verbose) {print "Info -- *** Begin build".$buildtext."\n";}\r
\r
- chdir("..") or die "Fatal -- couldn't chdir to $wd\\pismere.";\r
- if ($switches[0]->{clean}->{value}) {\r
- if (-d "staging") {\r
- !system("rm -rf staging") or die "Fatal -- Couldn't remove pismere/staging.";\r
+ chdir("pismere/athena") or die "Fatal -- couldn't chdir to source directory $wd\\pismere\\athena\n";\r
+ if ($verbose) {print "Info -- chdir to $wd\\pismere\\athena\n";}\r
+ !system("perl ../scripts/build.pl --softdirs $buildtarget") or die "Fatal -- build $buildtarget failed.";\r
+ \r
+ chdir("..") or die "Fatal -- couldn't chdir to $wd\\pismere.";\r
+ if ($switches[0]->{clean}->{value}) {\r
+ if (-d "staging") {\r
+ !system("rm -rf staging") or die "Fatal -- Couldn't remove pismere/staging.";\r
+ }\r
}\r
- }\r
-\r
- if ($verbose) {print "Info -- *** End build".$buildtext."\n";}\r
- } ## End make conditional.\r
\r
-if (!$switches[0]->{nopackage}->{value}) {\r
- if ($verbose) {print "Info -- *** Begin prepackage.\n";}\r
+ if ($verbose) {print "Info -- *** End build".$buildtext."\n";}\r
+ } ## End make conditional.\r
\r
- # The build results are copied to a staging area, where the packager expects to find them.\r
- # We put the staging area in the fixed area .../pismere/staging.\r
- $wd = $paths[0]->{src}->{path}."\\pismere";\r
- my $staging_area = "$wd\\staging";\r
- chdir($wd) or die "Fatal -- couldn't chdir to $wd\n";\r
- if ($verbose) {print "Info -- chdir to $wd\n";}\r
- (-e $staging_area) or makeDir($staging_area);\r
+ if (!$switches[0]->{nopackage}->{value}) {\r
+ if ($verbose) {print "Info -- *** Begin prepackage.\n";}\r
+ \r
+ # The build results are copied to a staging area, where the packager expects to find them.\r
+ # We put the staging area in the fixed area .../pismere/staging.\r
+ $wd = $paths[0]->{src}->{path}."\\pismere";\r
+ my $staging_area = "$wd\\staging";\r
+ chdir($wd) or die "Fatal -- couldn't chdir to $wd\n";\r
+ if ($verbose) {print "Info -- chdir to $wd\n";}\r
+ (-e $staging_area) or makeDir($staging_area);\r
+ \r
+ my $src = $paths[0]->{src}->{path};\r
+ my $CopyList = $prepackage[0]->{CopyList};\r
+ \r
+ # A path can contain a variable part, which will be handled here. If the variable part is \r
+ # the Always or BuildDependent tag, then the variable will be changed to the \r
+ # build-type-dependent PathFragment.\r
+ # If the variable part is the IgnoreTag, then the file will not be copied.\r
+ my ($PathFragment, $BuildDependentTag, $IgnoreTag); \r
\r
- my $src = $paths[0]->{src}->{path};\r
- my $CopyList = $prepackage[0]->{CopyList};\r
+ my $AlwaysTag = $CopyList->{Config}->{AlwaysTag}->{value};\r
+ if ($switches[0]->{debug}->{value}) { ## Debug build tags:\r
+ $PathFragment = $CopyList->{Config}->{DebugArea}->{value};\r
+ $BuildDependentTag = $CopyList->{Config}->{DebugTag}->{value};\r
+ $IgnoreTag = $CopyList->{Config}->{ReleaseTag}->{value};\r
+ }\r
+ else { ## Release build tags:\r
+ $PathFragment = $CopyList->{Config}->{ReleaseArea}->{value};\r
+ $BuildDependentTag = $CopyList->{Config}->{ReleaseTag}->{value};\r
+ $IgnoreTag = $CopyList->{Config}->{DebugTag}->{value};\r
+ } \r
\r
- # A path can contain a variable part, which will be handled here. If the variable part is \r
- # the Always or BuildDependent tag, then the variable will be changed to the \r
- # build-type-dependent PathFragment.\r
- # If the variable part is the IgnoreTag, then the file will not be copied.\r
- my ($PathFragment, $BuildDependentTag, $IgnoreTag); \r
-\r
- my $AlwaysTag = $CopyList->{Config}->{AlwaysTag}->{value};\r
- if ($switches[0]->{debug}->{value}) { ## Debug build tags:\r
- $PathFragment = $CopyList->{Config}->{DebugArea}->{value};\r
- $BuildDependentTag = $CopyList->{Config}->{DebugTag}->{value};\r
- $IgnoreTag = $CopyList->{Config}->{ReleaseTag}->{value};\r
- }\r
- else { ## Release build tags:\r
- $PathFragment = $CopyList->{Config}->{ReleaseArea}->{value};\r
- $BuildDependentTag = $CopyList->{Config}->{ReleaseTag}->{value};\r
- $IgnoreTag = $CopyList->{Config}->{DebugTag}->{value};\r
- } \r
-\r
- # Copy all the files in the CopyList:\r
- $i = 0;\r
- my $nfiles = 0;\r
- while ($files[0]->{File}[$i]) {\r
- my ($name, $newname, $from, $to, $ignore);\r
- $name = $files[0]->{File}->[$i]->{name};\r
- if (exists $files[0]->{File}->[$i]->{newname}) {$newname = $files[0]->{File}->[$i]->{newname};}\r
- else {$newname = $name;}\r
- if ($name) {\r
- $ignore = 0;\r
- $from = "$src\\pismere\\athena\\$files[0]->{File}->[$i]->{from}\\$name";\r
- $to = "$src\\pismere\\staging\\$files[0]->{File}->[$i]->{to}\\$newname";\r
- if (index($from.$to, $IgnoreTag) <0) { ## Test for IgnoreTag\r
- # Apply PathTag substitutions:\r
- $from =~ s/$AlwaysTag/$PathFragment/g;\r
- $to =~ s/$AlwaysTag/$PathFragment/g;\r
- $from =~ s/$BuildDependentTag/$PathFragment/g;\r
- $to =~ s/$BuildDependentTag/$PathFragment/g;\r
- # We use xcopy instead of copy because it will create directories for us:\r
- if (system("echo F | xcopy /D /F /Y $from $to 2>NUL") != 0) {\r
- # xcopy failed. \r
- if (!exists $files[0]->{File}->[$i]->{notrequired}) {\r
- ( -e $from) or die "Fatal -- can't find $from";\r
- die "Fatal -- Copy of $from to $to failed";\r
+ # Copy all the files in the CopyList:\r
+ $i = 0;\r
+ my $nfiles = 0;\r
+ my $bOldDot = 1;\r
+ my $bDot = 0;\r
+ while ($files[0]->{File}[$i]) {\r
+ my ($name, $newname, $from, $to, $ignore);\r
+ $name = $files[0]->{File}->[$i]->{name};\r
+ if (exists $files[0]->{File}->[$i]->{newname}) {$newname = $files[0]->{File}->[$i]->{newname};}\r
+ else {$newname = $name;}\r
+ if ($name) {\r
+ $ignore = 0;\r
+ $from = "$src\\pismere\\athena\\$files[0]->{File}->[$i]->{from}\\$name";\r
+ $to = "$src\\pismere\\staging\\$files[0]->{File}->[$i]->{to}\\$newname";\r
+ if (index($from.$to, $IgnoreTag) <0) { ## Test for IgnoreTag\r
+ # Apply PathTag substitutions:\r
+ $from =~ s/$AlwaysTag/$PathFragment/g;\r
+ $to =~ s/$AlwaysTag/$PathFragment/g;\r
+ $from =~ s/$BuildDependentTag/$PathFragment/g;\r
+ $to =~ s/$BuildDependentTag/$PathFragment/g;\r
+ # We use xcopy instead of copy because it will create directories for us:\r
+ if (system("echo F | xcopy /D /F /Y $from $to > a.tmp 2>NUL") != 0) {\r
+ # xcopy failed. \r
+ if (!exists $files[0]->{File}->[$i]->{notrequired}) {\r
+ ( -e $from) or die "Fatal -- can't find $from";\r
+ die "Fatal -- Copy of $from to $to failed";\r
+ }\r
+ }\r
+ else { ## To show progress when files aren't copied, print a string of dots.\r
+ open(MYINPUTFILE, "<a.tmp");\r
+ my(@lines) = <MYINPUTFILE>;\r
+ foreach $line (@lines) { \r
+ $bDot = ($line =~ /^0/);\r
+ }\r
+ close(MYINPUTFILE);\r
+ if (!$bDot && $bOldDot) {print "\n";}\r
+ if ($bDot) {print ".";}\r
+ else {print "$from copied to $to\n";}\r
+ $bOldDot = $bDot;\r
}\r
}\r
- else {$nfiles++;}\r
}\r
+ $i++;\r
}\r
- $i++;\r
- }\r
+ if ($bDot) {print "\n";}\r
+ \r
+# # Copy the extras:\r
+# print "Info -- Absent a way of scripting unzip, the instructions require manually unzipping into\n";\r
+# print " the target area $src\\pismere\\staging.\n";\r
+# # my $extradir = $paths[0]->{extras}->{path};\r
+# # !system("xcopy /d/f/y/s $src\\pismere\\athena\\$extradir\\* $src\\pismere\\staging") or die "Fatal -- Couldn't copy extras from $src\\pismere\\athena\\$extradir";\r
+ \r
+ chdir("staging\\install\\wix") or die "Fatal -- Couldn't cd to $wd\\staging\\install\\wix";\r
\r
- # Copy the extras:\r
- print "Info -- Absent a way of scripting unzip, the instructions require manually unzipping into\n";\r
- print " the target area $src\\pismere\\staging.\n";\r
- # my $extradir = $paths[0]->{extras}->{path};\r
- # !system("xcopy /d/f/y/s $src\\pismere\\athena\\$extradir\\* $src\\pismere\\staging") or die "Fatal -- Couldn't copy extras from $src\\pismere\\athena\\$extradir";\r
+ # Correct errors in files.wxi:\r
+ !system("sed 's/WorkingDirectory=\"\\[dirbin\\]\"/WorkingDirectory=\"dirbin\"/g' files.wxi > a.tmp") or die "Fatal -- Couldn't modify files.wxi.";\r
+ !system("copy /y a.tmp files.wxi") or die "Fatal -- Couldn't update files.wxi.";\r
+ !system("del a.tmp") or print "Warning -- Couldn't clean up temporary file $wd\\staging\\installer\\wix\\a.tmp.\n";\r
+ \r
+ # Update paths in site-local.wxi:\r
+ my $dblback_originalDir = $originalDir;\r
+ $dblback_originalDir =~ s/\\/\\\\/g;\r
+ !system("sed -f $dblback_originalDir\\site-local.sed site-local.wxi > b.tmp") or die "Fatal -- Couldn't modify site-local.wxi.";\r
+ my $hexback_wd = $wd;\r
+ $hexback_wd =~ s/\\/\\\\\\\\\\\\/g;\r
+ !system("sed 's/%%TARGETDIR%%/$hexback_wd\\\\\\staging\\\\\\/' b.tmp > c.tmp") or die "Fatal -- Couldn't modify site-local.wxi temporary file."; \r
+ !system("sed 's/%%CONFIGDIR%%/$hexback_wd\\\\\\staging\\\\\\sample\\\\\\/' c.tmp > d.tmp") or die "Fatal -- Couldn't modify site-local.wxi temporary file."; \r
+ !system("copy /y d.tmp site-local.wxi") or die "Fatal -- Couldn't replace site-local.wxi.";\r
\r
- chdir("staging\\install\\wix") or die "Fatal -- Couldn't cd to $wd\\staging\\install\\wix";\r
+ # Copy krb.conf from ...\athena\auth\krb5\src\config-files to pismere\staging\samples\krb5.ini:\r
+ !system("echo F | xcopy /D $wd\\athena\\auth\\krb5\\src\\config-files\\krb5.conf $wd\\staging\\sample\\krb5.ini") \r
+ or die "Fatal -- Couldn't update $wd\\staging\\sample\\krb5.ini.";\r
\r
- # Correct errors in files.wxi:\r
- !system("sed 's/WorkingDirectory=\"\\[dirbin\\]\"/WorkingDirectory=\"dirbin\"/g' files.wxi > a.tmp") or die "Fatal -- Couldn't modify files.wxi.";\r
- !system("copy /y a.tmp files.wxi") or die "Fatal -- Couldn't update files.wxi.";\r
- !system("del a.tmp") or print "Warning -- Couldn't clean up temporary file $wd\\staging\\installer\\wix\\a.tmp.\n";\r
+ if ($verbose) {print "Info -- *** End prepackage.\n";}\r
\r
- # Update paths in site-local.wxi:\r
- my $dblback_originalDir = $originalDir;\r
- $dblback_originalDir =~ s/\\/\\\\/g;\r
- !system("sed -f $dblback_originalDir\\site-local.sed site-local.wxi > b.tmp") or die "Fatal -- Couldn't modify site-local.wxi.";\r
- my $hexback_wd = $wd;\r
- $hexback_wd =~ s/\\/\\\\\\\\\\\\/g;\r
- !system("sed 's/%%TARGETDIR%%/$hexback_wd\\\\\\staging\\\\\\/' b.tmp > c.tmp") or die "Fatal -- Couldn't modify site-local.wxi temporary file."; \r
- !system("sed 's/%%CONFIGDIR%%/$hexback_wd\\\\\\staging\\\\\\sample\\\\\\/' c.tmp > d.tmp") or die "Fatal -- Couldn't modify site-local.wxi temporary file."; \r
- !system("copy /y d.tmp site-local.wxi") or die "Fatal -- Couldn't replace site-local.wxi.";\r
-\r
- # Copy krb.conf from ...\athena\auth\krb5\src\config-files to pismere\staging\samples\krb5.ini:\r
- !system("echo F | xcopy /D $wd\\athena\\auth\\krb5\\src\\config-files\\krb5.conf $wd\\staging\\sample\\krb5.ini") \r
- or die "Fatal -- Couldn't update $wd\\staging\\sample\\krb5.ini.";\r
-\r
- # Sam said to leave these files out, but it is faster to copy them now \r
- # than to figure out how to modify the wix configs to ignore them:\r
- !system("echo F | xcopy /D $wd\\staging\\kfw-2.5-extra\\sample-config\\*.con $wd\\staging\\sample") \r
- or die "Fatal -- Couldn't copy $wd\\staging\\kfw-2.5-extra\\sample-config\\*.con.";\r
-\r
- if ($verbose) {print "Info -- *** End prepackage.\n";}\r
+ # Make the msi:\r
+ !system("nmake") or die "Fatal -- Couldn't make kfw.msi.";\r
\r
- # Make the msi:\r
- !system("nmake") or die "Fatal -- Couldn't make kfw.msi.";\r
-\r
- if ($verbose) {print "Info -- *** Begin package.\n";}\r
- if ($verbose) {print "Info -- *** End package.\n";}\r
- } ## End package conditional.\r
+ if ($verbose) {print "Info -- *** Begin package.\n";}\r
+ if ($verbose) {print "Info -- *** End package.\n";}\r
+ } ## End package conditional.\r
\r
#End logging:\r
# if (!$OPT->{nolog}) {\r
# }\r
\r
return $errorState;\r
-}\r
+ } ## End subroutine main.\r
\r
$SIG{'INT'} = \&handler;\r
$SIG{'QUIT'} = \&handler;\r
\r
-##exit (0);\r
exit(main());
\ No newline at end of file