summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Koch <kpkoch@mit.edu>2007-03-30 20:08:53 +0000
committerKevin Koch <kpkoch@mit.edu>2007-03-30 20:08:53 +0000
commit53b462aa4829fa9e1b9f191e55c83698bc44501a (patch)
treeda82677f8ac5fbbe6bfdfc16583dcfb3cfe6d826
parent4a1a867562bbc20ef769e3f556a69767b236433f (diff)
downloadkrb5-53b462aa4829fa9e1b9f191e55c83698bc44501a.tar.gz
krb5-53b462aa4829fa9e1b9f191e55c83698bc44501a.tar.xz
krb5-53b462aa4829fa9e1b9f191e55c83698bc44501a.zip
Remove tabs. Improve some comments. Regroup files in copylist.pl according to destination
Add signing. Factor zipfiles out of bkw.pl and signing out of makeZip.pl. Rename MITKerberosForWindows.exe before zipping it into the SDK zipfile. Target_Version: 1.6.1 Ticket: 5490 Tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19344 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/windows/build/BKWconfig.xml305
-rw-r--r--src/windows/build/bkw.pl1011
-rw-r--r--src/windows/build/copyfiles.pl247
-rw-r--r--src/windows/build/copyfiles.xml428
-rw-r--r--src/windows/build/makeZip.pl108
-rw-r--r--src/windows/build/sdkfiles.xml153
-rw-r--r--src/windows/build/signFiles.pl27
7 files changed, 1127 insertions, 1152 deletions
diff --git a/src/windows/build/BKWconfig.xml b/src/windows/build/BKWconfig.xml
index 9818db79c1..7e1fd24c7d 100644
--- a/src/windows/build/BKWconfig.xml
+++ b/src/windows/build/BKWconfig.xml
@@ -1,152 +1,161 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- BKW: Build Kerberos for Windows -->
<BKW_Config>
- <CommandLine>
- <!-- The most changeable parameters can be specified on the command line. -->
- <Tags>
- <cvs value="" />
- <svn value=""/>
- </Tags>
- <Directories>
- <!-- Sources will be checked out of repositories into <src>. The structure
- of the repositories will cause pismere/athena to be created under <src>. -->
- <src path ="C:\projects\Autobuild" />
- <out path ="public" /> <!-- Relative to src. -->
- <unixfind path ="c:\cygwin\bin" />
- </Directories>
- <Options>
- <debug value="0" />
- <logfile value="1" path="bkw.pl.log" />
- <repository value="skip" />
- <clean value="0" />
- <nomake value="0" />
- <nopackage value="0" />
- <verbose value="0" />
- <vverbose value="0" />
- </Options>
- </CommandLine>
- <Stages>
- <FetchSources>
- <Config>
- <CVSROOT name=":kserver:cvs.mit.edu:/cvs/pismere" />
- <SVNURL name="svn.mit.edu" /> <!-- NB: No protocol or slashes!! -->
- <USERNAME name="" /> <!-- Needed for svn/plink. Override from command line -->
- </Config>
- </FetchSources>
- <Make>
- <Prunes> <!-- Files to be removed from current build to match what is in the 3.1 distribution: -->
- <Prune dummy="foo" /> <!-- Force XML::Simple behavior -->
- <Prune name="afsauth" />
- <Prune name="aklog" />
- <Prune name="vs" />
- </Prunes>
- </Make>
- <PrePackage>
- <CopyList>
- <Config>
- <!-- Debug and Release build results go in different places.
- The otherwise identical paths differ in one section. For example:
- .../target/bin/i386/bin/rel/filename and .../target/bin/i386/dbg/filename.
- Here we define the two differing sections: -->
- <DebugArea value="dbg" />
- <ReleaseArea value="rel" />
- <!-- Paths in the file list that include <AlwaysTag> will always have the tag replaced
- with <DebugArea> or <ReleaseArea>, depending on the type of build.
- Paths that include <DebugTag> (or <ReleaseTag>) will only have the tag substituted
- and be copied when doing a debug (or release) build. Examples:
- Will always be copied, from a build-dependent directory:
- <File name="kfwlogon.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- Will only be copied in debug build:
- <File name="netidmgr.exe.static.manifest" from="..\target\bin\i386\%debug%\" to="\bin\i386" notrequired="true" />
- Will always be copied, from a build-independent directory:
- <File name="des.h" from="auth\krb4\include\" to="\inc\krb4" newname="foo.h"/>
- -->
- <AlwaysTag value="%bldtype%" /> <!-- Pick a string that won't appear in a path. -->
- <DebugTag value="%debug%" /> <!-- Pick a string that won't appear in a path. -->
- <ReleaseTag value="%release%" /> <!-- Pick a string that won't appear in a path. -->
- </Config>
- <Files>
- <Include path="copyfiles.xml" />
- </Files> <!-- Relative to location of bkw.pl. -->
- </CopyList>
- </PrePackage>
- <Package>
- <Config>
- <Paths>
- <Versions path="pismere/athena/include/kerberos.ver" /> <!-- Relative to <src>. -->
- </Paths>
- </Config>
- <MSI></MSI>
- <NSIS></NSIS> <!-- NB: Most config is done in site-local.nsi. -->
- </Package>
- <PostPackage>
- <Config> <!-- This config info will be copied into each CopyList in PostPackage. -->
- <FileStem name="kfw-%VERSION_MAJOR%-%VERSION_MINOR%-%VERSION_PATCH%" /> <!-- <FileStem> will be substituted for %filestem%. -->
- </Config>
- <Zips>
- <Zip dummy="foo" /> <!-- To force desired XML::Simple behavior -->
- <!-- Files will be copied into directory <topdir>; <topdir> will appear in the paths of the files. -->
- <!-- File from paths are relative to <src>/pismere. -->
- <!-- File to paths are relative to <out>. -->
- <Zip name="Core Binaries" filename="%filestem%.zip" topdir="%filestem%-final">
- <CopyList>
- <Config>
- <DebugArea value="dbg" />
- <ReleaseArea value="rel" />
- <AlwaysTag value="%bldtype%" /> <!-- Pick a string that won't appear in a path. -->
- <DebugTag value="%debug%" /> <!-- Pick a string that won't appear in a path. -->
- <ReleaseTag value="%release%" /> <!-- Pick a string that won't appear in a path. -->
- </Config>
- <Files>
- <Include path="corebinaryfiles.xml" />
- </Files> <!-- Relative to location of bkw.pl. -->
- </CopyList>
- </Zip>
- <Zip name="SDK" filename="%filestem%-sdk.zip" topdir="%filestem%-final">
- <CopyList>
- <Files>
- <Include path="sdkfiles.xml" />
- </Files> <!-- Relative to location of bkw.pl. -->
- </CopyList>
- </Zip>
- <Zip name="SRC" filename="%filestem%-src.zip" topdir="%filestem%-final">
- <CopyList>
- <Files>
- <!-- File from paths are relative to <src>/pismere. -->
- <!-- File to paths are relative to <out>. -->
- <File dummy="foo" /> <!-- Forces XML::Simple behavior -->
- <!-- Without this, XML::Simple does not make an anonymous array and I can't figure out how to iterate over it. -->
- <File name="*.*" from="athena" to="src\athena" />
- <File name="*.*" from="doc" to="src\doc" />
- <File name="*.*" from="scripts" to="src\scripts" />
- </Files>
- </CopyList>
- <Prunes> <!-- Files to be removed from current build to match what is in the 3.1 distribution: -->
- <Prune dummy="foo" />
- <Prune name="CVS" />
- <Prune name=".cvsignore" flags="i" />
- <Prune name="Changelog" flags="i" />
- <Prune name="obj" />
- <Prune name="site" />
- </Prunes>
- <Requires>
- <Switch dummy="foo" />
- <Switch name="REPOSITORY" value="CHECKOUT"/>
- <ErrorMsg text="Can't build source zip unless /REPOSITORY CHECKOUT is specified." />
- </Requires>
- </Zip>
- </Zips>
- <CopyList> <!-- Copied at end of post-package step. -->
- <Files>
- <File dummy="foo" />
- <!-- File from paths are relative to <src>/pismere. -->
- <!-- File to paths are relative to <out>. -->
- <File name="msi-deployment-guide.txt" from="staging\install\wix\" to="" />
- <File name="netidmgr_userdoc.pdf" from="staging\doc" to="." />
- <File name="kfw.msi" from="staging\install\wix\" to="" newname="%filestem%.msi" />
- <File name="MITKerberosForWindows%-DEBUG%.exe" from="staging\install\nsis" to="" newname="%filestem%%-DEBUG%.exe" />
- </Files>
- </CopyList>
- </PostPackage>
- </Stages>
+ <CommandLine>
+ <!-- The most changeable parameters can be specified on the command line. -->
+ <Tags>
+ <cvs value="" />
+ <svn value=""/>
+ </Tags>
+ <Directories>
+ <!-- Sources will be checked out of repositories into <src>. The structure
+ of the repositories will cause pismere/athena to be created under <src>. -->
+ <src path ="C:\projects\Autobuild" />
+ <out path ="public" /> <!-- Relative to src. -->
+ <unixfind path ="c:\cygwin\bin" />
+ </Directories>
+ <Options>
+ <debug value="0" />
+ <logfile value="1" path="bkw.pl.log" />
+ <repository value="skip" />
+ <clean value="0" />
+ <nomake value="0" />
+ <nopackage value="0" />
+ <sign value="0" timestampserver="" />
+ <verbose value="0" />
+ <vverbose value="0" />
+ </Options>
+ </CommandLine>
+ <Stages>
+ <FetchSources>
+ <Config>
+ <CVSROOT name=":kserver:cvs.mit.edu:/cvs/pismere" />
+ <SVNURL name="svn.mit.edu" /> <!-- NB: No protocol or slashes!! -->
+ <USERNAME name="" /> <!-- Needed for svn/plink. Override from command line -->
+ </Config>
+ </FetchSources>
+ <Make>
+ <Prunes> <!-- Files to be removed from current build to match what is in the 3.1 distribution: -->
+ <Prune dummy="foo" /> <!-- Force XML::Simple behavior -->
+ <Prune name="afsauth" />
+ <Prune name="aklog" />
+ <Prune name="vs" />
+ </Prunes>
+ </Make>
+ <PrePackage>
+ <CopyList>
+ <Config>
+ <!-- Debug and Release build results go in different places.
+ The otherwise identical paths differ in one section. For example:
+ .../target/bin/i386/bin/rel/filename and .../target/bin/i386/dbg/filename.
+ Here we define the two differing sections: -->
+ <DebugArea value="dbg" />
+ <ReleaseArea value="rel" />
+ <!-- Paths in the file list that include <AlwaysTag> will always have the tag replaced
+ with <DebugArea> or <ReleaseArea>, depending on the type of build.
+ Paths that include <DebugTag> (or <ReleaseTag>) will only have the tag substituted
+ and be copied when doing a debug (or release) build. Examples:
+ Will always be copied, from a build-dependent directory:
+ <File name="kfwlogon.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ Will only be copied in debug build:
+ <File name="netidmgr.exe.static.manifest" from="..\target\bin\i386\%debug%\" to="\bin\i386" notrequired="true" />
+ Will always be copied, from a build-independent directory:
+ <File name="des.h" from="auth\krb4\include\" to="\inc\krb4" newname="foo.h"/>
+ -->
+ <AlwaysTag value="%bldtype%" /> <!-- Pick a string that won't appear in a path. -->
+ <DebugTag value="%debug%" /> <!-- Pick a string that won't appear in a path. -->
+ <ReleaseTag value="%release%" /> <!-- Pick a string that won't appear in a path. -->
+ </Config>
+ <Files>
+ <Include path="copyfiles.xml" />
+ </Files> <!-- Relative to location of bkw.pl. -->
+ </CopyList>
+ </PrePackage>
+ <Package>
+ <Config>
+ <Paths>
+ <Versions path="pismere/athena/include/kerberos.ver" /> <!-- Relative to <src>. -->
+ </Paths>
+ </Config>
+ <MSI></MSI>
+ <NSIS></NSIS> <!-- NB: Most config is done in site-local.nsi. -->
+ </Package>
+ <PostPackage>
+ <Config> <!-- This config info will be copied into each CopyList in PostPackage. -->
+ <FileStem name="kfw-%VERSION_MAJOR%-%VERSION_MINOR%-%VERSION_PATCH%" /> <!-- <FileStem> will be substituted for %filestem%. -->
+ <Signing>
+ <CommandTemplate value="signtool sign /a /d &quot;MIT Kerberos for Windows&quot; /du &quot;http://web.mit.edu/kerberos&quot; /t TIMESTAMPSERVERGOESHERE %filename%" />
+ <FilePatterns value="*.exe *.dll *.cpl *.msi" />
+ </Signing>
+ </Config>
+ <Zips>
+ <Zip dummy="foo" /> <!-- To force desired XML::Simple behavior -->
+ <!-- Files will be copied into directory <topdir>; <topdir> will appear in the paths of the files. -->
+ <!-- File from paths are relative to <src>/pismere. -->
+ <!-- File to paths are relative to <out>. -->
+ <Zip name="Core Binaries" filename="%filestem%.zip" topdir="%filestem%-final">
+ <CopyList>
+ <Config>
+ <DebugArea value="dbg" />
+ <ReleaseArea value="rel" />
+ <AlwaysTag value="%bldtype%" /> <!-- Pick a string that won't appear in a path. -->
+ <DebugTag value="%debug%" /> <!-- Pick a string that won't appear in a path. -->
+ <ReleaseTag value="%release%" /> <!-- Pick a string that won't appear in a path. -->
+ </Config>
+ <Files>
+ <Include path="corebinaryfiles.xml" /> <!-- Includeed file is relative to location of bkw.pl. -->
+ </Files>
+ </CopyList>
+ </Zip>
+ <Zip name="SDK" filename="%filestem%-sdk.zip" topdir="%filestem%-final">
+ <CopyList>
+ <Files>
+ <Include path="sdkfiles.xml" /> <!-- Included file is relative to location of bkw.pl. -->
+ </Files>
+ </CopyList>
+ <Prunes>
+ <Prune dummy="foo" />
+ <Prune name="MIT*.exe" /> <!-- MITKerberosForWindows.exe was copied to a new name in sdkfiles.xml. -->
+ </Prunes>
+ </Zip>
+ <Zip name="SRC" filename="%filestem%-src.zip" topdir="%filestem%-final">
+ <CopyList>
+ <Files>
+ <!-- File from paths are relative to <src>/pismere. -->
+ <!-- File to paths are relative to <out>. -->
+ <File dummy="foo" /> <!-- Forces XML::Simple behavior -->
+ <!-- Without this, XML::Simple does not make an anonymous array and I can't figure out how to iterate over it. -->
+ <File name="*.*" from="athena" to="src\athena" />
+ <File name="*.*" from="doc" to="src\doc" />
+ <File name="*.*" from="scripts" to="src\scripts" />
+ </Files>
+ </CopyList>
+ <Prunes> <!-- Files to be removed from current build to match what is in the 3.1 distribution: -->
+ <Prune dummy="foo" />
+ <Prune name="CVS" />
+ <Prune name=".cvsignore" flags="i" />
+ <Prune name="Changelog" flags="i" />
+ <Prune name="obj" />
+ <Prune name="site" />
+ </Prunes>
+ <Requires>
+ <Switch dummy="foo" />
+ <Switch name="REPOSITORY" value="CHECKOUT"/>
+ <ErrorMsg text="Can't build source zip unless /REPOSITORY CHECKOUT is specified." />
+ </Requires>
+ </Zip>
+ </Zips>
+ <CopyList> <!-- Copied at end of post-package step. -->
+ <Files>
+ <File dummy="foo" />
+ <!-- File from paths are relative to <src>/pismere. -->
+ <!-- File to paths are relative to <out>. -->
+ <File name="msi-deployment-guide.txt" from="staging\install\wix\" to="" />
+ <File name="netidmgr_userdoc.pdf" from="staging\doc" to="." />
+ <File name="kfw.msi" from="staging\install\wix\" to="" newname="%filestem%.msi" />
+ <File name="MITKerberosForWindows%-DEBUG%.exe" from="staging\install\nsis" to="" newname="%filestem%%-DEBUG%.exe" />
+ </Files>
+ </CopyList>
+ </PostPackage>
+ </Stages>
</BKW_Config> \ No newline at end of file
diff --git a/src/windows/build/bkw.pl b/src/windows/build/bkw.pl
index 69b523c5d8..ca8b3f8259 100644
--- a/src/windows/build/bkw.pl
+++ b/src/windows/build/bkw.pl
@@ -12,6 +12,8 @@ use Data::Dumper;
use Archive::Zip;
use Logger;
require "copyfiles.pl";
+require "signfiles.pl";
+require "makeZip.pl";
my $BAIL;
$0 = fileparse($0);
@@ -19,15 +21,14 @@ my $OPT = {foo => 'bar'};
my $MAKE = 'NMAKE';
our $config;
-sub get_info
- {
- my $cmd = shift || die;
- my $which = $^X.' which.pl';
- my $full = `$which $cmd`;
- return 0 if ($? / 256);
- chomp($full);
- $full = "\"".$full."\"";
- return { cmd => $cmd, full => $full};
+sub get_info {
+ my $cmd = shift || die;
+ my $which = $^X.' which.pl';
+ my $full = `$which $cmd`;
+ return 0 if ($? / 256);
+ chomp($full);
+ $full = "\"".$full."\"";
+ return { cmd => $cmd, full => $full};
}
sub usage {
@@ -37,32 +38,34 @@ Usage: $0 (-f --config) config-file [options] NMAKE-options
Options are case insensitive.
Options:
- /help /? usage information (what you now see).
+ /help /? usage information (what you now see).
/config /c path Path to config file.
/srcdir /r dir Source directory to use. Should contain
- pismere/athena. If cvstag or svntag is null,
- the directory should be prepopulated.
+ pismere/athena. If cvstag or svntag is null,
+ the directory should be prepopulated.
/outdir /o dir Directory to be created where build results will go
/repository checkout | co \\ What repository action to take.
- update | up ) Options are to checkout, update or
- skip / take no action [skip].
+ update | up ) Options are to checkout, update or
+ skip / take no action [skip].
/username /u name username used to access svn if checking out.
/cvstag /c tag \\ If non-empty, the tag is appended to cvs and svn
/svntag /s tag / commands to select the rev to fetch.
/debug /d Do debug make instead of release make.
- /nomake Skip make step.
- /clean Build clean target.
- /nopackage Skip packaging step.
+ /nomake Skip make step.
+ /clean Build clean target.
+ /nopackage Skip packaging step.
+ /sign Sign files
+ /nosign Don't sign files
/verbose /v Debug mode - verbose output.
/logfile /l path Where to write output. Default is bkw.pl.log
- /nolog Don't save output
+ /nolog Don't save output
Other:
- NMAKE-options any options you want to pass to NMAKE, which can be:
- (note: /nologo is always used)
+ NMAKE-options any options you want to pass to NMAKE, which can be:
+ (note: /nologo is always used)
USAGE
system("$MAKE /?");
- }
+ }
sub handler {
my $sig = shift;
@@ -78,70 +81,72 @@ EOH
sub main {
Getopt::Long::Configure('no_bundling', 'no_auto_abbrev',
- 'no_getopt_compat', 'require_order',
- 'ignore_case', 'pass_through',
- 'prefix_pattern=(--|-|\+|\/)',
- );
+ 'no_getopt_compat', 'require_order',
+ 'ignore_case', 'pass_through',
+ 'prefix_pattern=(--|-|\+|\/)',
+ );
GetOptions($OPT,
- 'help|h|?',
- 'cvstag|c:s',
- 'svntag|s:s',
- 'srcdir|r:s',
- 'outdir|o:s',
- 'debug|d',
- 'config|f:s',
- 'logfile|l:s',
- 'nolog',
- 'repository:s',
- 'username|u:s',
- 'verbose|v',
- 'vverbose|vv',
- 'nomake',
- 'clean',
- 'nopackage',
- );
+ 'help|h|?',
+ 'cvstag|c:s',
+ 'svntag|s:s',
+ 'srcdir|r:s',
+ 'outdir|o:s',
+ 'debug|d',
+ 'config|f:s',
+ 'logfile|l:s',
+ 'nolog',
+ 'repository:s',
+ 'username|u:s',
+ 'verbose|v',
+ 'vverbose|vv',
+ 'nomake',
+ 'clean',
+ 'nopackage',
+ 'sign',
+ 'nosign',
+ );
if ( $OPT->{help} ) {
- usage();
- exit(0);
- }
-
+ usage();
+ exit(0);
+ }
+
##++ Validate required conditions:
if ($OPT->{config}) {}
else {
- print "Fatal -- Configuration file must be specified.\n";
- usage();
- exit(0);
- }
+ print "Fatal -- Configuration file must be specified.\n";
+ usage();
+ exit(0);
+ }
# List of programs which must be in PATH:
my @required_list = ('sed', 'awk', 'which', 'cat', 'rm', 'cvs', 'svn', 'doxygen', 'hhc', 'candle', 'light', 'makensis', 'nmake', 'plink');
my $requirements_met = 1;
my $first_missing = 0;
my $error_list = "";
- foreach my $required (@required_list) {
+ foreach my $required (@required_list) {
if (!get_info($required)) {
- $requirements_met = 0;
- if (!$first_missing) {
- $first_missing = 1;
- $error_list = "Fatal -- Environment problem! The following program(s) are not in PATH:\n";
- }
- $error_list .= "$required\n";
- }
- }
- if (!$requirements_met) {
- print $error_list;
- print "Info -- Update PATH or install the programs and try again.\n";
- exit(0);
- }
+ $requirements_met = 0;
+ if (!$first_missing) {
+ $first_missing = 1;
+ $error_list = "Fatal -- Environment problem! The following program(s) are not in PATH:\n";
+ }
+ $error_list .= "$required\n";
+ }
+ }
+ if (!$requirements_met) {
+ print $error_list;
+ print "Info -- Update PATH or install the programs and try again.\n";
+ exit(0);
+ }
##-- Validate required conditions.
-
+
use Time::gmtime;
$ENV{DATE} = gmctime()." GMT";
- our $originalDir = `cd`;
- $originalDir =~ s/\n//g;
+ our $originalDir = `cd`;
+ $originalDir =~ s/\n//g;
##++ Assemble configuration from config file and command line:
@@ -151,498 +156,432 @@ sub main {
print "Info -- Reading configuration from $configfile.\n";
# Get configuration file:
- my $xml = new XML::Simple();
- $config = $xml->XMLin($configfile);
+ my $xml = new XML::Simple();
+ $config = $xml->XMLin($configfile);
- # Set up convenience variables:
- my (@switches, @paths, @tags, @fetch);
- @switches = $config->{CommandLine}->{Options};
- @paths = $config->{CommandLine}->{Directories};
- @tags = $config->{CommandLine}->{Tags};
- @fetch = $config->{Stages}->{FetchSources}->{Config};
+ # Set up convenience variables:
+ my (@switches, @paths, @tags, @fetch);
+ @switches = $config->{CommandLine}->{Options};
+ @paths = $config->{CommandLine}->{Directories};
+ @tags = $config->{CommandLine}->{Tags};
+ @fetch = $config->{Stages}->{FetchSources}->{Config};
# Update the configuration with overrides from the command line:
- $tags[0]->{cvs}->{value} = $OPT->{cvstag} if exists $OPT->{cvstag};
- $tags[0]->{svn}->{value} = $OPT->{svnurl} if exists $OPT->{svnurl};
- $paths[0]->{src}->{path} = $OPT->{srcdir} if exists $OPT->{srcdir};
- $paths[0]->{out}->{path} = $OPT->{outdir} if exists $OPT->{outdir};
- $switches[0]->{debug}->{value} = $OPT->{debug} if exists $OPT->{debug};
- $switches[0]->{clean}->{value} = 1 if exists $OPT->{clean};
- $switches[0]->{repository}->{value} = $OPT->{repository} if exists $OPT->{repository};
- $fetch[0]->{USERNAME}->{name} = $OPT->{username} if exists $OPT->{username};
- $switches[0]->{nomake}->{value} = 1 if exists $OPT->{nomake};
- $switches[0]->{nopackage}->{value} = 1 if exists $OPT->{nopackage};
- $switches[0]->{verbose}->{value} = $OPT->{verbose} if exists $OPT->{verbose};
- $switches[0]->{vverbose}->{value} = $OPT->{verbose} if exists $OPT->{vverbose};
- if (exists $OPT->{logfile}) {
- $switches[0]->{logfile}->{path} = $OPT->{logfile};
- $switches[0]->{logfile}->{value} = 1;
- }
- if (exists $OPT->{nolog}) {
- $switches[0]->{logfile}->{value} = 0;
- }
- our $verbose = $config->{CommandLine}->{Options}->{verbose}->{value};
- our $vverbose = $config->{CommandLine}->{Options}->{vverbose}->{value};
- our $clean = $switches[0]->{clean}->{value};
- my $src = $paths[0]->{src}->{path};
-
- if ($clean && !$switches[0]->{nopackage}->{value}) {
- print "Info -- /clean forces /nopackage.\n";
- $switches[0]->{nopackage}->{value} = 1;
- }
+ $tags[0]->{cvs}->{value} = $OPT->{cvstag} if exists $OPT->{cvstag};
+ $tags[0]->{svn}->{value} = $OPT->{svnurl} if exists $OPT->{svnurl};
+ $paths[0]->{src}->{path} = $OPT->{srcdir} if exists $OPT->{srcdir};
+ $paths[0]->{out}->{path} = $OPT->{outdir} if exists $OPT->{outdir};
+ $switches[0]->{debug}->{value} = $OPT->{debug} if exists $OPT->{debug};
+ $switches[0]->{clean}->{value} = 1 if exists $OPT->{clean};
+ $switches[0]->{repository}->{value} = $OPT->{repository} if exists $OPT->{repository};
+ $fetch[0]->{USERNAME}->{name} = $OPT->{username} if exists $OPT->{username};
+ $switches[0]->{nomake}->{value} = 1 if exists $OPT->{nomake};
+ $switches[0]->{nopackage}->{value} = 1 if exists $OPT->{nopackage};
+ $switches[0]->{verbose}->{value} = $OPT->{verbose} if exists $OPT->{verbose};
+ $switches[0]->{vverbose}->{value} = $OPT->{verbose} if exists $OPT->{vverbose};
+ if (exists $OPT->{logfile}) {
+ $switches[0]->{logfile}->{path} = $OPT->{logfile};
+ $switches[0]->{logfile}->{value} = 1;
+ }
+ if (exists $OPT->{nolog}) {
+ $switches[0]->{logfile}->{value} = 0;
+ }
+ if (exists $OPT->{sign}) {
+ $switches[0]->{sign}->{timestampserver} = $OPT->{sign};
+ $switches[0]->{sign}->{value} = 1;
+ }
+ if (exists $OPT->{nosign}) {
+ $switches[0]->{sign}->{value} = 0;
+ }
+ our $verbose = $config->{CommandLine}->{Options}->{verbose}->{value};
+ our $vverbose = $config->{CommandLine}->{Options}->{vverbose}->{value};
+ our $clean = $switches[0]->{clean}->{value};
+ local $src = $paths[0]->{src}->{path};
+ local $toPath = $paths[0]->{out}->{path};
+
+ if ($clean && !$switches[0]->{nopackage}->{value}) {
+ print "Info -- /clean forces /nopackage.\n";
+ $switches[0]->{nopackage}->{value} = 1;
+ }
if ($vverbose) {print "Debug -- Config: ".Dumper($config);}
- # Examples of use:
- #print "Logfile path: $switches[0]->{log}->{path}\n";
- #print "src path: $paths[0]->{src}->{path}\n";
- #print "cvs tag: $tags[0]->{cvs}->{value}\n";
- #print "CVSROOT: $fetch[0]->{CVSROOT}->{name}\n";
+ # Examples of use:
+ #print "Logfile path: $switches[0]->{log}->{path}\n";
+ #print "src path: $paths[0]->{src}->{path}\n";
+ #print "cvs tag: $tags[0]->{cvs}->{value}\n";
+ #print "CVSROOT: $fetch[0]->{CVSROOT}->{name}\n";
##-- Assemble configuration from config file and command line.
- my $sw = $switches[0]->{repository}->{value};
- my $rverb;
- if ($sw =~ /skip/i) {$rverb = "skip";}
- elsif ($sw =~ /update/i) {$rverb = "update";}
- elsif ($sw =~ /up/i) {$rverb = "update";}
- elsif ($sw =~ /checkout/i) {$rverb = "checkout";}
- elsif ($sw =~ /co/i) {$rverb = "checkout";}
- else {
- print "Fatal -- invalid /repository value.\n";
- usage();
- die;
- }
-
- my $wd = $src."\\pismere";
-
- if (! ($rverb =~ /skip/)) {
- local $len = 0;
- if (exists $fetch[0]->{USERNAME}->{name}) {
- $len = length $fetch[0]->{USERNAME}->{name};
- }
- if ($len < 1) {
- die "Fatal -- you won't get far accessing the repository without specifying a username.";
- }
- }
-
- if ( ($rverb =~ /checkout/) && (-d $wd) ){
- print "\n\nHEADS UP!!\n\n";
- print "/REPOSITORY CHECKOUT will cause everything under $wd to be deleted.\n";
- print "If this is not what you intended, here's your chance to bail out!\n\n\n";
- print "Are you sure you want to remove everything under $wd? ";
- my $char = getc;
- if (! ($char =~ /y/i)) {die "Info -- operation aborted by user."}
- !system("rm -rf $wd/*") or die "Fatal -- Couldn't clean $wd.";
- !system("rmdir $wd") or die "Fatal -- Couldn't remove $wd.";
-# !system("attrib -h -r $wd\\* /s /d") or die "Fatal -- Couldn't clear read-only attributes.";
-# !system("del /s /q $wd\\*.*") or die "Fatal -- Couldn't clean files from $wd.";
-# !system("rm -rf $wd\\*.*") or die "Fatal -- Couldn't clean directories from $wd.";
- }
+ my $sw = $switches[0]->{repository}->{value};
+ my $rverb;
+ if ($sw =~ /skip/i) {$rverb = "skip";}
+ elsif ($sw =~ /update/i) {$rverb = "update";}
+ elsif ($sw =~ /up/i) {$rverb = "update";}
+ elsif ($sw =~ /checkout/i) {$rverb = "checkout";}
+ elsif ($sw =~ /co/i) {$rverb = "checkout";}
+ else {
+ print "Fatal -- invalid /repository value.\n";
+ usage();
+ die;
+ }
+ $switches[0]->{repository}->{value} = $rverb; ## Save canonicalized repository verb.
+
+ my $wd = $src."\\pismere";
+
+ if (! ($rverb =~ /skip/)) {
+ local $len = 0;
+ if (exists $fetch[0]->{USERNAME}->{name}) {
+ $len = length $fetch[0]->{USERNAME}->{name};
+ }
+ if ($len < 1) {
+ die "Fatal -- you won't get far accessing the repository without specifying a username.";
+ }
+ }
+
+ if ( ($rverb =~ /checkout/) && (-d $wd) ){
+ print "\n\nHEADS UP!!\n\n";
+ print "/REPOSITORY CHECKOUT will cause everything under $wd to be deleted.\n";
+ print "If this is not what you intended, here's your chance to bail out!\n\n\n";
+ print "Are you sure you want to remove everything under $wd? ";
+ my $char = getc;
+ if (! ($char =~ /y/i)) {die "Info -- operation aborted by user."}
+ !system("rm -rf $wd/*") or die "Fatal -- Couldn't clean $wd.";
+ !system("rmdir $wd") or die "Fatal -- Couldn't remove $wd.";
+ }
# Begin logging:
my $l;
if ($switches[0]->{logfile}->{value}) {
- print "Info -- logging to $switches[0]->{logfile}->{path}.\n";
- $l = new Logger $switches[0]->{logfile}->{path};
- $l->start;
- $l->no_die_handler; ## Needed so XML::Simple won't throw exceptions.
- }
+ print "Info -- logging to $switches[0]->{logfile}->{path}.\n";
+ $l = new Logger $switches[0]->{logfile}->{path};
+ $l->start;
+ $l->no_die_handler; ## Needed so XML::Simple won't throw exceptions.
+ }
##++ Begin repository action:
- if ($rverb =~ /skip/) {print "Info -- *** Skipping repository access.\n" if ($verbose);}
- else {
- if ($verbose) {print "Info -- *** Begin fetching sources.\n";}
- if (! -d $wd) { ## xcopy will create the entire path for us.
- !system("echo foo > a.tmp") or die "Fatal -- Couldn't create temporary file in ".`cd`;
- !system("echo F | xcopy a.tmp $wd\\CVS\\a.tmp") or die "Fatal -- Couldn't xcopy to $wd.";
- !system("rm a.tmp") or die "Fatal -- Couldn't remove temporary file.";
- !system("rm $wd\\CVS\\a.tmp") or die "Fatal -- Couldn't remove temporary file.";
- }
-
- # Set up cvs environment variables:
- $ENV{CVSROOT} = $fetch[0]->{CVSROOT}->{name};
- chdir($src) or die "Fatal -- couldn't chdir to $src\n";
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
- my $krb5dir = $wd."\\athena\\auth\\krb5";
-
- my $cvscmdroot = "cvs $rverb";
- my $cvscmd = $cvscmdroot;
- if ($rverb =~ /checkout/) {
- my @cvsmodules = (
- 'krb',
- 'pismere/athena/util/lib/delaydlls',
- 'pismere/athena/util/lib/getopt',
- 'pismere/athena/util/guiwrap'
- );
-
- foreach my $module (@cvsmodules) {
- $cvscmd = $cvscmdroot." ".$module;
- $cvscmd .= " ".$tags[0]->{cvs}->{value} if ($tags[0]->{cvs}->{value});
- if ($verbose) {print "Info -- cvs command: $cvscmd\n";}
- !system($cvscmd) or die "Fatal -- command \"$cvscmd\" failed; return code $?\n";
- }
- }
- else { ## Update.
- $cvscmd = $cvscmdroot;
- $cvscmd .= " ".$tags[0]->{cvs}->{value} if ($tags[0]->{cvs}->{value});
- if ($verbose) {print "Info -- cvs command: $cvscmd\n";}
- !system($cvscmd) or die "Fatal -- command \"$cvscmd\" failed; return code $?\n";
- }
-
- # Set up svn environment variable:
- $ENV{SVN_SSH} = "plink.exe";
- # If the directory structure doesn't exist, many cd commands will fail.
- if (! -d $krb5dir) {mkdir($krb5dir) or die "Fatal -- Couldn't create $krb5dir";}
- chdir($krb5dir) or die "Fatal -- Couldn't chdir to $krb5dir";
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
- my $svncmd = "svn $rverb ";
- if ($rverb =~ /checkout/) { # Append the rest of the checkout command:
- chdir("..");
- $svncmd .= "svn+ssh://".$fetch[0]->{USERNAME}->{name}."@".$fetch[0]->{SVNURL}->{name}."/krb5/trunk krb5";
- }
- if ($tags[0]->{svn}->{value}) {$svncmd .= " ".$tags[0]->{svn}->{value};} # Add any specific tag
- if ($verbose) {print "Info -- svn command: $svncmd\n";}
- !system($svncmd) or die "Fatal -- command \"$svncmd\" failed; return code $?\n";
-
- if ($verbose) {print "Info -- *** End fetching sources.\n";}
- }
+ if ($rverb =~ /skip/) {print "Info -- *** Skipping repository access.\n" if ($verbose);}
+ else {
+ if ($verbose) {print "Info -- *** Begin fetching sources.\n";}
+ if (! -d $wd) { ## xcopy will create the entire path for us.
+ !system("echo foo > a.tmp") or die "Fatal -- Couldn't create temporary file in ".`cd`;
+ !system("echo F | xcopy a.tmp $wd\\CVS\\a.tmp") or die "Fatal -- Couldn't xcopy to $wd.";
+ !system("rm a.tmp") or die "Fatal -- Couldn't remove temporary file.";
+ !system("rm $wd\\CVS\\a.tmp") or die "Fatal -- Couldn't remove temporary file.";
+ }
+
+ # Set up cvs environment variables:
+ $ENV{CVSROOT} = $fetch[0]->{CVSROOT}->{name};
+ chdir($src) or die "Fatal -- couldn't chdir to $src\n";
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ my $krb5dir = "$wd\\athena\\auth\\krb5";
+
+ my $cvscmdroot = "cvs $rverb";
+ my $cvscmd = $cvscmdroot;
+ if ($rverb =~ /checkout/) {
+ my @cvsmodules = (
+ 'krb',
+ 'pismere/athena/util/lib/delaydlls',
+ 'pismere/athena/util/lib/getopt',
+ 'pismere/athena/util/guiwrap'
+ );
+
+ foreach my $module (@cvsmodules) {
+ $cvscmd = $cvscmdroot." ".$module;
+ $cvscmd .= " ".$tags[0]->{cvs}->{value} if ($tags[0]->{cvs}->{value});
+ if ($verbose) {print "Info -- cvs command: $cvscmd\n";}
+ !system($cvscmd) or die "Fatal -- command \"$cvscmd\" failed; return code $?\n";
+ }
+ }
+ else { ## Update.
+ $cvscmd = $cvscmdroot;
+ $cvscmd .= " ".$tags[0]->{cvs}->{value} if ($tags[0]->{cvs}->{value});
+ if ($verbose) {print "Info -- cvs command: $cvscmd\n";}
+ !system($cvscmd) or die "Fatal -- command \"$cvscmd\" failed; return code $?\n";
+ }
+
+ # Set up svn environment variable:
+ $ENV{SVN_SSH} = "plink.exe";
+ # If the directory structure doesn't exist, many cd commands will fail.
+ if (! -d $krb5dir) {mkdir($krb5dir) or die "Fatal -- Couldn't create $krb5dir";}
+ chdir($krb5dir) or die "Fatal -- Couldn't chdir to $krb5dir";
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ my $svncmd = "svn $rverb ";
+ if ($rverb =~ /checkout/) { # Append the rest of the checkout command:
+ chdir("..");
+ $svncmd .= "svn+ssh://".$fetch[0]->{USERNAME}->{name}."@".$fetch[0]->{SVNURL}->{name}."/krb5/trunk krb5";
+ }
+ if ($tags[0]->{svn}->{value}) {$svncmd .= " ".$tags[0]->{svn}->{value};} # Add any specific tag
+ if ($verbose) {print "Info -- svn command: $svncmd\n";}
+ !system($svncmd) or die "Fatal -- command \"$svncmd\" failed; return code $?\n";
+
+ if ($verbose) {print "Info -- *** End fetching sources.\n";}
+ }
##-- End repository action.
-
+
##++ Make action:
- if ( (!$switches[0]->{nomake}->{value}) ) {
- if ($verbose) {print "Info -- *** Begin preparing for build.\n";}
-
- $wd = $paths[0]->{src}->{path};
- chdir("$wd") or die "Fatal -- couldn't chdir to $wd\n";
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
-
- my ($path, $destpath);
-
- # Copy athena\scripts\site\graft\krb5\Makefile.src to athena\auth\krb5:
- $path = "pismere\\scripts\\site\\graft\\krb5\\Makefile.src";
- if (!-e $path) {die "Fatal -- Expected file $wd\\$path not found.";}
- $destpath = "pismere\\athena\\auth\\krb5\\Makefile.src";
- !system("echo F | xcopy /D $wd\\$path $wd\\$destpath /Y > NUL") or die "Fatal -- Copy of $wd\\$path to $wd\\$destpath failed.";
- print "Info -- copied $wd\\$path to $wd\\$destpath\n" if ($verbose);;
-
- # Add DEBUG_SYMBOL to .../wshelper/Makefile.src:
- $path = "pismere\\athena\\wshelper\\wshelper\\Makefile.src";
- if (!-e $path) {die "Fatal -- Expected file $wd\\$path not found.";}
- if (system("grep DEBUG_SYMBOL $path > NUL") != 0) {
- !system ("echo DEBUG_SYMBOL=1 >> $wd\\$path") or die "Fatal -- Append line to file failed.\n";
- print "Info -- Added DEBUG_SYMBOL to $wd\\$path\n" if ($verbose);
- }
-
- # Prune any unwanted directories before the build:
- if (exists $config->{Stages}->{Make}->{Prunes}) {
- # Use Unix find instead of Windows find. Save PATH so we can restore it when we're done:
- my $savedPATH = $ENV{PATH};
- $ENV{PATH} = $config->{CommandLine}->{Directories}->{unixfind}->{path}.";".$savedPATH;
- my $prunes = $config->{Stages}->{Make}->{Prunes};
- my $j=0;
- print "Info -- Processing prunes in ".`cd`."\n" if ($verbose);
- while ($prunes->{Prune}->[$j]) {
- if (exists $prunes->{Prune}->[$j]->{name}) { ## Don't process dummy entry!
- my $prune = $prunes->{Prune}->[$j]->{name};
- my $flags = $prunes->{Prune}->[$j]->{flags};
- $flags = "" if (!$flags);
- my $cmd = "find . -".$flags."name $prune";
- print "Info -- Looking for filenames containing $prune\n";
- my $list = `$cmd`;
- foreach $target (split("\n", $list)) {
- print "Info -- Pruning $target\n" if ($verbose);
- ! system("rm -rf $target") or die "Unable to prune $target";
- }
- }
- $j++;
- }
- $ENV{PATH} = $savedPATH;
- }
-
- if ($verbose) {print "Info -- *** End preparing for build.\n";}
-
- my ($buildtarget, $buildtext);
- if ($clean) {
- $buildtarget = "clean" ;
- $buildtext = " clean."
- }
- else {
- $buildtarget = "" ;
- $buildtext = "."
- }
-
- chdir("pismere/athena") or die "Fatal -- couldn't chdir to source directory $wd\\pismere\\athena\n";
- if ($verbose) {print "Info -- chdir to $wd\\pismere\\athena\n";}
- my $dbgswitch = ($switches[0]->{debug}->{value}) ? " " : "NODEBUG=1";
- !system("perl ../scripts/build.pl --softdirs --nolog $buildtarget $dbgswitch") or die "Fatal -- build $buildtarget failed.";
-
- chdir("$wd\\pismere") or die "Fatal -- couldn't chdir to $wd\\pismere.";
- if ($clean) {
- if (-d "staging") {
- !system("rm -rf staging") or die "Fatal -- Couldn't remove pismere/staging.";
- }
- }
-
- if ($verbose) {print "Info -- *** End build".$buildtext."\n";}
- } ## End make conditional.
- else {print "Info -- *** Skipping build.\n" if ($verbose);}
+ if ( (!$switches[0]->{nomake}->{value}) ) {
+ if ($verbose) {print "Info -- *** Begin preparing for build.\n";}
+
+ chdir("$wd") or die "Fatal -- couldn't chdir to $wd\n";
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+
+ my ($path, $destpath);
+
+ # Copy athena\scripts\site\graft\krb5\Makefile.src to athena\auth\krb5:
+ $path = "scripts\\site\\graft\\krb5\\Makefile.src";
+ if (!-e $path) {die "Fatal -- Expected file $wd\\$path not found.";}
+ $destpath = "athena\\auth\\krb5\\Makefile.src";
+ !system("echo F | xcopy /D $wd\\$path $wd\\$destpath /Y > NUL") or die "Fatal -- Copy of $wd\\$path to $wd\\$destpath failed.";
+ print "Info -- copied $wd\\$path to $wd\\$destpath\n" if ($verbose);;
+
+ # Add DEBUG_SYMBOL to .../wshelper/Makefile.src:
+ $path = "athena\\wshelper\\wshelper\\Makefile.src";
+ if (!-e $path) {die "Fatal -- Expected file $wd\\$path not found.";}
+ if (system("grep DEBUG_SYMBOL $path > NUL") != 0) {
+ !system ("echo DEBUG_SYMBOL=1 >> $wd\\$path") or die "Fatal -- Append line to file failed.\n";
+ print "Info -- Added DEBUG_SYMBOL to $wd\\$path\n" if ($verbose);
+ }
+
+ # Prune any unwanted directories before the build:
+ if (exists $config->{Stages}->{Make}->{Prunes}) {
+ # Use Unix find instead of Windows find. Save PATH so we can restore it when we're done:
+ my $savedPATH = $ENV{PATH};
+ $ENV{PATH} = $config->{CommandLine}->{Directories}->{unixfind}->{path}.";".$savedPATH;
+ my $prunes = $config->{Stages}->{Make}->{Prunes};
+ my $j=0;
+ print "Info -- Processing prunes in ".`cd`."\n" if ($verbose);
+ while ($prunes->{Prune}->[$j]) {
+ if (exists $prunes->{Prune}->[$j]->{name}) { ## Don't process dummy entry!
+ my $prune = $prunes->{Prune}->[$j]->{name};
+ my $flags = $prunes->{Prune}->[$j]->{flags};
+ $flags = "" if (!$flags);
+ my $cmd = "find . -".$flags."name $prune";
+ print "Info -- Looking for filenames containing $prune\n";
+ my $list = `$cmd`;
+ foreach $target (split("\n", $list)) {
+ print "Info -- Pruning $target\n" if ($verbose);
+ ! system("rm -rf $target") or die "Unable to prune $target";
+ }
+ }
+ $j++;
+ }
+ $ENV{PATH} = $savedPATH;
+ }
+
+ if ($verbose) {print "Info -- *** End preparing for build.\n";}
+
+ my ($buildtarget, $buildtext);
+ if ($clean) {
+ $buildtarget = "clean" ;
+ $buildtext = " clean."
+ }
+ else {
+ $buildtarget = "" ;
+ $buildtext = "."
+ }
+
+ chdir("$wd\\athena") or die "Fatal -- couldn't chdir to source directory $wd\\athena\n";
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ my $dbgswitch = ($switches[0]->{debug}->{value}) ? " " : "NODEBUG=1";
+ !system("perl ../scripts/build.pl --softdirs --nolog $buildtarget $dbgswitch") or die "Fatal -- build $buildtarget failed.";
+
+ chdir("$wd") or die "Fatal -- couldn't chdir to $wd.";
+ if ($clean) {
+ if (-d "staging") {
+ !system("rm -rf staging") or die "Fatal -- Couldn't remove $wd\\staging.";
+ }
+ }
+
+ if ($verbose) {print "Info -- *** End build".$buildtext."\n";}
+ } ## End make conditional.
+ else {print "Info -- *** Skipping build.\n" if ($verbose);}
##-- Make action.
-
- if (!$switches[0]->{nopackage}->{value}) { ## If /clean, this switch will have been cleared.
- if ($verbose) {print "Info -- *** Begin prepackage.\n";}
-
- # We read in the version information to be able to update the site-local files in the install build areas:
- local $version_path = $config->{Stages}->{Package}->{Config}->{Paths}->{Versions}->{path};
- open(DAT, "$src/$version_path") or die "Could not open $version_path.";
- @raw = <DAT>;
- close DAT;
- foreach $line (@raw) {
- chomp $line;
- if ($line =~ /#define/) { # Process #define lines:
- $line =~ s/#define//; # Remove #define token
- $line =~ s/^\s+//; # and leading & trailing whitespace
- $line =~ s/\s+$//;
- local @qr = split("\"", $line); # Try splitting with quotes
- if (exists $qr[1]) {
- $qr[0] =~ s/^\s+//; # Clean up whitespace
- $qr[0] =~ s/\s+$//;
- $config->{Versions}->{$qr[0]} = $qr[1]; # Save string
- }
- else { # No quotes, so
- local @ar = split(" ", $line); # split with space
- $ar[0] =~ s/^\s+//; # Clean up whitespace
- $ar[0] =~ s/\s+$//;
- $config->{Versions}->{$ar[0]} = $ar[1]; # and save numeric value
- }
- }
- }
-
- # Check that the versions we will need for site-local have been defined:
- my @required_versions = ('VER_PROD_MAJOR', 'VER_PROD_MINOR', 'VER_PROD_REV',
- 'VER_PROD_MAJOR_STR', 'VER_PROD_MINOR_STR', 'VER_PROD_REV_STR',
- 'VER_PRODUCTNAME_STR');
- my $requirements_met = 1;
- my $first_missing = 0;
- my $error_list = "";
- foreach my $required (@required_versions) {
- if (! exists $config->{Versions}->{$required}) {
- $requirements_met = 0;
- if (!$first_missing) {
- $first_missing = 1;
- $error_list = "Fatal -- The following version(s) are not defined in $src/$version_path.\n";
- }
- $error_list .= "$required\n";
- }
- }
- if (!$requirements_met) {
- print $error_list;
- exit(0);
- }
- # Apply any of these tags to filestem:
- my $filestem = $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name};
- $filestem =~ s/%VERSION_MAJOR%/$config->{Versions}->{'VER_PROD_MAJOR_STR'}/;
- $filestem =~ s/%VERSION_MINOR%/$config->{Versions}->{'VER_PROD_MINOR_STR'}/;
- $filestem =~ s/%VERSION_PATCH%/$config->{Versions}->{'VER_PROD_REV_STR'}/;
- $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name} = $filestem;
-
- # The build results are copied to a staging area, where the packager expects to find them.
- # We put the staging area in the fixed area .../pismere/staging.
- my $prepackage = $config->{Stages}->{PrePackage};
- $wd = $paths[0]->{src}->{path}."\\pismere";
- my $staging_area = "$wd\\staging";
- chdir($wd) or die "Fatal -- couldn't chdir to $wd\n";
- if ($verbose) {print "Info -- chdir to $wd\n";}
- (-e $staging_area) or mkdir($staging_area);
-
- # Force Where From and To are relative to:
- $prepackage->{CopyList}->{Config}->{From}->{root} = "$src\\pismere\\athena";
- $prepackage->{CopyList}->{Config}->{To}->{root} = "$src\\pismere\\staging";
- copyFiles($prepackage->{CopyList}, $config); ## Copy any files [this step takes a while]
-
- chdir("staging\\install\\wix") or die "Fatal -- Couldn't cd to $wd\\staging\\install\\wix";
- # Correct errors in files.wxi:
- !system("sed 's/WorkingDirectory=\"\\[dirbin\\]\"/WorkingDirectory=\"dirbin\"/g' files.wxi > a.tmp") or die "Fatal -- Couldn't modify files.wxi.";
- !system("mv a.tmp files.wxi") or die "Fatal -- Couldn't update files.wxi.";
-
- # Make sed script to run on the site-local configuration files:
- local $tmpfile = "site-local.sed" ;
- system("del $tmpfile");
- # Basic substitutions:
- local $dblback_wd = $wd;
- $dblback_wd =~ s/\\/\\\\/g;
- !system("echo s/%BUILDDIR%/$dblback_wd/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- local $dblback_staging = "$wd\\staging";
- $dblback_staging =~ s/\\/\\\\/g;
- !system("echo s/%TARGETDIR%/$dblback_staging/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- local $dblback_sample = "$wd\\staging\\sample";
- $dblback_sample =~ s/\\/\\\\/g;
- !system("echo s/%CONFIGDIR-WIX%/$dblback_sample/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- !system("echo s/%CONFIGDIR-NSI%/$dblback_staging/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- !system("echo s/%VERSION_MAJOR%/$config->{Versions}->{'VER_PROD_MAJOR_STR'}/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- !system("echo s/%VERSION_MINOR%/$config->{Versions}->{'VER_PROD_MINOR_STR'}/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- !system("echo s/%VERSION_PATCH%/$config->{Versions}->{'VER_PROD_REV_STR'}/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- # Strip out some defines so they can be replaced: [used for site-local.nsi]
- !system("echo /\^!define\.\*RELEASE\.\*\$/d >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- !system("echo /\^!define\.\*DEBUG\.\*\$/d >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
- !system("echo /\^!define\.\*BETA\.\*\$/d >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
-
- # Run the script on site-local.wxi:
- !system("sed -f $tmpfile site-local-tagged.wxi > site-local.wxi") or die "Fatal -- Couldn't modify site-local.wxi.";
-
- # Now update site-local.nsi:
- chdir "..\\nsis";
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
- local $tmpfile = "site-local.sed" ;
- !system("sed -f ..\\wix\\$tmpfile site-local-tagged.nsi > b.tmp") or die "Fatal -- Couldn't modify site-local.wxi.";
- # Add DEBUG or RELEASE:
- if ($switches[0]->{debug}->{value}) { ## debug build
- !system("echo !define DEBUG >> b.tmp") or die "Fatal -- Couldn't modify b.tmp.";
- }
- else { ## release build
- !system("echo !define RELEASE >> b.tmp") or die "Fatal -- Couldn't modify b.tmp.";
- !system("echo !define NO_DEBUG >> b.tmp") or die "Fatal -- Couldn't modify b.tmp.";
- }
- # Add BETA if present:
- if ( exists $config->{Versions}->{'BETA_STR'}) {
- !system("echo !define BETA $config->{Versions}->{'BETA_STR'} >> b.tmp") or die "Fatal -- Couldn't modify b.tmp.";
- }
- !system("mv -f b.tmp site-local.nsi") or die "Fatal -- Couldn't replace site-local.nsi.";
-
- # Run the script on nsi-includes-tagged.nsi:
- !system("sed -f ..\\wix\\$tmpfile nsi-includes-tagged.nsi > nsi-includes.nsi") or die "Fatal -- Couldn't modify nsi-includes.nsi.";
-
- if ($verbose) {print "Info -- *** End prepackage.\n";}
-
- if ($verbose) {print "Info -- *** Begin package.\n";}
- # Make the msi:
- chdir("$wd\\staging\\install\\wix") or die "Fatal -- Couldn't cd to $wd\\staging\\install\\wix";
- print "Info -- *** Make .msi:\n" if ($verbose);
- !system("$MAKE") or die "Error -- msi installer build failed.";
-
- chdir("$wd\\staging\\install\\nsis") or die "Fatal -- Couldn't cd to $wd\\staging\\install\\nsis";
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
- print "Info -- *** Make NSIS:\n" if ($verbose);
- !system("cl.exe killer.cpp advapi32.lib") or die "Error -- nsis killer.exe not built.";
- !system("rename killer.exe Killer.exe") or die "Error -- Couldn't rename killer.exe";
- !system("makensis kfw.nsi") or die "Error -- executable installer build failed.";
+
+##++ Package action:
+ if ($switches[0]->{nopackage}->{value}) { ## If /clean, this switch will have been cleared.
+ print "Info -- *** Skipping packaging.";
+ }
+ else {
+ if ($verbose) {print "Info -- *** Begin prepackage.\n";}
+
+ # We read in the version information to be able to update the site-local files in the install build areas:
+ local $version_path = $config->{Stages}->{Package}->{Config}->{Paths}->{Versions}->{path};
+ open(DAT, "$src/$version_path") or die "Could not open $version_path.";
+ @raw = <DAT>;
+ close DAT;
+ foreach $line (@raw) {
+ chomp $line;
+ if ($line =~ /#define/) { # Process #define lines:
+ $line =~ s/#define//; # Remove #define token
+ $line =~ s/^\s+//; # and leading & trailing whitespace
+ $line =~ s/\s+$//;
+ local @qr = split("\"", $line); # Try splitting with quotes
+ if (exists $qr[1]) {
+ $qr[0] =~ s/^\s+//; # Clean up whitespace
+ $qr[0] =~ s/\s+$//;
+ $config->{Versions}->{$qr[0]} = $qr[1]; # Save string
+ }
+ else { # No quotes, so
+ local @ar = split(" ", $line); # split with space
+ $ar[0] =~ s/^\s+//; # Clean up whitespace
+ $ar[0] =~ s/\s+$//;
+ $config->{Versions}->{$ar[0]} = $ar[1]; # and save numeric value
+ }
+ }
+ }
+
+ # Check that the versions we will need for site-local have been defined:
+ my @required_versions = ('VER_PROD_MAJOR', 'VER_PROD_MINOR', 'VER_PROD_REV',
+ 'VER_PROD_MAJOR_STR', 'VER_PROD_MINOR_STR', 'VER_PROD_REV_STR',
+ 'VER_PRODUCTNAME_STR');
+ my $requirements_met = 1;
+ my $first_missing = 0;
+ my $error_list = "";
+ foreach my $required (@required_versions) {
+ if (! exists $config->{Versions}->{$required}) {
+ $requirements_met = 0;
+ if (!$first_missing) {
+ $first_missing = 1;
+ $error_list = "Fatal -- The following version(s) are not defined in $src/$version_path.\n";
+ }
+ $error_list .= "$required\n";
+ }
+ }
+ if (!$requirements_met) {
+ print $error_list;
+ exit(0);
+ }
+ # Apply any of these tags to filestem:
+ my $filestem = $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name};
+ $filestem =~ s/%VERSION_MAJOR%/$config->{Versions}->{'VER_PROD_MAJOR_STR'}/;
+ $filestem =~ s/%VERSION_MINOR%/$config->{Versions}->{'VER_PROD_MINOR_STR'}/;
+ $filestem =~ s/%VERSION_PATCH%/$config->{Versions}->{'VER_PROD_REV_STR'}/;
+ $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name} = $filestem;
+
+ # The build results are copied to a staging area, where the packager expects to find them.
+ # We put the staging area in the fixed area .../pismere/staging.
+ my $prepackage = $config->{Stages}->{PrePackage};
+ my $staging_area = "$wd\\staging";
+ chdir($wd) or die "Fatal -- couldn't chdir to $wd\n";
+ if ($verbose) {print "Info -- chdir to $wd\n";}
+ (-e $staging_area) or mkdir($staging_area);
+
+ # Force Where From and To are relative to:
+ $prepackage->{CopyList}->{Config}->{From}->{root} = "$wd\\athena";
+ $prepackage->{CopyList}->{Config}->{To}->{root} = "$wd\\staging";
+ copyFiles($prepackage->{CopyList}, $config); ## Copy any files [this step takes a while]
+
+ chdir("staging\\install\\wix") or die "Fatal -- Couldn't cd to $wd\\staging\\install\\wix";
+ # Correct errors in files.wxi:
+ !system("sed 's/WorkingDirectory=\"\\[dirbin\\]\"/WorkingDirectory=\"dirbin\"/g' files.wxi > a.tmp") or die "Fatal -- Couldn't modify files.wxi.";
+ !system("mv a.tmp files.wxi") or die "Fatal -- Couldn't update files.wxi.";
+
+ # Make sed script to run on the site-local configuration files:
+ local $tmpfile = "site-local.sed" ;
+ system("del $tmpfile");
+ # Basic substitutions:
+ local $dblback_wd = $wd;
+ $dblback_wd =~ s/\\/\\\\/g;
+ !system("echo s/%BUILDDIR%/$dblback_wd/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ local $dblback_staging = "$wd\\staging";
+ $dblback_staging =~ s/\\/\\\\/g;
+ !system("echo s/%TARGETDIR%/$dblback_staging/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ local $dblback_sample = "$wd\\staging\\sample";
+ $dblback_sample =~ s/\\/\\\\/g;
+ !system("echo s/%CONFIGDIR-WIX%/$dblback_sample/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ !system("echo s/%CONFIGDIR-NSI%/$dblback_staging/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ !system("echo s/%VERSION_MAJOR%/$config->{Versions}->{'VER_PROD_MAJOR_STR'}/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ !system("echo s/%VERSION_MINOR%/$config->{Versions}->{'VER_PROD_MINOR_STR'}/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ !system("echo s/%VERSION_PATCH%/$config->{Versions}->{'VER_PROD_REV_STR'}/ >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ # Strip out some defines so they can be replaced: [used for site-local.nsi]
+ !system("echo /\^!define\.\*RELEASE\.\*\$/d >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ !system("echo /\^!define\.\*DEBUG\.\*\$/d >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+ !system("echo /\^!define\.\*BETA\.\*\$/d >> $tmpfile") or die "Fatal -- Couldn't modify $tmpfile.";
+
+ # Run the script on site-local.wxi:
+ !system("sed -f $tmpfile site-local-tagged.wxi > site-local.wxi") or die "Fatal -- Couldn't modify site-local.wxi.";
+
+ # Now update site-local.nsi:
+ chdir "..\\nsis";
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ local $tmpfile = "site-local.sed" ;
+ !system("sed -f ..\\wix\\$tmpfile site-local-tagged.nsi > b.tmp") or die "Fatal -- Couldn't modify site-local.wxi.";
+ # Add DEBUG or RELEASE:
+ if ($switches[0]->{debug}->{value}) { ## debug build
+ !system("echo !define DEBUG >> b.tmp") or die "Fatal -- Couldn't modify b.tmp.";
+ }
+ else { ## release build
+ !system("echo !define RELEASE >> b.tmp") or die "Fatal -- Couldn't modify b.tmp.";
+ !system("echo !define NO_DEBUG >> b.tmp") or die "Fatal -- Couldn't modify b.tmp.";
+ }
+ # Add BETA if present:
+ if ( exists $config->{Versions}->{'BETA_STR'}) {
+ !system("echo !define BETA $config->{Versions}->{'BETA_STR'} >> b.tmp") or die "Fatal -- Couldn't modify b.tmp.";
+ }
+ !system("mv -f b.tmp site-local.nsi") or die "Fatal -- Couldn't replace site-local.nsi.";
+
+ # Run the script on nsi-includes-tagged.nsi:
+ !system("sed -f ..\\wix\\$tmpfile nsi-includes-tagged.nsi > nsi-includes.nsi") or die "Fatal -- Couldn't modify nsi-includes.nsi.";
+
+ if ($verbose) {print "Info -- *** End prepackage.\n";}
+
+ if ($verbose) {print "Info -- *** Begin package.\n";}
+ # Make the msi:
+ chdir("$wd\\staging\\install\\wix") or die "Fatal -- Couldn't cd to $wd\\staging\\install\\wix";
+ print "Info -- *** Make .msi:\n" if ($verbose);
+ !system("$MAKE") or die "Error -- msi installer build failed.";
+
+ chdir("$wd\\staging\\install\\nsis") or die "Fatal -- Couldn't cd to $wd\\staging\\install\\nsis";
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ print "Info -- *** Make NSIS:\n" if ($verbose);
+ !system("cl.exe killer.cpp advapi32.lib") or die "Error -- nsis killer.exe not built.";
+ !system("rename killer.exe Killer.exe") or die "Error -- Couldn't rename killer.exe";
+ !system("makensis kfw.nsi") or die "Error -- executable installer build failed.";
# Begin packaging extra items:
- my $fromRoot = $paths[0]->{src}->{path};
- my $toRoot = $paths[0]->{out}->{path};
- chdir($fromRoot); # Now in <src>.
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
- system("rm -rf $toRoot") if (-d $toRoot);
- die "Fatal -- Couldn't remove $fromRoot\\$toRoot." if (-d $toRoot);
- mkdir($toRoot);
- my $zipsXML = $config->{Stages}->{PostPackage}->{Zips};
-
- $config->{Stages}->{PostPackage}->{CopyList}->{Config}->{From}->{root} = "$src\\pismere"; ## Used after zips are made.
- $config->{Stages}->{PostPackage}->{CopyList}->{Config}->{To}->{root} = "$src\\$toRoot\\ziptemp";
-
- local $i = 0;
- while ($zipsXML->{Zip}[$i]) {
- my $zip = $zipsXML->{Zip}[$i];
- if (exists $zip->{name}) { ## Ignore dummy entry.
- my $zipname = $zip->{filename};
- $zipname =~ s/%filestem%/$filestem/g;
- my $bMakeIt = 1;
- if (exists $zip->{Requires}) {
- local $j = 0;
- while ($zip->{Requires}->{Switch}[$j]) { ## Check Require switches
- local $switch = $zip->{Requires}->{Switch}[$j];
- if (exists $switch->{name}) { ## Ignore dummy entry
- # We handle REPOSITORY and CLEAN switches:
- if ($switch->{name} =~ /REPOSITORY/i) {
- $bMakeIt &&= ($switch->{value} =~ /$rverb/i); ## Repository verb must match requirement
- }
- elsif ($switch->{name} =~ /CLEAN/i) { ## Clean must be specified
- $bMakeIt &&= $clean;
- }
- else {print "Error -- Unsupported switch $switch->{name} in Requires in ".Dumper($zip);}
- }
- $j++;
- }
- if ( !$bMakeIt && (exists $zip->{Requires}->{ErrorMsg}) ) {
- print "Error -- $zip->{Requires}->{ErrorMsg}->{text}\n";
- }
- }
- if ($bMakeIt) {
- my $todir = "$src\\$toRoot\\ziptemp";
- system("rm -rf $todir") if (-d $todir);
- die "Fatal -- Couldn't remove $todir" if (-d $todir);
- mkdir($todir);
-# Add to the zip's config section. Don't copy Postpackage->Config, because the Zip's Config might contain substitution tags.
- $zip->{CopyList}->{Config}->{FileStem} = $config->{Stages}->{PostPackage}->{Config}->{FileStem}; ## Each zip uses the post package config.
- $zip->{CopyList}->{Config}->{From}->{root} = "$src\\pismere"; ## Used by zips
- $zip->{CopyList}->{Config}->{To}->{root} = "$src\\$toRoot\\ziptemp\\$zip->{topdir}";
- copyFiles($zip->{CopyList}, $config);
- # Drop down into <out>/ziptemp so the path to the added file won't include <out>:
- chdir $todir;
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
-
- # Prune any unwanted files or directories from the directory we're about to zip:
- if (exists $zip->{Prunes}) {
- # Use Unix find instead of Windows find. Save PATH so we can restore it when we're done:
- my $savedPATH = $ENV{PATH};
- $ENV{PATH} = $config->{CommandLine}->{Directories}->{unixfind}->{path}.";".$savedPATH;
- my $prunes = $zip->{Prunes};
- my $j=0;
- print "Info -- Processing prunes in ".`cd`."\n" if ($verbose);
- while ($prunes->{Prune}->[$j]) {
- if (exists $prunes->{Prune}->[$j]->{name}) { ## Don't process dummy entry!
- my $prune = $prunes->{Prune}->[$j]->{name};
- my $flags = $prunes->{Prune}->[$j]->{flags};
- $flags = "" if (!$flags);
- my $cmd = "find . -".$flags."name $prune";
- print "Info -- Looking for filenames containing $prune\n";
- my $list = `$cmd`;
- foreach $target (split("\n", $list)) {
- print "Info -- Pruning $target\n" if ($verbose);
- !system("rm -rf $target") or die "Error -- Couldn't remove $target.";;
- }
- }
- $j++;
- }
- $ENV{PATH} = $savedPATH;
- }
-
- my $zipfile = Archive::Zip->new();
- my $topdir = $zip->{topdir};
- $topdir =~ s/%filestem%/$filestem/g;
- $zipfile->addTree('.', $topdir);
- if (-e $zipname) {!system("rm -f $zipname") or die "Error -- Couldn't remove $zipname.";}
- $zipfile->writeToFileNamed($zipname);
- print "Info -- created $src\\$toRoot\\$zipname.\n" if ($verbose);
- !system("mv -f $zipname ..") or die "Error -- Couldn't move $zipname to ..";
- chdir ".."; ## Back to <out>
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
- } ## End else OK to process zip
- } ## End not the dummy entry
- $i++;
- } ## End zip in xml.
-
- $todir = "$src\\$toRoot\\ziptemp"; ## Clean up any temp directory.
- system("rm -rf $todir") if (-d $todir);
-
- my $out = $config->{CommandLine}->{Directories}->{out}->{path};
- $config->{Stages}->{PostPackage}->{CopyList}->{Config} = $config->{Stages}->{PostPackage}->{Config}; ## Use the post package config.
- $config->{Stages}->{PostPackage}->{CopyList}->{Config}->{From}->{root} = "$src\\pismere";
- $config->{Stages}->{PostPackage}->{CopyList}->{Config}->{To}->{root} = "$src\\$out";
- copyFiles($config->{Stages}->{PostPackage}->{CopyList}, $config); ## Copy any files
- if ($verbose) {print "Info -- *** End package.\n";}
- }
- else {
- print "Info -- Package step skipped.";
- }
-
- system("rm -rf $src/a.tmp"); ## Clean up junk.
-
+ chdir($src); # Now in <src>.
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ system("rm -rf $toPath") if (-d $toPath);
+ die "Fatal -- Couldn't remove $src\\$toPath." if (-d $toPath);
+ mkdir($toPath);
+ my $zipsXML = $config->{Stages}->{PostPackage}->{Zips};
+
+ local $i = 0;
+ while ($zipsXML->{Zip}[$i]) {
+ local $zip = $zipsXML->{Zip}[$i];
+ makeZip($zip, $config) if (exists $zip->{name}); ## Ignore dummy entry.
+ $i++;
+ } ## End zip in xml.
+
+ $ziptemp = "$src\\$toPath\\ziptemp"; ## Clean up any temp directory.
+ chdir("$src\\$toPath");
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ system("rm -rf $ziptemp") if (-d $ziptemp);
+
+ my $out = $config->{CommandLine}->{Directories}->{out}->{path};
+ $config->{Stages}->{PostPackage}->{CopyList}->{Config} = $config->{Stages}->{PostPackage}->{Config}; ## Use the post package config.
+ $config->{Stages}->{PostPackage}->{CopyList}->{Config}->{From}->{root} = "$src\\pismere";
+ $config->{Stages}->{PostPackage}->{CopyList}->{Config}->{To}->{root} = "$src\\$out";
+ copyFiles($config->{Stages}->{PostPackage}->{CopyList}, $config); ## Copy any files
+
+ if ($switches[0]->{sign}->{value}) {
+ signFiles($config->{Stages}->{PostPackage}->{Config}->{Signing}, $config);
+ }
+
+ if ($verbose) {print "Info -- *** End package.\n";}
+ }
+##-- Package action.
+
+ system("rm -rf $src/a.tmp"); ## Clean up junk.
+ system("rm -rf $src/$toPath/ziptemp"); ## Clean up junk.
+
# End logging:
- if ($switches[0]->{logfile}->{value}) {$l->stop;}
+ if ($switches[0]->{logfile}->{value}) {$l->stop;}
return 0;
- } ## End subroutine main.
+ } ## End subroutine main.
$SIG{'INT'} = \&handler;
$SIG{'QUIT'} = \&handler;
diff --git a/src/windows/build/copyfiles.pl b/src/windows/build/copyfiles.pl
index 5e4200bb18..9160db07bc 100644
--- a/src/windows/build/copyfiles.pl
+++ b/src/windows/build/copyfiles.pl
@@ -5,134 +5,133 @@ use XML::Simple;
use Data::Dumper;
sub copyFiles {
- local ($xml, $config) = @_;
- local @switches = $config->{CommandLine}->{Options};
- local @files = $xml->{Files};
- # Check for includes:
- if (exists $xml->{Files}->{Include}->{path}) {
- my $includepath = $xml->{Files}->{Include}->{path};
- print "Info -- Including files from $includepath\n";
- my $savedDir = `cd`;
- $savedDir =~ s/\n//g;
- chdir $originalDir; ## Includes are relative to where we were invoked.
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
- my $tmp = new XML::Simple;
- my $includeXML = $tmp->XMLin($includepath);
- chdir $savedDir;
- print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ local ($xml, $config) = @_;
+ local @switches = $config->{CommandLine}->{Options};
+ local @files = $xml->{Files};
+ # Check for includes:
+ if (exists $xml->{Files}->{Include}->{path}) {
+ my $includepath = $xml->{Files}->{Include}->{path};
+ print "Info -- Including files from $includepath\n";
+ my $savedDir = `cd`;
+ $savedDir =~ s/\n//g;
+ chdir $originalDir; ## Includes are relative to where we were invoked.
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ my $tmp = new XML::Simple;
+ my $includeXML = $tmp->XMLin($includepath);
+ chdir $savedDir;
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
- local $i = 0;
- while ($includeXML->{File}[$i]) { ## Copy File entries from includeXML.
- $files[0]->{File}[++$#{$files[0]->{File}}] = $includeXML->{File}[$i];
- $i++;
- }
- delete $files->{Include};
- }
- ##++ Set up path substitution variables for use inside the copy loop:
- # A path can contain a variable part, which will be handled here. If the variable part is
- # the Always or BuildDependent tag, then the variable will be changed to the
- # build-type-dependent PathFragment.
- # If the variable part is the IgnoreTag, then the file will not be copied.
- # If the variable part is %filestem%, it will be replaced with Config->FileStem->name.
- my ($PathFragment, $BuildDependentTag, $IgnoreTag, $FileStemFragment, $fromRoot, $toRoot);
- my $bPathTags = (exists $xml->{Config}->{DebugArea}) && (exists $xml->{Config}->{ReleaseArea});
- my $bFileStem = (exists $xml->{Config}->{FileStem});
-
- if ($switches[0]->{debug}->{value}) { ## Debug build tags:
- $PathFragment = $xml->{Config}->{DebugArea}->{value};
- $BuildDependentTag = $xml->{Config}->{DebugTag}->{value};
- $IgnoreTag = $xml->{Config}->{ReleaseTag}->{value};
- }
- else { ## Release build tags:
- $PathFragment = $xml->{Config}->{ReleaseArea}->{value};
- $BuildDependentTag = $xml->{Config}->{ReleaseTag}->{value};
- $IgnoreTag = $xml->{Config}->{DebugTag}->{value};
- }
- my $AlwaysTag = $xml->{Config}->{AlwaysTag}->{value};
- $FileStemFragment = $xml->{Config}->{FileStem}->{name};
- $fromRoot = $xml->{Config}->{From}->{root};
- $toRoot = $xml->{Config}->{To}->{root};
- ##-- Set up path substitution variables for use inside the copy loop.
- # For each file in the file list:
- # Substitute any variable parts of the path name.
- # Handle wildcards
- # Copy
+ local $i = 0;
+ while ($includeXML->{File}[$i]) { ## Copy File entries from includeXML.
+ $files[0]->{File}[++$#{$files[0]->{File}}] = $includeXML->{File}[$i];
+ $i++;
+ }
+ delete $files->{Include};
+ }
+ ##++ Set up path substitution variables for use inside the copy loop:
+ # A path can contain a variable part, which will be handled here. If the variable part is
+ # the Always or BuildDependent tag, then the variable will be changed to the
+ # build-type-dependent PathFragment.
+ # If the variable part is the IgnoreTag, then the file will not be copied.
+ # If the variable part is %filestem%, it will be replaced with Config->FileStem->name.
+ my ($PathFragment, $BuildDependentTag, $IgnoreTag, $FileStemFragment, $fromRoot, $toRoot);
+ my $bPathTags = (exists $xml->{Config}->{DebugArea}) && (exists $xml->{Config}->{ReleaseArea});
+ my $bFileStem = (exists $xml->{Config}->{FileStem});
+
+ if ($switches[0]->{debug}->{value}) { ## Debug build tags:
+ $PathFragment = $xml->{Config}->{DebugArea}->{value};
+ $BuildDependentTag = $xml->{Config}->{DebugTag}->{value};
+ $IgnoreTag = $xml->{Config}->{ReleaseTag}->{value};
+ }
+ else { ## Release build tags:
+ $PathFragment = $xml->{Config}->{ReleaseArea}->{value};
+ $BuildDependentTag = $xml->{Config}->{ReleaseTag}->{value};
+ $IgnoreTag = $xml->{Config}->{DebugTag}->{value};
+ }
+ my $AlwaysTag = $xml->{Config}->{AlwaysTag}->{value};
+ $FileStemFragment = $xml->{Config}->{FileStem}->{name};
+ $fromRoot = $xml->{Config}->{From}->{root};
+ $toRoot = $xml->{Config}->{To}->{root};
+ ##-- Set up path substitution variables for use inside the copy loop.
+ # For each file in the file list:
+ # Substitute any variable parts of the path name.
+ # Handle wildcards
+ # Copy
- local $i = 0;
- my $bOldDot = 1;
- my $bDot = 0;
- while ($files[0]->{File}[$i]) {
+ local $i = 0;
+ my $bOldDot = 1;
+ my $bDot = 0;
+ while ($files[0]->{File}[$i]) {
- my ($name, $newname, $from, $to, $file);
- $file = $files[0]->{File}->[$i];
- $name = $file->{name};
- if (exists $file->{newname}) {$newname = $file->{newname};}
- else {$newname = $name;}
- if ($name && (! exists $file->{ignore})) { ## Ignore or process this entry?
- $from = "$fromRoot\\$file->{from}\\$name";
- $to = "$toRoot\\$file->{to}\\$newname";
- if ( $bPathTags || $bFileStem || (index($from.$to, $IgnoreTag) <0) ) { ## Copy this file?
- if ($bPathTags) { ## Apply PathTag substitutions:
- $from =~ s/$AlwaysTag/$PathFragment/g;
- $to =~ s/$AlwaysTag/$PathFragment/g;
- $from =~ s/$BuildDependentTag/$PathFragment/g;
- $to =~ s/$BuildDependentTag/$PathFragment/g;
- }
- if ($bFileStem) { ## FileStem substitution?
- $from =~ s/%filestem%/$FileStemFragment/g;
- $to =~ s/%filestem%/$FileStemFragment/g;
- }
- # %-DEBUG% substitution:
- local $DebugFragment = ($switches[0]->{debug}->{value}) ? "-DEBUG" : "";
-if ($from =~ /\-DEBUG/) {print "\n$from ... \n";}
- $from =~ s/%\-DEBUG%/$DebugFragment/g;
- $to =~ s/%\-DEBUG%/$DebugFragment/g;
-if ($from =~ /DEBUG/) {print "\n$from ... \n";}
- $to =~ s/\*.*//; ## Truncate to path before any wildcard
+ my ($name, $newname, $from, $to, $file);
+ $file = $files[0]->{File}->[$i];
+ $name = $file->{name};
+ if (exists $file->{newname}) {$newname = $file->{newname};}
+ else {$newname = $name;}
+ if ($name && (! exists $file->{ignore})) { ## Ignore or process this entry?
+ $from = "$fromRoot\\$file->{from}\\$name";
+ $to = "$toRoot\\$file->{to}\\$newname";
+ # Copy this file? Check for ignore tag [debug-only in release mode or vice versa].
+ if ( $bPathTags || $bFileStem || (index($from.$to, $IgnoreTag) <0) ) {
+ if ($bPathTags) { ## Apply PathTag substitutions:
+ $from =~ s/$AlwaysTag/$PathFragment/g;
+ $to =~ s/$AlwaysTag/$PathFragment/g;
+ $from =~ s/$BuildDependentTag/$PathFragment/g;
+ $to =~ s/$BuildDependentTag/$PathFragment/g;
+ }
+ if ($bFileStem) { ## FileStem substitution?
+ $from =~ s/%filestem%/$FileStemFragment/g;
+ $to =~ s/%filestem%/$FileStemFragment/g;
+ }
+ # %-DEBUG% substitution:
+ local $DebugFragment = ($switches[0]->{debug}->{value}) ? "-DEBUG" : "";
+ $from =~ s/%\-DEBUG%/$DebugFragment/g;
+ $to =~ s/%\-DEBUG%/$DebugFragment/g;
+ $to =~ s/\*.*//; ## Truncate to path before any wildcard
- my $bCopyOK = 1;
- my $fromcheck = $from;
- my $bRequired = ! (exists $file->{notrequired});
- if ($name =~ /\*/) { ## Wildcard case
- $fromcheck =~ s/\*.*//;
- if ($bRequired && (! -d $fromcheck)) {
- if ($bDot) {print "\n";}
- die "Fatal -- Can't find $fromcheck";
- }
- $bCopyOK = !system("echo D | xcopy /D /F /Y /S $from $to > a.tmp 2>NUL");
- }
- else { ## Specific file case
- if ($bRequired && (! -e $fromcheck)) {
- if ($bDot) {print "\n";}
- die "Fatal -- Can't find $fromcheck";
- }
- $bCopyOK = !system("echo F | xcopy /D /F /Y $from $to > a.tmp 2>NUL");
- }
+ my $bCopyOK = 1;
+ my $fromcheck = $from;
+ my $bRequired = ! (exists $file->{notrequired});
+ if ($name =~ /\*/) { ## Wildcard case
+ $fromcheck =~ s/\*.*//;
+ if ($bRequired && (! -d $fromcheck)) {
+ if ($bDot) {print "\n";}
+ die "Fatal -- Can't find $fromcheck";
+ }
+ $bCopyOK = !system("echo D | xcopy /D /F /Y /S $from $to > a.tmp 2>NUL");
+ }
+ else { ## Specific file case
+ if ($bRequired && (! -e $fromcheck)) {
+ if ($bDot) {print "\n";}
+ die "Fatal -- Can't find $fromcheck";
+ }
+ $bCopyOK = !system("echo F | xcopy /D /F /Y $from $to > a.tmp 2>NUL");
+ }
- if ($bCopyOK) { ## xcopy OK - show progress
- # To show progress when files aren't copied, print a string of dots.
- open(MYINPUTFILE, "<a.tmp");
- my(@lines) = <MYINPUTFILE>;
- foreach $line (@lines) {
- $bDot = ($line =~ /^0/);
- }
- close(MYINPUTFILE);
- if (!$bDot && $bOldDot) {print "\n";}
- if ($bDot) {print "."; STDOUT->flush;}
- else {print "$from copied to $to\n";}
- $bOldDot = $bDot;
- }
- else { ## xcopy failed
- if (!exists $file->{notrequired}) {
- if ($bDot) {print "\n";}
- die "Fatal -- Copy of $from to $to failed";
- }
- } ## End xcopy succeed or fail
- } ## End not dummy entry nor ignored
- }
- $i++;
- }
- if ($bDot) {print "\n";}
- }
+ if ($bCopyOK) { ## xcopy OK - show progress
+ # To show progress when files aren't copied, print a string of dots.
+ open(MYINPUTFILE, "<a.tmp");
+ my(@lines) = <MYINPUTFILE>;
+ foreach $line (@lines) {
+ $bDot = ($line =~ /^0/);
+ }
+ close(MYINPUTFILE);
+ if (!$bDot && $bOldDot) {print "\n";}
+ if ($bDot) {print "."; STDOUT->flush;}
+ else {print "$from copied to $to\n";}
+ $bOldDot = $bDot;
+ }
+ else { ## xcopy failed
+ if (!exists $file->{notrequired}) {
+ if ($bDot) {print "\n";}
+ die "Fatal -- Copy of $from to $to failed";
+ }
+ } ## End xcopy succeed or fail
+ } ## End not dummy entry nor ignored
+ }
+ $i++;
+ }
+ if ($bDot) {print "\n";}
+ }
return 1;
diff --git a/src/windows/build/copyfiles.xml b/src/windows/build/copyfiles.xml
index 1071c51805..d571be63dc 100644
--- a/src/windows/build/copyfiles.xml
+++ b/src/windows/build/copyfiles.xml
@@ -1,217 +1,217 @@
<?xml version="1.0" encoding="utf-8" ?>
- <Files>
- <!-- File from paths are relative to <src>\pismere\athena -->
- <!-- File to paths are relative to <src>\pismere\staging -->
- <File dummy="foo" /> <!-- Forces XML::Simple behavior -->
- <!-- Without this, XML::Simple does not make an anonymous array and I can't figure out how to iterate over it. -->
+ <Files>
+ <!-- File from paths are relative to <src>\pismere\athena -->
+ <!-- File to paths are relative to <src>\pismere\staging -->
+ <File dummy="foo" /> <!-- Forces XML::Simple behavior -->
+ <!-- Without this, XML::Simple does not make an anonymous array and I can't figure out how to iterate over it. -->
- <!-- Build-dependent files (from release or debug build): -->
- <File name="netidmgr.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="netidmgr_version.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr"/>
- <File name="perfstat.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr"/>
- <File name="utils.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="sync.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="mstring.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="kplugin.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="kmq.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="kmm.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khuidefs.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khtracker.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khrescache.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khremote.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khprops.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khnewcred.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khmsgtypes.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khlist.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khhtlink.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="kherror.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="kherr.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khdefs.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khconfigui.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khalerts.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khactiondef.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="khaction.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="kcreddb.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="kconfig.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="hashtable.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
- <File name="nidmgr32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="xpprof32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="wshelp32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="loadfuncs.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="leashw32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="krbv4w32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="krbcc32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="krb5_32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="krb524.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="kclnt32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="gssapi32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="getopt.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="delaydlls.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="comerr32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
- <File name="netidmgr.pdb" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\w2k\" to="\bin\i386\w2k" />
- <File name="nidmgr32.pdb" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\w2k\" to="\bin\i386\w2k" />
- <File name="kfwcpcc.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kfwlogon.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="netidmgr.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="nidmgr32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb4cred.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb5cred.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="mit2ms.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kdeltkt.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kcpytkt.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="xpprof32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="wshelp32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="ms2mit.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="leashw32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="leash32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="leash32.chm" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kpasswd.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kvno.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krbv4w32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krbcc32s.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krbcc32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="k5sprt32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb5_32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb524.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="klist.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kinit.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kdestroy.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kclnt32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="k524init.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="gssapi32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="gss-server.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="gss-client.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="gss.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="comerr32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="netidmgr.exe" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\w2k\" to="\bin\i386\w2k" />
- <File name="nidmgr32.dll" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\w2k\" to="\bin\i386\w2k" />
- <File name="kfwcpcc.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kfwlogon.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="netidmgr.chm" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="netidmgr.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="netiddev.chm" from="..\target\bin\i386\%bldtype%\" to="\doc" />
- <File name="nidmgr32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb4cred_en_us.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb4cred.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb5cred_en_us.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb5cred.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="mit2ms.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kdeltkt.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kcpytkt.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="xpprof32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="wshelp32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="ms2mit.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="leashw32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="leash32.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kpasswd.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kvno.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krbv4w32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krbcc32s.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krbcc32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="k5sprt32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb5_32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="krb524.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="klist.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kinit.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kdestroy.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="kclnt32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="k524init.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="gssapi32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="gss-server.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="gss-client.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="gss.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="comerr32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
- <File name="NetIddev.chm" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\doc\" to="\doc" newname="netiddev.chm" />
+ <!-- Build-dependent files (from release or debug build): -->
+ <File name="netidmgr_version.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr"/>
+ <File name="netidmgr.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="perfstat.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr"/>
+ <File name="utils.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="sync.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="mstring.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="kplugin.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="kmq.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="kmm.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khuidefs.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khtracker.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khrescache.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khremote.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khprops.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khnewcred.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khmsgtypes.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khlist.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khhtlink.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="kherror.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="kherr.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khdefs.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khconfigui.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khalerts.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khactiondef.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="khaction.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="kcreddb.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="kconfig.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="hashtable.h" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\inc\" to="\inc\netidmgr" />
+ <File name="nidmgr32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="xpprof32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="wshelp32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="loadfuncs.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="leashw32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="krbv4w32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="krbcc32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="krb5_32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="krb524.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="kclnt32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="gssapi32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="getopt.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="delaydlls.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="comerr32.lib" from="..\target\lib\i386\%bldtype%\" to="\lib\i386" />
+ <File name="netidmgr.exe" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\w2k\" to="\bin\i386\w2k" />
+ <File name="nidmgr32.dll" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\w2k\" to="\bin\i386\w2k" />
+ <File name="netidmgr.pdb" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\w2k\" to="\bin\i386\w2k" />
+ <File name="nidmgr32.pdb" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\w2k\" to="\bin\i386\w2k" />
+ <File name="kfwcpcc.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kfwlogon.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="netidmgr.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="nidmgr32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb4cred.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb5cred.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="mit2ms.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kdeltkt.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kcpytkt.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="xpprof32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="wshelp32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="ms2mit.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="leashw32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="leash32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="leash32.chm" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kpasswd.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kvno.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krbv4w32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krbcc32s.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krbcc32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="k5sprt32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb5_32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb524.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="klist.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kinit.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kdestroy.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kclnt32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="k524init.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="gssapi32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="gss-server.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="gss-client.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="gss.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="comerr32.pdb" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kfwcpcc.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kfwlogon.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="netidmgr.chm" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="netidmgr.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="nidmgr32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb4cred_en_us.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb4cred.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb5cred_en_us.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb5cred.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="mit2ms.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kdeltkt.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kcpytkt.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="xpprof32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="wshelp32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="ms2mit.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="leashw32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="leash32.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kpasswd.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kvno.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krbv4w32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krbcc32s.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krbcc32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="k5sprt32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb5_32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="krb524.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="klist.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kinit.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kdestroy.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="kclnt32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="k524init.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="gssapi32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="gss-server.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="gss-client.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="gss.exe" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="comerr32.dll" from="..\target\bin\i386\%bldtype%\" to="\bin\i386" />
+ <File name="netiddev.chm" from="..\target\bin\i386\%bldtype%\" to="\doc" />
+ <File name="NetIddev.chm" from="auth\krb5\src\windows\identity\obj\i386\%bldtype%\doc\" to="\doc" newname="netiddev.chm" />
- <!-- Build-INdependent files, always copied: -->
- <File name="relnotes.html" from="..\doc\kerberos\" to="\doc" />
- <File name="leash_userdoc.pdf" from="auth\leash\help\" to="\doc" />
- <File name="NetIdMgr.pdf" from="auth\krb5\src\windows\identity\doc\" to="\doc" newname="netidmgr_userdoc.pdf" />
- <File name="*" from="auth\krb5\src\windows\identity\sample\templates\credprov\" to="\sample\templates\credprov\" />
- <File name="*" from="auth\krb5\src\windows\identity\sample\templates\credprov\images\" to="\sample\templates\credprov\images" />
- <File name="*" from="auth\krb5\src\windows\identity\sample\templates\credprov\lang\" to="\sample\templates\credprov\lang" />
- <File name="*" from="auth\krb5\src\windows\identity\sample\templates\credprov\lang\en_us\" to="\sample\templates\credprov\lang\en_us" />
- <File name="kclient.h" from="auth\krb4\kclient\include\" to="\inc\kclient" />
- <File name="kcmacerr.h" from="auth\krb4\kclient\include\" to="\inc\kclient" />
- <File name="com_err.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="conf-pc.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="conf.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="des.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="kadm_err.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="krb.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="krberr.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="mit_copy.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="osconf.h" from="auth\krb4\include\" to="\inc\krb4" />
- <File name="com_err.h" from="auth\krb5\src\include\" to="\inc\krb5" />
- <File name="gssapi.h" from="auth\krb5\src\include\gssapi\" to="\inc\krb5\gssapi" />
- <File name="gssapi_generic.h" from="auth\krb5\src\include\gssapi\" to="\inc\krb5\gssapi" />
- <File name="gssapi_krb5.h" from="auth\krb5\src\include\gssapi\" to="\inc\krb5\gssapi" />
- <File name="des.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
- <File name="kadm_err.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
- <File name="krb_err.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
- <File name="krb.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
- <File name="mit-copyright.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
- <File name="krb5.h" from="auth\krb5\src\include\" to="\inc\krb5" />
- <File name="profile.h" from="auth\krb5\src\include\" to="\inc\krb5" />
- <File name="win-mac.h" from="auth\krb5\src\include\" to="\inc\krb5" />
- <File name="krb5.h" from="auth\krb5\src\include\krb5\" to="\inc\krb5\krb5" notrequired="true" />
- <File name="cacheapi.h" from="auth\krbcc\include\" to="\inc\krbcc" />
- <File name="leasherr.h" from="auth\leash\include\" to="\inc\leash" />
- <File name="leashinfo.h" from="auth\leash\include\" to="\inc\leash" />
- <File name="leashwin.h" from="auth\leash\include\" to="\inc\leash" />
- <File name="loadfuncs-afs.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-afs36.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-com_err.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-krb.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-krb5.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-krb524.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-leash.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-lsa.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-profile.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs-wshelper.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs.c" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="loadfuncs.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
- <File name="nameser.h" from="wshelper\include\arpa\" to="\inc\wshelper\arpa" />
- <File name="hesiod.h" from="wshelper\include\" to="\inc\wshelper" />
- <File name="mitwhich.h" from="wshelper\include\" to="\inc\wshelper" />
- <File name="resolv.h" from="wshelper\include\" to="\inc\wshelper" />
- <File name="wshelper.h" from="wshelper\include\" to="\inc\wshelper" />
- <File name="kfw-fixed.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="kfw.ico" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="kfw.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="KfWConfigPage.ini" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="KfWConfigPage2.ini" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="killer.cpp" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="licenses.rtf" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="site-local-tagged.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="nsi-includes-tagged.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="utils.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
- <File name="msi-deployment-guide.txt" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
- <File name="config.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
- <File name="features.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
- <File name="files.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
- <File name="kfw.wxs" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
- <File name="Makefile" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
- <File name="property.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
- <File name="site-local-tagged.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
- <File name="bannrbmp.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="completi.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="custicon.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="dlgbmp.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="exclamic.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="info.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="insticon.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="new.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="removico.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="repairic.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="up.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
- <File name="custom.cpp" from="auth\krb5\src\windows\installer\wix\custom\" to="\install\wix\custom" />
- <File name="custom.h" from="auth\krb5\src\windows\installer\wix\custom\" to="\install\wix\custom" />
- <File name="config_1033.wxi" from="auth\krb5\src\windows\installer\wix\lang\" to="\install\wix\lang" />
- <File name="strings_1033.wxl" from="auth\krb5\src\windows\installer\wix\lang\" to="\install\wix\lang" />
- <File name="ui_1033.wxi" from="auth\krb5\src\windows\installer\wix\lang\" to="\install\wix\lang" />
- <File name="license.rtf" from="auth\krb5\src\windows\installer\wix\lang\" to="\install\wix\lang" />
- <File name="krb5.conf" from="auth\krb5\src\config-files\" to="\sample" newname="krb5.ini" />
- <File name="krb.con" from="auth\krb4\sample-config\" to="\sample" />
- <File name="krbrealm.con" from="auth\krb4\sample-config\" to="\sample" />
- </Files> \ No newline at end of file
+ <!-- Build-INdependent files, always copied: -->
+ <File name="relnotes.html" from="..\doc\kerberos\" to="\doc" />
+ <File name="leash_userdoc.pdf" from="auth\leash\help\" to="\doc" />
+ <File name="NetIdMgr.pdf" from="auth\krb5\src\windows\identity\doc\" to="\doc" newname="netidmgr_userdoc.pdf" />
+ <File name="*" from="auth\krb5\src\windows\identity\sample\templates\credprov\" to="\sample\templates\credprov\" />
+ <File name="*" from="auth\krb5\src\windows\identity\sample\templates\credprov\images\" to="\sample\templates\credprov\images" />
+ <File name="*" from="auth\krb5\src\windows\identity\sample\templates\credprov\lang\" to="\sample\templates\credprov\lang" />
+ <File name="*" from="auth\krb5\src\windows\identity\sample\templates\credprov\lang\en_us\" to="\sample\templates\credprov\lang\en_us" />
+ <File name="kclient.h" from="auth\krb4\kclient\include\" to="\inc\kclient" />
+ <File name="kcmacerr.h" from="auth\krb4\kclient\include\" to="\inc\kclient" />
+ <File name="com_err.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="conf-pc.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="conf.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="des.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="kadm_err.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="krb.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="krberr.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="mit_copy.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="osconf.h" from="auth\krb4\include\" to="\inc\krb4" />
+ <File name="com_err.h" from="auth\krb5\src\include\" to="\inc\krb5" />
+ <File name="krb5.h" from="auth\krb5\src\include\" to="\inc\krb5" />
+ <File name="profile.h" from="auth\krb5\src\include\" to="\inc\krb5" />
+ <File name="win-mac.h" from="auth\krb5\src\include\" to="\inc\krb5" />
+ <File name="krb5.h" from="auth\krb5\src\include\krb5\" to="\inc\krb5\krb5" notrequired="true" />
+ <File name="gssapi.h" from="auth\krb5\src\include\gssapi\" to="\inc\krb5\gssapi" />
+ <File name="gssapi_generic.h" from="auth\krb5\src\include\gssapi\" to="\inc\krb5\gssapi" />
+ <File name="gssapi_krb5.h" from="auth\krb5\src\include\gssapi\" to="\inc\krb5\gssapi" />
+ <File name="des.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
+ <File name="kadm_err.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
+ <File name="krb_err.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
+ <File name="krb.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
+ <File name="mit-copyright.h" from="auth\krb5\src\include\KerberosIV\" to="\inc\krb5\KerberosIV" />
+ <File name="cacheapi.h" from="auth\krbcc\include\" to="\inc\krbcc" />
+ <File name="leasherr.h" from="auth\leash\include\" to="\inc\leash" />
+ <File name="leashinfo.h" from="auth\leash\include\" to="\inc\leash" />
+ <File name="leashwin.h" from="auth\leash\include\" to="\inc\leash" />
+ <File name="loadfuncs-afs.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-afs36.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-com_err.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-krb.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-krb5.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-krb524.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-leash.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-lsa.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-profile.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs-wshelper.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs.c" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="loadfuncs.h" from="util\loadfuncs\" to="\inc\loadfuncs" />
+ <File name="nameser.h" from="wshelper\include\arpa\" to="\inc\wshelper\arpa" />
+ <File name="hesiod.h" from="wshelper\include\" to="\inc\wshelper" />
+ <File name="mitwhich.h" from="wshelper\include\" to="\inc\wshelper" />
+ <File name="resolv.h" from="wshelper\include\" to="\inc\wshelper" />
+ <File name="wshelper.h" from="wshelper\include\" to="\inc\wshelper" />
+ <File name="kfw-fixed.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="kfw.ico" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="kfw.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="KfWConfigPage.ini" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="KfWConfigPage2.ini" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="killer.cpp" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="licenses.rtf" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="site-local-tagged.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="nsi-includes-tagged.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="utils.nsi" from="auth\krb5\src\windows\installer\nsis\" to="\install\nsis" />
+ <File name="msi-deployment-guide.txt" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
+ <File name="config.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
+ <File name="features.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
+ <File name="files.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
+ <File name="kfw.wxs" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
+ <File name="Makefile" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
+ <File name="property.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
+ <File name="site-local-tagged.wxi" from="auth\krb5\src\windows\installer\wix\" to="\install\wix" />
+ <File name="bannrbmp.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="completi.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="custicon.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="dlgbmp.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="exclamic.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="info.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="insticon.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="new.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="removico.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="repairic.ico" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="up.bmp" from="auth\krb5\src\windows\installer\wix\Binary\" to="\install\wix\Binary" />
+ <File name="custom.cpp" from="auth\krb5\src\windows\installer\wix\custom\" to="\install\wix\custom" />
+ <File name="custom.h" from="auth\krb5\src\windows\installer\wix\custom\" to="\install\wix\custom" />
+ <File name="config_1033.wxi" from="auth\krb5\src\windows\installer\wix\lang\" to="\install\wix\lang" />
+ <File name="strings_1033.wxl" from="auth\krb5\src\windows\installer\wix\lang\" to="\install\wix\lang" />
+ <File name="ui_1033.wxi" from="auth\krb5\src\windows\installer\wix\lang\" to="\install\wix\lang" />
+ <File name="license.rtf" from="auth\krb5\src\windows\installer\wix\lang\" to="\install\wix\lang" />
+ <File name="krb5.conf" from="auth\krb5\src\config-files\" to="\sample" newname="krb5.ini" />
+ <File name="krb.con" from="auth\krb4\sample-config\" to="\sample" />
+ <File name="krbrealm.con" from="auth\krb4\sample-config\" to="\sample" />
+ </Files> \ No newline at end of file
diff --git a/src/windows/build/makeZip.pl b/src/windows/build/makeZip.pl
new file mode 100644
index 0000000000..ab1100554a
--- /dev/null
+++ b/src/windows/build/makeZip.pl
@@ -0,0 +1,108 @@
+#!perl -w
+
+#use strict;
+use Data::Dumper;
+
+require "signfiles.pl";
+
+sub makeZip {
+ local ($zip, $config) = @_;
+
+ local $src = $config->{CommandLine}->{Directories}->{src}->{path};
+ local $toPath = $config->{CommandLine}->{Directories}->{out}->{path};
+ local @switches = $config->{CommandLine}->{Options};
+ local $zipname = $zip->{filename};
+ local $filestem = $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name};
+ $zipname =~ s/%filestem%/$filestem/g;
+ if (exists $zip->{Requires}) {
+ local $bMakeIt = 1;
+ local $rverb = $switches[0]->{repository}->{value};
+ local $j = 0;
+ while ($zip->{Requires}->{Switch}[$j]) { ## Check Require switches
+ local $switch = $zip->{Requires}->{Switch}[$j];
+ if (exists $switch->{name}) { ## Ignore dummy entry
+ # We handle REPOSITORY and CLEAN switches:
+ if ($switch->{name} =~ /REPOSITORY/i) {
+ $bMakeIt &&= ($switch->{value} =~ /$rverb/i); ## Repository verb must match requirement
+ }
+ elsif ($switch->{name} =~ /CLEAN/i) { ## Clean must be specified
+ $bMakeIt &&= $clean;
+ }
+ else {print "Error -- Unsupported switch $switch->{name} in Requires in ".Dumper($zip);
+ $bMakeIt = 0;
+ }
+ }
+ $j++;
+ }
+ if ( !$bMakeIt ) {
+ if (exists $zip->{Requires}->{ErrorMsg}) {
+ print "Error -- $zip->{Requires}->{ErrorMsg}->{text}\n";
+ }
+ else {
+ print "Error -- requirements not met for building $zipname.\n";
+ }
+ return 0;
+ }
+ }
+
+ local $ziptemp = "$src\\$toPath\\ziptemp";
+ chdir "$src\\$toPath";
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+ system("rm -rf $ziptemp") if (-d $ziptemp);
+ die "Fatal -- Couldn't remove $ziptemp" if (-d $ziptemp);
+ mkdir($ziptemp);
+ # Set up the zip's config section:
+ $zip->{Config} = $config->{Stages}->{PostPackage}->{Config};
+ # Add to the copylist's config section. Don't copy Postpackage->Config,
+ # because the CopyList's Config might contain substitution tags.
+ $zip->{CopyList}->{Config}->{FileStem}->{name} = $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name};
+ $zip->{CopyList}->{Config}->{From}->{root} = "$src\\pismere"; ## Add zip-specific config settings.
+ $zip->{CopyList}->{Config}->{To}->{root} = "$ziptemp\\$zip->{topdir}";
+ copyFiles($zip->{CopyList}, $config);
+ # Drop down into <out>/ziptemp so the path to the added file won't include <out>:
+ chdir $ziptemp;
+ print "Info -- chdir to ".`cd`."\n" if ($verbose);
+
+ # Prune any unwanted files or directories from the directory we're about to zip:
+ if (exists $zip->{Prunes}) {
+ # Use Unix find instead of Windows find. Save PATH so we can restore it when we're done:
+ local $savedPATH = $ENV{PATH};
+ $ENV{PATH} = $config->{CommandLine}->{Directories}->{unixfind}->{path}.";".$savedPATH;
+ local $prunes = $zip->{Prunes};
+ local $j = 0;
+ print "Info -- Processing prunes in ".`cd`."\n" if ($verbose);
+ while ($prunes->{Prune}->[$j]) {
+ if (exists $prunes->{Prune}->[$j]->{name}) { ## Don't process dummy entry!
+ local $prune = $prunes->{Prune}->[$j]->{name};
+ local $flags = $prunes->{Prune}->[$j]->{flags};
+ $flags = "" if (!$flags);
+ local $cmd = "find . -".$flags."name $prune";
+ print "Info -- Looking for filenames containing $prune\n";
+ local $list = `$cmd`;
+ foreach $target (split("\n", $list)) {
+ print "Info -- Pruning $target\n" if ($verbose);
+ !system("rm -rf $target") or die "Error -- Couldn't remove $target.";;
+ }
+ }
+ $j++;
+ }
+ $ENV{PATH} = $savedPATH;
+ }
+
+ # Sign files:
+ if ($switches[0]->{sign}->{value}) {
+ signFiles($zip->{Config}->{Signing}, $config);
+ }
+
+ local $zipfile = Archive::Zip->new();
+ local $topdir = $zip->{topdir};
+ $topdir =~ s/%filestem%/$filestem/g;
+ $zipfile->addTree('.', $topdir);
+ if (-e $zipname) {!system("rm -f $zipname") or die "Error -- Couldn't remove $zipname.";}
+ $zipfile->writeToFileNamed($zipname);
+ print "Info -- created $src\\$toPath\\$zipname.\n" if ($verbose);
+ # move .zip from <src>/<out>/ziptemp to <src>/<out>.
+ !system("mv -f $zipname ..") or die "Error -- Couldn't move $zipname to ..";
+ }
+
+return 1; \ No newline at end of file
diff --git a/src/windows/build/sdkfiles.xml b/src/windows/build/sdkfiles.xml
index d80a681d7c..3553585414 100644
--- a/src/windows/build/sdkfiles.xml
+++ b/src/windows/build/sdkfiles.xml
@@ -1,147 +1,40 @@
<?xml version="1.0" encoding="utf-8" ?>
<Files>
<!-- File from paths are relative to <src>/pismere. -->
- <!-- File to paths are relative to <out>. -->
- <File dummy="foo" /> <!-- Forces XML::Simple behavior -->
+ <!-- File to paths are relative to <out>. -->
+ <File dummy="foo" /> <!-- Forces XML::Simple behavior -->
<!-- Without this, XML::Simple does not make an anonymous array and I can't figure out how to iterate over it. -->
- <File name="relnotes.html" from="doc\kerberos" to="doc" />
- <File name="kclient.rtf" from="athena\auth\krb4\kclient\doc" to="doc" />
+ <File name="relnotes.html" from="doc\kerberos" to="doc" />
+ <File name="kclient.rtf" from="athena\auth\krb4\kclient\doc" to="doc" />
- <File name="*.h" from="staging\inc" to="inc" />
-<!--
- <File name="*.h" from="staging\inc\kclient" to="inc\kclient\" />
- <File name="*.h" from="staging\inc\krb4" to="inc\krb4\" />
- <File name="*.h" from="staging\inc\krb5" to="inc\krb5\" />
+ <File name="*.h" from="staging\inc" to="inc" />
- <File name="gssapi.h" from="" to="" inc\krb5\gssapi\
- <File name="gssapi_generic.h" from="" to="" inc\krb5\gssapi\
- <File name="gssapi_krb5.h" from="" to="" inc\krb5\gssapi\
+ <File name="*.*" from="staging\install\nsis" to="install\nsis\" />
- <File name="des.h" from="" to="" inc\krb5\KerberosIV\
- <File name="kadm_err.h" from="" to="" inc\krb5\KerberosIV\
- <File name="krb.h" from="" to="" inc\krb5\KerberosIV\
- <File name="krb_err.h" from="" to="" inc\krb5\KerberosIV\
- <File name="mit-copyright.h" from="" to="" inc\krb5\KerberosIV\
+ <File name="MITKerberosForWindows%-DEBUG%.exe"
+ from="staging\install\nsis" to="install\nsis\" newname="%filestem%.exe" />
+ <!-- We'll clean up the MITKerberosForWindows.exe in the target directory in a later step. -->
- <File name="krb5.h" from="" to="" inc\krb5\krb5\
-
- <File name="cacheapi.h" from="" to="" inc\krbcc\
-
- <File name="leasherr.h" from="" to="" inc\leash\
- <File name="leashinfo.h" from="" to="" inc\leash\
- <File name="leashwin.h" from="" to="" inc\leash\
-
- <File name="loadfuncs.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-afs.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-afs36.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-com_err.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-krb.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-krb5.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-krb524.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-leash.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-lsa.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-profile.h" from="" to="" inc\loadfuncs\
- <File name="loadfuncs-wshelper.h" from="" to="" inc\loadfuncs\
-
- <File name="loadfuncs.c" from="" to="" inc\loadfuncs\
-
- <File name="hashtable.h" from="" to="" inc\netidmgr\
- <File name="kconfig.h" from="" to="" inc\netidmgr\
- <File name="kcreddb.h" from="" to="" inc\netidmgr\
- <File name="khaction.h" from="" to="" inc\netidmgr\
- <File name="khactiondef.h" from="" to="" inc\netidmgr\
- <File name="khalerts.h" from="" to="" inc\netidmgr\
- <File name="khconfigui.h" from="" to="" inc\netidmgr\
- <File name="khdefs.h" from="" to="" inc\netidmgr\
- <File name="kherr.h" from="" to="" inc\netidmgr\
- <File name="kherror.h" from="" to="" inc\netidmgr\
- <File name="khhtlink.h" from="" to="" inc\netidmgr\
- <File name="khlist.h" from="" to="" inc\netidmgr\
- <File name="khmsgtypes.h" from="" to="" inc\netidmgr\
- <File name="khnewcred.h" from="" to="" inc\netidmgr\
- <File name="khprops.h" from="" to="" inc\netidmgr\
- <File name="khremote.h" from="" to="" inc\netidmgr\
- <File name="khrescache.h" from="" to="" inc\netidmgr\
- <File name="khtracker.h" from="" to="" inc\netidmgr\
- <File name="khuidefs.h" from="" to="" inc\netidmgr\
- <File name="kmm.h" from="" to="" inc\netidmgr\
- <File name="kmq.h" from="" to="" inc\netidmgr\
- <File name="kplugin.h" from="" to="" inc\netidmgr\
- <File name="mstring.h" from="" to="" inc\netidmgr\
- <File name="netidmgr.h" from="" to="" inc\netidmgr\
- <File name="netidmgr_version.h" from="" to="" inc\netidmgr\
- <File name="perfstat.h" from="" to="" inc\netidmgr\
- <File name="sync.h" from="" to="" inc\netidmgr\
- <File name="utils.h" from="" to="" inc\netidmgr\
-
- <File name="nameser.h" from="" to="" inc\wshelper\arpa\
-
- <File name="hesiod.h" from="" to="" inc\wshelper\
- <File name="mitwhich.h" from="" to="" inc\wshelper\
- <File name="resolv.h" from="" to="" inc\wshelper\
- <File name="wshelper.h" from="" to="" inc\wshelper\
--->
-
- <File name="*.*" from="staging\install\nsis" to="install\nsis\" />
-<!-- <File name="kfw-fixed.nsi" from="" to="" install\nsis\
- <File name="kfw.ico" from="" to="" install\nsis\
- <File name="kfw.nsi" from="" to="" install\nsis\
- <File name="KfWConfigPage.ini" from="" to="" install\nsis\
- <File name="KfWConfigPage2.ini" from="" to="" install\nsis\
- <File name="killer.cpp" from="" to="" install\nsis\
- <File name="licenses.rtf" from="" to="" install\nsis\
- <File name="site-local.nsi" from="" to="" install\nsis\
- <File name="utils.nsi" from="" to="" install\nsis\
--->
-
- <File name="config.wxi" from="staging\install\wix" to="install\wix\" />
- <File name="features.wxi" from="staging\install\wix" to="install\wix\" />
- <File name="files.wxi" from="staging\install\wix" to="install\wix\" />
- <File name="kfw.wxs" from="staging\install\wix" to="install\wix\" />
- <File name="Makefile" from="staging\install\wix" to="install\wix\" />
+ <File name="config.wxi" from="staging\install\wix" to="install\wix\" />
+ <File name="features.wxi" from="staging\install\wix" to="install\wix\" />
+ <File name="files.wxi" from="staging\install\wix" to="install\wix\" />
+ <File name="kfw.wxs" from="staging\install\wix" to="install\wix\" />
+ <File name="Makefile" from="staging\install\wix" to="install\wix\" />
<File name="msi-deployment-guide.txt" from="staging\install\wix" to="install\wix\" />
- <File name="property.wxi" from="staging\install\wix" to="install\wix\" />
- <File name="site-local.wxi" from="staging\install\wix" to="install\wix\" />
+ <File name="property.wxi" from="staging\install\wix" to="install\wix\" />
+ <File name="site-local.wxi" from="staging\install\wix" to="install\wix\" />
- <File name="*.*" from="staging\install\wix\Binary" to="install\wix\Binary\" />
-<!-- <File name="bannrbmp.bmp" from="" to="" install\wix\Binary\
- <File name="completi.ico" from="" to="" install\wix\Binary\
- <File name="custicon.ico" from="" to="" install\wix\Binary\
- <File name="dlgbmp.bmp" from="" to="" install\wix\Binary\
- <File name="exclamic.ico" from="" to="" install\wix\Binary\
- <File name="info.bmp" from="" to="" install\wix\Binary\
- <File name="insticon.ico" from="" to="" install\wix\Binary\
- <File name="new.bmp" from="" to="" install\wix\Binary\
- <File name="removico.ico" from="" to="" install\wix\Binary\
- <File name="repairic.ico" from="" to="" install\wix\Binary\
- <File name="up.bmp" from="" to="" install\wix\Binary\
--->
+ <File name="*.*" from="staging\install\wix\Binary" to="install\wix\Binary\" />
- <File name="custom.cpp" from="staging\install\wix\custom" to="install\wix\custom\" />
- <File name="custom.h" from="staging\install\wix\custom" to="install\wix\custom\" />
+ <File name="custom.cpp" from="staging\install\wix\custom" to="install\wix\custom\" />
+ <File name="custom.h" from="staging\install\wix\custom" to="install\wix\custom\" />
- <File name="config_1033.wxi" from="staging\install\wix\lang" to="install\wix\lang\" />
- <File name="strings_1033.wxl" from="staging\install\wix\lang" to="install\wix\lang\" />
- <File name="ui_1033.wxi" from="staging\install\wix\lang" to="install\wix\lang\" />
+ <File name="config_1033.wxi" from="staging\install\wix\lang" to="install\wix\lang\" />
+ <File name="strings_1033.wxl" from="staging\install\wix\lang" to="install\wix\lang\" />
+ <File name="ui_1033.wxi" from="staging\install\wix\lang" to="install\wix\lang\" />
<!-- Why not license.rtf? -->
- <File name="*.lib" from="staging\lib\i386" to="lib\i386\" />
-<!--
- <File name="comerr32.lib" from="" to="" lib\i386\
- <File name="delaydlls.lib" from="" to="" lib\i386\
- <File name="getopt.lib" from="" to="" lib\i386\
- <File name="gssapi32.lib" from="" to="" lib\i386\
- <File name="kclnt32.lib" from="" to="" lib\i386\
- <File name="krb524.lib" from="" to="" lib\i386\
- <File name="krb5_32.lib" from="" to="" lib\i386\
- <File name="krbcc32.lib" from="" to="" lib\i386\
- <File name="krbv4w32.lib" from="" to="" lib\i386\
- <File name="leashw32.lib" from="" to="" lib\i386\
- <File name="loadfuncs.lib" from="" to="" lib\i386\
- <File name="nidmgr32.lib" from="" to="" lib\i386\
- <File name="wshelp32.lib" from="" to="" lib\i386\
- <File name="xpprof32.lib" from="" to="" lib\i386\
--->
+ <File name="*.lib" from="staging\lib\i386" to="lib\i386\" />
</Files> \ No newline at end of file
diff --git a/src/windows/build/signFiles.pl b/src/windows/build/signFiles.pl
new file mode 100644
index 0000000000..a94c4f2d99
--- /dev/null
+++ b/src/windows/build/signFiles.pl
@@ -0,0 +1,27 @@
+#!perl -w
+
+#use strict;
+use Data::Dumper;
+
+sub signFiles {
+ local ($signing, $config) = @_;
+ local $exprs = $signing->{FilePatterns}->{value};
+ local $template = $signing->{CommandTemplate}->{value};
+ # Use Unix find instead of Windows find. Save PATH so we can restore it when we're done:
+ local $savedPATH= $ENV{PATH};
+ $ENV{PATH} = $config->{CommandLine}->{Directories}->{unixfind}->{path}.";".$savedPATH;
+ foreach $expr (split(" ", $exprs)) { ## exprs is something like "*.exe *.dll"
+ local $cmd = "find . -iname \"$expr\"";
+ local $list = `$cmd`; ## $list is files matching *.exe, for example.
+ foreach $target (split("\n", $list)) {
+ $target =~ s|/|\\|g; ## Flip path separators from unix-style to windows-style.
+ local $template2 = $template;
+ $template2 =~ s/%filename%/$target/;
+ print "Info -- Signing $target\n" if ($verbose);
+ !system($template2) or die "Fatal -- Error signing $target.";
+ }
+ }
+ $ENV{PATH} = $savedPATH;
+ }
+
+return 1; \ No newline at end of file