adding a special tar for macos
[feisty_meow.git] / scripts / archival / shared_snarfer.pl
index 5d1ac7377b1090978732d32bb2ffb31627f07b1b..7b2b7ecdcc0d03eda2d0ef9f2bcd48fa9565e9cf 100644 (file)
@@ -36,7 +36,7 @@ $TMP =~ s/\\/\//g;  # fix the temp variable for ms-winders.
 @missing_log = ();
 
 # these files are considered unimportant and won't be included in the archive.
-@junk_file_list = ("*~", "*.$$$", "3rdparty", "*.aps", "*.bak", "binaries",
+@junk_file_list = ("*~", "*.$$$", "*.aps", "*.bak", "binaries",
     "*.bsc", "*.cgl", "*.csm", "CVS", "Debug", "*.dll", "*.err", "*.exe",
     "generated_*", "*.git", "*.glb", "inprogress", "ipch", "*.llm",
     "*.log", "*.lnk",
@@ -57,7 +57,12 @@ for (local($i) = 0; $i < scalar(@junk_file_list); $i++) {
 
 # generic versions work on sane OSes.
 $find_tool = which('find');
-$tar_tool = which('tar');
+# for mac, try to match gnu tar first.
+$tar_tool = which('gtar');
+if ( ! -f "$tar_tool" ) {
+  # fall back to regular tar.
+  $tar_tool = which('tar');
+}
 #print "find tool: $find_tool\n";
 #print "tar tool: $tar_tool\n";
 
@@ -168,7 +173,7 @@ sub snarfer {
   chdir($root);
 
   local($outcome) = 0;
-  my @lines = qx( $find_tool "$subdir" @extra_flags "-type" "f" );
+  my @lines = qx( $find_tool "$subdir" @extra_flags "-follow" "-type" "f" );
 #  if ( ($! != 0) || ($? != 0) ) {
 #    die("failure to find files in $subdir"); 
 #  }
@@ -184,6 +189,8 @@ sub snarfer {
   }
 
   local($outcome) = 0xff & system $tar_tool, 
+#hmmm: trying to dereference symbolic links and stop missing stuff.
+"-h",
       "-rf", &canonicalize($target_file), @excludes,
       "--files-from=" . &canonicalize($temp_file);
   if ($outcome) {
@@ -225,7 +232,11 @@ sub snarf_file_list {
     }
     local($outcome) = 0xff & system $tar_tool,
 #"--directory=" . "$root",
-        @extra_flags, "-rf", &canonicalize($target_file), @excludes, $i;
+
+#hmmm: trying to dereference symbolic links and stop missing stuff.
+"-h",
+        @extra_flags, 
+"-rf", &canonicalize($target_file), @excludes, $i;
     if ($outcome) { die("failure to archive"); }
   }
   chdir("$currdir");
@@ -382,7 +393,12 @@ sub backup_number {
   print NUM_PREFIX $number_prefix;
   close(NUM_PREFIX);
 
-  $outcome = 0xff & system $tar_tool, "-rf",
+  $outcome = 0xff & system $tar_tool, 
+
+#hmmm: trying to dereference symbolic links and stop missing stuff.
+"-h",
+
+"-rf",
       &canonicalize($target_file), &canonicalize($prefix_file);
   if ($outcome) { die("failure to archive"); }
   unlink($prefix_file);