pull up r19375 from trunk
authorTom Yu <tlyu@mit.edu>
Mon, 2 Apr 2007 20:46:50 +0000 (20:46 +0000)
committerTom Yu <tlyu@mit.edu>
Mon, 2 Apr 2007 20:46:50 +0000 (20:46 +0000)
 r19375@cathode-dark-space:  kpkoch | 2007-04-02 12:13:58 -0400
 Target_Version: 1.6.1
 Ticket: 5490
 Tags: pullup

 Uncomment w2k files in corebinaries.xml.

 Factor processing of <Prunes> xml into pruneFiles.pl.

 Factor processing of <Zips> xml into zipXML.pl.

 Move SRC zip XML to <FetchSources> section of config file.

 Call zipXML in /REPOSITORY CHECKOUT section of script.

 Keep track of cleaning of OUTDIR so SRC zip isn't removed during packaging.

 Remove UNIXFIND from config file.  If UNIXFIND isn't present in the config file, set the in-memory UNIXFIND to c:\tools\cygwin\bin.  UNIXFIND is now an implementation detail stored in the in-memory config XML, like the versions read from kerberos.ver.

 Prune more temporary files before making SDK zip.

 Remove redundant custom files from sdkfiles.xml.  Copy *.* from staging/inc instead of *.h -- one .c file is also required.

ticket: 5490

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-6@19388 dc483132-0cff-0310-8789-dd5450dbe970

src/windows/build/BKWconfig.xml
src/windows/build/bkw.pl
src/windows/build/corebinaryfiles.xml
src/windows/build/makeZip.pl
src/windows/build/pruneFiles.pl [new file with mode: 0644]
src/windows/build/sdkfiles.xml
src/windows/build/zipXML.pl [new file with mode: 0644]

index 37c1a5c43be80c3335249ad0dd772832a9dcce98..a7a34ee2a3560cc0bfad217cca6ae4e269e87569 100644 (file)
@@ -12,7 +12,6 @@
                     of the repositories will cause pismere/athena to be created under <src>.    -->\r
             <src        path    ="C:\projects\Autobuild" />\r
             <out        path    ="C:\projects\Autobuild\public" /> <!-- Must be absolute path. -->\r
-            <unixfind   path    ="c:\cygwin\bin" />\r
             </Directories>\r
         <Options>\r
             <debug      value="0" />\r
                 <SVNURL     name="svn.mit.edu" />   <!-- NB:  No protocol or slashes!! -->\r
                 <USERNAME   name="" />              <!-- Needed for svn/plink.  Override from command line -->\r
                 </Config>\r
-        </FetchSources>\r
-        <Make></Make>\r
+            <Zips>\r
+                <Zip dummy="foo" /> <!-- To force desired XML::Simple behavior    -->\r
+                <Zip name="SRC" filename="%filestem%-src.zip" topdir="%filestem%-final">\r
+                    <CopyList>\r
+                        <Files>\r
+                            <!-- File from    paths are relative to <src>/pismere.  -->\r
+                            <!-- File to      paths are relative to <out>.          -->\r
+                            <File dummy="foo" /> <!-- Forces XML::Simple behavior   -->\r
+                            <!-- Without this, XML::Simple does not make an anonymous array and I can't figure out how to iterate over it. -->\r
+                            <File name="*.*" from="athena"  to="src\athena" />\r
+                            <File name="*.*" from="doc"     to="src\doc" />\r
+                            <File name="*.*" from="scripts" to="src\scripts" />\r
+                            </Files>\r
+                    </CopyList>\r
+                    <Prunes> <!-- Files to be removed from current build to match what is in the 3.1 distribution:    -->\r
+                        <Prune dummy="foo" />\r
+                        <Prune name="CVS" />\r
+                        <Prune name=".cvsignore" flags="i" />\r
+                        <Prune name="Changelog"  flags="i" />\r
+                        <Prune name="site" />\r
+                        </Prunes>\r
+                    <Requires>\r
+                        <Switch dummy="foo" />\r
+                        <Switch name="REPOSITORY" value="CHECKOUT"/>\r
+                        <ErrorMsg text="Can't build source zip unless /REPOSITORY CHECKOUT is specified." />\r
+                        </Requires>\r
+                    </Zip>\r
+                </Zips>\r
+            </FetchSources>\r
+        <Make>\r
+            <!-- Script checks for prunes. -->\r
+            </Make>\r
         <PrePackage>\r
             <CopyList>\r
                 <Config>\r
                         <Prune dummy="foo" />\r
                         <Prune name="*.exe" />\r
                         <Prune name="*.msi" />\r
+                        <Prune name="*.dll" />\r
+                        <Prune name="*.obj" />\r
+                        <Prune name="*.wixobj" />\r
+                        <Prune name="custom.lib" />\r
+                        <Prune name="custom.exp" />\r
                         </Prunes>\r
-                </Zip>\r
-                <Zip name="SRC" filename="%filestem%-src.zip" topdir="%filestem%-final">\r
-                    <CopyList>\r
-                        <Files>\r
-                            <!-- File from    paths are relative to <src>/pismere.  -->\r
-                            <!-- File to      paths are relative to <out>.          -->\r
-                            <File dummy="foo" /> <!-- Forces XML::Simple behavior   -->\r
-                            <!-- Without this, XML::Simple does not make an anonymous array and I can't figure out how to iterate over it. -->\r
-                            <File name="*.*" from="athena"  to="src\athena" />\r
-                            <File name="*.*" from="doc"     to="src\doc" />\r
-                            <File name="*.*" from="scripts" to="src\scripts" />\r
-                            </Files>\r
-                    </CopyList>\r
-                    <Prunes> <!-- Files to be removed from current build to match what is in the 3.1 distribution:    -->\r
-                        <Prune dummy="foo" />\r
-                        <Prune name="CVS" />\r
-                        <Prune name=".cvsignore" flags="i" />\r
-                        <Prune name="Changelog" flags="i" />\r
-                        <Prune name="obj" />\r
-                        <Prune name="site" />\r
-                        </Prunes>\r
-                    <Requires>\r
-                        <Switch dummy="foo" />\r
-                        <Switch name="REPOSITORY" value="CHECKOUT"/>\r
-                        <ErrorMsg text="Can't build source zip unless /REPOSITORY CHECKOUT is specified." />\r
-                        </Requires>\r
                     </Zip>\r
                 </Zips>            \r
             <CopyList>            <!-- Copied at end of post-package step.    -->\r
index a5d0142335b4692a4970c898428ab37e73de9557..6c9fad1f5b3137858e392299316e6dc09df31f70 100644 (file)
@@ -12,8 +12,9 @@ use Data::Dumper;
 use Archive::Zip;\r
 use Logger;\r
 require "copyfiles.pl";\r
+require "prunefiles.pl";\r
 require "signfiles.pl";\r
-require "makeZip.pl";\r
+require "zipXML.pl";\r
 \r
 my $BAIL;\r
 $0 = fileparse($0);\r
@@ -122,9 +123,9 @@ sub main {
 \r
     # List of programs which must be in PATH:\r
     my @required_list = ('sed', 'awk', 'which', 'cat', 'rm', 'cvs', 'svn', 'doxygen', 'hhc', 'candle', 'light', 'makensis', 'nmake', 'plink');\r
-    my $requirements_met = 1;\r
-    my $first_missing = 0;\r
-    my $error_list = "";\r
+    my $requirements_met    = 1;\r
+    my $first_missing       = 0;\r
+    my $error_list          = "";\r
     foreach my $required (@required_list) {\r
         if (!get_info($required)) {\r
             $requirements_met = 0;\r
@@ -150,8 +151,8 @@ sub main {
 \r
 ##++ Assemble configuration from config file and command line:\r
 \r
-    my $configfile;\r
-    $configfile = $OPT->{config};\r
+    my $configfile      = $OPT->{config};\r
+    my $bOutputCleaned  = 0;\r
 \r
     print "Info -- Reading configuration from $configfile.\n";\r
 \r
@@ -212,6 +213,78 @@ sub main {
     #print "cvs tag: $tags[0]->{cvs}->{value}\n";\r
     #print "CVSROOT:   $fetch[0]->{CVSROOT}->{name}\n";\r
 \r
+    # We read in the version information to be able to update the site-local files in the install build areas:\r
+    local $version_path = $config->{Stages}->{Package}->{Config}->{Paths}->{Versions}->{path};\r
+    open(DAT, "$src/$version_path")     or die "Could not open $version_path.";\r
+    @raw = <DAT>;\r
+    close DAT;\r
+    foreach $line (@raw) {\r
+        chomp $line;\r
+        if ($line =~ /#define/) {                   # Process #define lines:\r
+            $line =~ s/#define//;                   # Remove #define token\r
+            $line =~ s/^\s+//;                      #  and leading & trailing whitespace\r
+            $line =~ s/\s+$//;\r
+            local @qr = split("\"", $line);         # Try splitting with quotes\r
+            if (exists $qr[1]) {\r
+                $qr[0] =~ s/^\s+//;                 #  Clean up whitespace\r
+                $qr[0] =~ s/\s+$//;\r
+                $config->{Versions}->{$qr[0]} = $qr[1]; # Save string\r
+                }\r
+            else {                                  # No quotes, so\r
+                local @ar = split(" ", $line);      #  split with space\r
+                $ar[0] =~ s/^\s+//;                 #  Clean up whitespace\r
+                $ar[0] =~ s/\s+$//;\r
+                $config->{Versions}->{$ar[0]} = $ar[1]; # and  save numeric value\r
+                }\r
+            }\r
+        }\r
+\r
+    # Check that the versions we will need for site-local have been defined:\r
+    my @required_versions = ('VER_PROD_MAJOR', 'VER_PROD_MINOR', 'VER_PROD_REV', \r
+                             'VER_PROD_MAJOR_STR', 'VER_PROD_MINOR_STR', 'VER_PROD_REV_STR', \r
+                             'VER_PRODUCTNAME_STR');\r
+    $requirements_met   = 1;\r
+    $first_missing      = 0;\r
+    $error_list         = "";\r
+    foreach my $required (@required_versions) {\r
+        if (! exists $config->{Versions}->{$required}) {\r
+            $requirements_met = 0;\r
+            if (!$first_missing) {\r
+                $first_missing = 1;\r
+                $error_list = "Fatal -- The following version(s) are not defined in $src/$version_path.\n";\r
+                }\r
+            $error_list .= "$required\n";\r
+            }\r
+        }\r
+    if (!$requirements_met) {\r
+        print $error_list;\r
+        exit(0);\r
+        }\r
+    # Apply any of these tags to filestem:\r
+    my $filestem    = $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name};\r
+    $filestem       =~ s/%VERSION_MAJOR%/$config->{Versions}->{'VER_PROD_MAJOR_STR'}/;\r
+    $filestem       =~ s/%VERSION_MINOR%/$config->{Versions}->{'VER_PROD_MINOR_STR'}/;\r
+    $filestem       =~ s/%VERSION_PATCH%/$config->{Versions}->{'VER_PROD_REV_STR'}/;\r
+    $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name}    = $filestem;\r
+        \r
+    # Test the unix find command:\r
+    if (! exists $config->{CommandLine}->{Directories}->{unixfind}->{path})    {\r
+        $config->{CommandLine}->{Directories}->{unixfind}->{path}   = "C:\\tools\\cygwin\\bin";\r
+        }\r
+    local $unixfind     = $config->{CommandLine}->{Directories}->{unixfind}->{path};\r
+\r
+    local $savedPATH    = $ENV{PATH};\r
+    $ENV{PATH}          = $unixfind.";".$savedPATH;\r
+print "PATH now $ENV{PATH}\n";\r
+    print "Info -- chdir to ".`cd`."\n"         if ($verbose);\r
+    if (-e "a.tmp") {!system("rm a.tmp")        or die "Fatal -- Couldn't clean temporary file a.tmp.";}\r
+    !system("find . -name a.tmp > b.tmp 2>&1")  or die "Fatal -- find test failed.";\r
+    local $filesize = -s "b.tmp";\r
+    $ENV{PATH} = $savedPATH;\r
+    if ($filesize > 0) {\r
+        die "Fatal -- $unixfind does not appear to be a path to a UNIX find command.";\r
+        }\r
+\r
 ##-- Assemble configuration from config file and command line.\r
 \r
     my $sw = $switches[0]->{repository}->{value};\r
@@ -228,6 +301,11 @@ sub main {
         }\r
     $switches[0]->{repository}->{value} = $rverb;   ## Save canonicalized repository verb.\r
 \r
+    if ( ($rverb =~ /checkout/) && $clean) {\r
+        print "Warning -- Because sources afe being checked out, make clean will not be run.\n";\r
+        $clean  = $switches[0]->{clean}->{value}    = 0;\r
+        }\r
+\r
     my $wd  = $src."\\pismere";\r
 \r
     if (! ($rverb =~ /skip/)) {\r
@@ -316,6 +394,15 @@ sub main {
         if ($verbose) {print "Info -- svn command: $svncmd\n";}\r
         !system($svncmd)            or die "Fatal -- command \"$svncmd\" failed; return code $?\n";\r
 \r
+        if ($rverb =~ /checkout/) {        \r
+            if (! $bOutputCleaned) {                    ## In case somebody cleaned $out before us.\r
+                if (-d $out)    {!system("rm -rf $out/*")   or die "Fatal -- Couldn't clean $out."}    ## Clean output directory.\r
+                else            {mkdir($out);}\r
+                $bOutputCleaned = 1;\r
+                }\r
+            zipXML($config->{Stages}->{FetchSources}, $config); ## Make zips.\r
+            }\r
+\r
         if ($verbose) {print "Info -- ***   End fetching sources.\n";}\r
         }\r
 ##-- End  repository action.\r
@@ -345,31 +432,7 @@ sub main {
             }\r
         \r
         # Prune any unwanted directories before the build:\r
-        if (exists $config->{Stages}->{Make}->{Prunes}) {\r
-            # Use Unix find instead of Windows find.  Save PATH so we can restore it when we're done:\r
-            my $savedPATH    = $ENV{PATH};\r
-            $ENV{PATH} = $config->{CommandLine}->{Directories}->{unixfind}->{path}.";".$savedPATH;\r
-            my $prunes = $config->{Stages}->{Make}->{Prunes};\r
-            my $j=0;\r
-            print "Info -- Processing prunes in ".`cd`."\n"     if ($verbose);\r
-print Dumper($prunes);\r
-            while ($prunes->{Prune}->[$j]) {\r
-                if (exists $prunes->{Prune}->[$j]->{name}) {    ## Don't process dummy entry!\r
-                    my $prune    = $prunes->{Prune}->[$j]->{name};\r
-                    my $flags    = $prunes->{Prune}->[$j]->{flags};\r
-                    $flags = "" if (!$flags);\r
-                    my $cmd    = "find . -".$flags."name $prune";\r
-                    print "Info -- Looking for filenames containing $prune\n";\r
-                    my $list = `$cmd`;\r
-                    foreach $target (split("\n", $list)) {\r
-                        print "Info -- Pruning $target\n" if ($verbose);\r
-                        ! system("rm -rf $target")              or die "Unable to prune $target";\r
-                        }\r
-                    }\r
-                $j++;\r
-                }\r
-            $ENV{PATH} = $savedPATH;\r
-            }\r
+        pruneFiles($config->{Stages}->{Make}, $config);\r
 \r
         if ($verbose) {print "Info -- ***   End preparing for build.\n";}\r
     \r
@@ -385,7 +448,7 @@ print Dumper($prunes);
         \r
         chdir("$wd\\athena") or die "Fatal -- couldn't chdir to source directory $wd\\athena\n";\r
         print "Info -- chdir to ".`cd`."\n"         if ($verbose);\r
-        my $dbgswitch = ($switches[0]->{debug}->{value}) ? " " : "NODEBUG=1";\r
+        local $dbgswitch = ($switches[0]->{debug}->{value}) ? " " : "NODEBUG=1";\r
         !system("perl ../scripts/build.pl --softdirs --nolog $buildtarget $dbgswitch")    or die "Fatal -- build $buildtarget failed.";\r
             \r
         chdir("$wd")               or die "Fatal -- couldn't chdir to $wd.";\r
@@ -401,76 +464,21 @@ print Dumper($prunes);
 ##-- Make action.\r
         \r
 ##++ Package action:\r
-    if ($switches[0]->{nopackage}->{value}) {      ## If /clean, this switch will have been cleared.\r
-        print "Info -- *** Skipping packaging.";\r
-        if (-d $out) {\r
+    if ($switches[0]->{nopackage}->{value}) {      ## If /clean, nopackage will be set.\r
+        print "Info -- *** Skipping packaging.\n";\r
+        if ((-d $out) && ! $bOutputCleaned) {\r
             print "Warning -- *** Output directory $out will not be cleaned.\n";\r
             }\r
         }\r
     else {\r
         if ($verbose) {print "Info -- *** Begin prepackage.\n";}\r
 \r
-        if (-d $out) {\r
-            !system("rm -rf $out/*")            or die "Fatal -- Couldn't clean $out.";\r
-            }\r
-        else {\r
-            mkdir($out)                         or die "Fatal -- Couldn't create $out.";\r
-            }\r
-\r
-        # We read in the version information to be able to update the site-local files in the install build areas:\r
-        local $version_path = $config->{Stages}->{Package}->{Config}->{Paths}->{Versions}->{path};\r
-        open(DAT, "$src/$version_path")     or die "Could not open $version_path.";\r
-        @raw = <DAT>;\r
-        close DAT;\r
-        foreach $line (@raw) {\r
-            chomp $line;\r
-            if ($line =~ /#define/) {                   # Process #define lines:\r
-                $line =~ s/#define//;                   # Remove #define token\r
-                $line =~ s/^\s+//;                      #  and leading & trailing whitespace\r
-                $line =~ s/\s+$//;\r
-                local @qr = split("\"", $line);         # Try splitting with quotes\r
-                if (exists $qr[1]) {\r
-                    $qr[0] =~ s/^\s+//;                 #  Clean up whitespace\r
-                    $qr[0] =~ s/\s+$//;\r
-                    $config->{Versions}->{$qr[0]} = $qr[1]; # Save string\r
-                    }\r
-                else {                                  # No quotes, so\r
-                    local @ar = split(" ", $line);      #  split with space\r
-                    $ar[0] =~ s/^\s+//;                 #  Clean up whitespace\r
-                    $ar[0] =~ s/\s+$//;\r
-                    $config->{Versions}->{$ar[0]} = $ar[1]; # and  save numeric value\r
-                    }\r
-                }\r
+        if (! $bOutputCleaned) {                        ## In case somebody cleaned $out before us.\r
+            if (-d $out)    {!system("rm -rf $out/*")   or die "Fatal -- Couldn't clean $out."}    ## Clean output directory.\r
+            else            {mkdir($out);}\r
+            $bOutputCleaned = 1;\r
             }\r
 \r
-        # Check that the versions we will need for site-local have been defined:\r
-        my @required_versions = ('VER_PROD_MAJOR', 'VER_PROD_MINOR', 'VER_PROD_REV', \r
-                                 'VER_PROD_MAJOR_STR', 'VER_PROD_MINOR_STR', 'VER_PROD_REV_STR', \r
-                                 'VER_PRODUCTNAME_STR');\r
-        my $requirements_met = 1;\r
-        my $first_missing = 0;\r
-        my $error_list = "";\r
-        foreach my $required (@required_versions) {\r
-            if (! exists $config->{Versions}->{$required}) {\r
-                $requirements_met = 0;\r
-                if (!$first_missing) {\r
-                    $first_missing = 1;\r
-                    $error_list = "Fatal -- The following version(s) are not defined in $src/$version_path.\n";\r
-                    }\r
-                $error_list .= "$required\n";\r
-                }\r
-            }\r
-        if (!$requirements_met) {\r
-            print $error_list;\r
-            exit(0);\r
-            }\r
-        # Apply any of these tags to filestem:\r
-        my $filestem    = $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name};\r
-        $filestem       =~ s/%VERSION_MAJOR%/$config->{Versions}->{'VER_PROD_MAJOR_STR'}/;\r
-        $filestem       =~ s/%VERSION_MINOR%/$config->{Versions}->{'VER_PROD_MINOR_STR'}/;\r
-        $filestem       =~ s/%VERSION_PATCH%/$config->{Versions}->{'VER_PROD_REV_STR'}/;\r
-        $config->{Stages}->{PostPackage}->{Config}->{FileStem}->{name}    = $filestem;\r
-        \r
         # The build results are copied to a staging area, where the packager expects to find them.\r
         #  We put the staging area in the fixed area .../pismere/staging.\r
         my $prepackage  = $config->{Stages}->{PrePackage};\r
@@ -525,11 +533,13 @@ print Dumper($prunes);
 \r
         # Run the script on site-local.wxi:\r
         !system("sed -f $tmpfile site-local-tagged.wxi > site-local.wxi")   or die "Fatal -- Couldn't modify site-local.wxi.";\r
+        !system("rm site-local-tagged.wxi")                                 or die "Fatal -- Couldn't remove site-local-tagged.wsi.";\r
 \r
         # Now update site-local.nsi:\r
         chdir "..\\nsis";\r
         print "Info -- chdir to ".`cd`."\n"                                 if ($verbose);\r
         !system("sed -f ..\\wix\\$tmpfile site-local-tagged.nsi > b.tmp")   or die "Fatal -- Couldn't modify site-local.wxi.";\r
+        !system("rm site-local-tagged.nsi")                                 or die "Fatal -- Couldn't remove site-local-tagged.nsi.";\r
         # Add DEBUG or RELEASE:\r
         if ($switches[0]->{debug}->{value}) {                               ## debug build\r
             !system("echo !define DEBUG >> b.tmp")                          or die "Fatal -- Couldn't modify b.tmp.";    \r
@@ -546,6 +556,8 @@ print Dumper($prunes);
 \r
         # Run the script on nsi-includes-tagged.nsi:\r
         !system("sed -f ..\\wix\\$tmpfile nsi-includes-tagged.nsi > nsi-includes.nsi")  or die "Fatal -- Couldn't modify nsi-includes.nsi.";\r
+        !system("rm nsi-includes-tagged.nsi")                               or die "Fatal -- Couldn't remove nsi-includes-tagged.nsi.";\r
+        !system("rm ..\\wix\\$tmpfile")                                     or die "Fatal -- Couldn't remove $tmpfile.";\r
 \r
         if ($verbose) {print "Info -- ***   End prepackage.\n";}\r
         \r
@@ -563,22 +575,8 @@ print Dumper($prunes);
         !system("makensis kfw.nsi")                 or die "Error -- executable installer build failed.";\r
 \r
 # Begin packaging extra items:\r
-        chdir($src);        # Now in <src>.\r
-        print "Info -- chdir to ".`cd`."\n"         if ($verbose);\r
-        if (-d $out)    {!system("rm -rf $out/*")   or die "Fatal -- Couldn't clean $out."}    ## Clean output directory.\r
-        else            {mkdir($out);}\r
-        my $zipsXML = $config->{Stages}->{PostPackage}->{Zips};\r
-\r
-        local $i = 0;\r
-            while ($zipsXML->{Zip}[$i]) {\r
-                local $zip = $zipsXML->{Zip}[$i];\r
-                makeZip($zip, $config)  if (exists $zip->{name});       ## Ignore dummy entry.\r
-                chdir("$out");\r
-                print "Info -- chdir to ".`cd`."\n" if ($verbose);\r
-                system("rm -rf ziptemp")            if (-d "ziptemp");  ## Clean up any temp directory.\r
-                $i++;                    \r
-            }                                       ## End zip in xml.\r
-                \r
+        zipXML($config->{Stages}->{PostPackage}, $config);                      ## Make zips.\r
+\r
         $config->{Stages}->{PostPackage}->{CopyList}->{Config} = $config->{Stages}->{PostPackage}->{Config};    ## Use the post package config.\r
         $config->{Stages}->{PostPackage}->{CopyList}->{Config}->{From}->{root}  = "$src\\pismere";\r
         $config->{Stages}->{PostPackage}->{CopyList}->{Config}->{To}->{root}    = "$out";\r
index 41c569e6c1826f9f4e5979f1e263c7a769bcef73..c3b35f5c1aec4a2665e3c9c60c5524cb49a879c2 100644 (file)
                <File name="xpprof32.dll"   from="staging\bin\i386"     to="\bin\i386\" />\r
                <File name="xpprof32.pdb"   from="staging\bin\i386"     to="\bin\i386\" />\r
 \r
-<!--           \r
-target\bin\i386\%bldtype%\ w2k\netidmgr.exe\r
-target\bin\i386\%bldtype%\ w2k\netidmgr.pdb\r
-target\bin\i386\%bldtype%\ w2k\nidmgr32.dll\r
-target\bin\i386\%bldtype%\ w2k\nidmgr32.pdb\r
--->\r
-\r
+               <File name="netidmgr.exe"   from="staging\bin\i386\w2k"     to="\bin\i386\w2k" />\r
+               <File name="netidmgr.pdb"   from="staging\bin\i386\w2k"     to="\bin\i386\w2k" />\r
+               <File name="nidmgr32.dll"   from="staging\bin\i386\w2k"     to="\bin\i386\w2k" />\r
+               <File name="nidmgr32.pdb"   from="staging\bin\i386\w2k"     to="\bin\i386\w2k" />\r
        </Files>
\ No newline at end of file
index 4162386df402eeab6b846820ff52cde51176dd22..12215ddcd66e1ade352fd4317672a8c7f0800b92 100644 (file)
@@ -1,9 +1,10 @@
 #!perl -w\r
 \r
 #use strict;\r
-use Data::Dumper;\r
 \r
-require "signfiles.pl";\r
+require "prunefiles.pl";\r
+\r
+use Data::Dumper;\r
 \r
 sub makeZip {\r
     local ($zip, $config)   = @_;\r
@@ -64,40 +65,20 @@ sub makeZip {
     print "Info -- chdir to ".`cd`."\n"         if ($verbose);\r
 \r
     # Prune any unwanted files or directories from the directory we're about to zip:\r
-    if (exists $zip->{Prunes}) {\r
-        # Use Unix find instead of Windows find.  Save PATH so we can restore it when we're done:\r
-        local $savedPATH    = $ENV{PATH};\r
-        $ENV{PATH}          = $config->{CommandLine}->{Directories}->{unixfind}->{path}.";".$savedPATH;\r
-        local $prunes       = $zip->{Prunes};\r
-        local $j            = 0;\r
-        print "Info -- Processing prunes in ".`cd`."\n" if ($verbose);\r
-        while ($prunes->{Prune}->[$j]) {\r
-            if (exists $prunes->{Prune}->[$j]->{name}) {        ## Don't process dummy entry!\r
-                local $prune    = $prunes->{Prune}->[$j]->{name};\r
-                local $flags    = $prunes->{Prune}->[$j]->{flags};\r
-                $flags = "" if (!$flags);\r
-                local $cmd    = "find . -".$flags."name $prune";\r
-                print "Info -- Looking for filenames containing $prune\n";\r
-                local $list = `$cmd`;\r
-                foreach $target (split("\n", $list)) {\r
-                    print "Info -- Pruning $target\n" if ($verbose);\r
-                    !system("rm -rf $target")   or die "Error -- Couldn't remove $target.";;\r
-                    }\r
-                }\r
-            $j++;\r
-            }\r
-        $ENV{PATH} = $savedPATH;\r
-        }\r
+    pruneFiles($zip, $config);\r
                     \r
     local $zipfile  = Archive::Zip->new();\r
     local $topdir   = $zip->{topdir};\r
     $topdir         =~ s/%filestem%/$filestem/g;\r
     $zipfile->addTree('.', $topdir);\r
-    if (-e $zipname)    {!system("rm -f $zipname")     or die "Error -- Couldn't remove $zipname.";}\r
+    if (-e $zipname)    {!system("rm -f $zipname") or die "Error -- Couldn't remove $zipname.";}\r
     $zipfile->writeToFileNamed($zipname);\r
-    print "Info -- created $out\\$zipname.\n"  if ($verbose);\r
-       # move .zip from <out>/ziptemp to <out>.\r
-    !system("mv -f $zipname     ..")                    or die "Error -- Couldn't move $zipname to ..";\r
+    chdir("$out");\r
+    print "Info -- chdir to ".`cd`."\n"         if ($verbose);\r
+    # move .zip from <out>/ziptemp to <out>.\r
+    !system("mv -f ziptemp/$zipname .")         or die "Error -- Couldn't move $zipname to ..";\r
+    system("rm -rf ziptemp")                    if (-d "ziptemp");  ## Clean up any temp directory.\r
+    print "Info -- created $out\\$zipname.\n"   if ($verbose);\r
     }\r
     \r
 return 1;
\ No newline at end of file
diff --git a/src/windows/build/pruneFiles.pl b/src/windows/build/pruneFiles.pl
new file mode 100644 (file)
index 0000000..2406c77
--- /dev/null
@@ -0,0 +1,34 @@
+#!perl -w\r
+\r
+#use strict;\r
+require "makeZip.pl";\r
+\r
+sub pruneFiles {\r
+    local ($xml, $config)   = @_;\r
+    local $prunes   = $xml->{Prunes};\r
+    if (! $prunes) {return 0;}\r
+    \r
+    # Use Unix find instead of Windows find.  Save PATH so we can restore it when we're done:\r
+    local $savedPATH    = $ENV{PATH};\r
+    $ENV{PATH}          = $config->{CommandLine}->{Directories}->{unixfind}->{path}.";".$savedPATH;\r
+    local $j=0;\r
+    print "Info -- Processing prunes in ".`cd`."\n"     if ($verbose);\r
+    while ($prunes->{Prune}->[$j]) {\r
+        if (exists $prunes->{Prune}->[$j]->{name}) {    ## Don't process dummy entry!\r
+            local $prune    = $prunes->{Prune}->[$j]->{name};\r
+            local $flags    = $prunes->{Prune}->[$j]->{flags};\r
+            $flags = "" if (!$flags);\r
+            local $cmd    = "find . -".$flags."name $prune";\r
+            print "Info -- Looking for filenames containing $prune\n";\r
+            local $list = `$cmd`;\r
+            foreach $target (split("\n", $list)) {\r
+                print "Info -- Pruning $target\n" if ($verbose);\r
+                ! system("rm -rf $target")              or die "Unable to prune $target";\r
+                }\r
+            }\r
+        $j++;\r
+        }\r
+    $ENV{PATH} = $savedPATH;\r
+    }\r
+\r
+return 1;\r
index d62b962b2db381252834231436acfa363cae9f59..5ef7f48fb0ee2e355b49790d67b870c7f57cca28 100644 (file)
@@ -8,7 +8,8 @@
                <File name="relnotes.html"  from="doc\kerberos"                 to="doc" />\r
                <File name="kclient.rtf"    from="athena\auth\krb4\kclient\doc" to="doc" />\r
 \r
-               <File  name="*.h"           from="staging\inc"                  to="inc" />\r
+               <File  name="*.*"           from="staging\inc"                  to="inc" />\r
+               <!-- loadfuncs.c is deliberately here.  Otherwise, *.h would work. -->\r
 \r
                <File  name="*.*"           from="staging\install\nsis"         to="install\nsis\" />\r
         <!-- We'll clean up the exes in the target directory in a later step.  -->\r
                <File  name="*.*"           from="staging\install\wix"          to="install\wix\" />\r
         <!-- We'll clean up the msi in the target directory in a later step.  -->\r
 \r
-               <File  name="custom.cpp"    from="staging\install\wix\custom"   to="install\wix\custom\" />\r
-               <File  name="custom.h"      from="staging\install\wix\custom"   to="install\wix\custom\" />\r
-\r
-               <!-- Why not license.rtf? -->\r
-\r
                <File  name="*.lib"         from="staging\lib\i386"             to="lib\i386\" />\r
        \r
        </Files>
\ No newline at end of file
diff --git a/src/windows/build/zipXML.pl b/src/windows/build/zipXML.pl
new file mode 100644 (file)
index 0000000..0c50e96
--- /dev/null
@@ -0,0 +1,21 @@
+#!perl -w\r
+\r
+#use strict;\r
+require "makeZip.pl";\r
+\r
+use Data::Dumper;\r
+\r
+sub zipXML {\r
+    local ($xml, $config)   = @_;\r
+    my $zipsXML = $xml->{Zips};\r
+    if (! $zipsXML) {return 0;}\r
+\r
+    local $i    = 0;\r
+    while ($zipsXML->{Zip}[$i]) {\r
+        local $zip = $zipsXML->{Zip}[$i];\r
+        makeZip($zip, $config)  if (exists $zip->{name});       ## Ignore dummy entry.\r
+        $i++;                    \r
+        }                                       ## End zip in xml.\r
+    }\r
+    \r
+return 1;\r