diff options
Diffstat (limited to 'src/windows')
| -rw-r--r-- | src/windows/build/BKWconfig.xml | 305 | ||||
| -rw-r--r-- | src/windows/build/bkw.pl | 1011 | ||||
| -rw-r--r-- | src/windows/build/copyfiles.pl | 247 | ||||
| -rw-r--r-- | src/windows/build/copyfiles.xml | 428 | ||||
| -rw-r--r-- | src/windows/build/makeZip.pl | 108 | ||||
| -rw-r--r-- | src/windows/build/sdkfiles.xml | 153 | ||||
| -rw-r--r-- | src/windows/build/signFiles.pl | 27 |
7 files changed, 1127 insertions, 1152 deletions
diff --git a/src/windows/build/BKWconfig.xml b/src/windows/build/BKWconfig.xml index 9818db79c..7e1fd24c7 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 "MIT Kerberos for Windows" /du "http://web.mit.edu/kerberos" /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 69b523c5d..ca8b3f825 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 5e4200bb1..9160db07b 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 1071c5180..d571be63d 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 000000000..ab1100554 --- /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 d80a681d7..355358541 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 000000000..a94c4f2d9 --- /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 |
