]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Back out bug 147776, checksetup.pl now fills localconfig.old with a cryptic message
authorlpsolit%gmail.com <>
Fri, 18 Jan 2008 05:15:24 +0000 (05:15 +0000)
committerlpsolit%gmail.com <>
Fri, 18 Jan 2008 05:15:24 +0000 (05:15 +0000)
Bugzilla/Install/Filesystem.pm
Bugzilla/Install/Localconfig.pm

index 5291c106cdc73596cd36078d58f4f37e8c2af332..a24dc28ca72228362570c18b51e3fe0e3af23471 100644 (file)
@@ -64,7 +64,6 @@ sub FILESYSTEM {
     my $libdir        = bz_locations()->{'libpath'};
     my $extlib        = bz_locations()->{'ext_libpath'};
     my $skinsdir      = bz_locations()->{'skinsdir'};
-    my $localconfig   = bz_locations()->{'localconfig'};
 
     my $ws_group      = Bugzilla->localconfig->{'webservergroup'};
 
@@ -117,8 +116,6 @@ sub FILESYSTEM {
         'sanitycheck.pl'  => { perms => $ws_executable },
         'install-module.pl' => { perms => $owner_executable },
 
-        "$localconfig.old" => { perms => $owner_readable },
-
         'docs/makedocs.pl'   => { perms => $owner_executable },
         'docs/rel_notes.txt' => { perms => $ws_readable },
         'docs/README.docs'   => { perms => $owner_readable },
index 3722fa7c6ef8161ab64a2997a4d4c9b6844d93a6..7df9e073617bf9305e89f7533f29bc513552b5a5 100644 (file)
@@ -187,10 +187,12 @@ EOT
     },
 );
 
-# When you read the symbol table of a package in Perl (like we do to
-# get the localconfig variables), there are some symbols that are always
-# there and should be ignored.
-use constant IGNORE_SYMBOLS => qw(_ INC __ANON__);
+use constant OLD_LOCALCONFIG_VARS => qw(
+    mysqlpath
+    contenttypes
+    pages
+    severities platforms opsys priorities
+);
 
 sub read_localconfig {
     my ($include_deprecated) = @_;
@@ -219,24 +221,10 @@ Please fix the error in your 'localconfig' file. Alternately, rename your
 EOT
         }
 
-        # First we have to get the whole symbol table
-        my $safe_root = $s->root;
-        my %safe_package;
-        { no strict 'refs'; %safe_package = %{$safe_root . "::"}; }
-        # And now we read the contents of every var in the symbol table
-        # except those from IGNORE_SYMBOLS. If $include_deprecated is false,
-        # we also skip any vars that aren't specifically listed in
-        # LOCALCONFIG_VARS.
-        my @standard_vars = map($_->{name}, LOCALCONFIG_VARS);
-        foreach my $symbol (keys %safe_package) {
-            if (!$include_deprecated) {
-                next if !grep($_ eq $symbol, @standard_vars);
-            }
-            next if grep($_ eq $symbol, IGNORE_SYMBOLS);
-            # Perl 5.10 imports a lot of symbols that we want to ignore that
-            # all contain "::".
-            next if $symbol =~ /::/;
-            my $glob = $s->varglob($symbol);
+        my @vars = map($_->{name}, LOCALCONFIG_VARS);
+        push(@vars, OLD_LOCALCONFIG_VARS) if $include_deprecated;
+        foreach my $var (@vars) {
+            my $glob = $s->varglob($var);
             # We can't get the type of a variable out of a Safe automatically.
             # We can only get the glob itself. So we figure out its type this
             # way, by trying first a scalar, then an array, then a hash.
@@ -246,13 +234,13 @@ EOT
             # fine since as I write this all modern localconfig vars are 
             # actually scalars.
             if (defined $$glob) {
-                $localconfig{$symbol} = $$glob;
+                $localconfig{$var} = $$glob;
             }
             elsif (defined @$glob) {
-                $localconfig{$symbol} = \@$glob;
+                $localconfig{$var} = \@$glob;
             }
             elsif (defined %$glob) {
-                $localconfig{$symbol} = \%$glob;
+                $localconfig{$var} = \%$glob;
             }
         }
     }
@@ -302,6 +290,11 @@ sub update_localconfig {
         }
     }
 
+    my @old_vars;
+    foreach my $name (OLD_LOCALCONFIG_VARS) {
+        push(@old_vars, $name) if defined $localconfig->{$name};
+    }
+
     if (!$localconfig->{'interdiffbin'} && $output) {
         print <<EOT
 
@@ -314,41 +307,30 @@ as well), you should install patchutils from:
 EOT
     }
 
-    my @old_vars;
-    foreach my $var (keys %$localconfig) {
-        push(@old_vars, $var) if !grep($_->{name} eq $var, LOCALCONFIG_VARS);
-    }
-
     my $filename = bz_locations->{'localconfig'};
 
-    # Move any custom or old variables into a separate file.
     if (scalar @old_vars) {
-        my $filename_old = "$filename.old";
-        open(my $old_file, ">>$filename_old") || die "$filename_old: $!";
-        local $Data::Dumper::Purity = 1;
-        foreach my $var (@old_vars) {
-            print $old_file Data::Dumper->Dump([$localconfig->{$var}], 
-                                               ["*$var"]) . "\n\n";
-        }
-        close $old_file;
         my $oldstuff = join(', ', @old_vars);
         print <<EOT
 
 The following variables are no longer used in $filename, and
-have been moved to $filename_old: $oldstuff
+should be removed: $oldstuff
 
 EOT
     }
 
-    # Re-write localconfig
-    open(my $fh, ">$filename") || die "$filename: $!";
-    foreach my $var (LOCALCONFIG_VARS) {
-        print $fh "\n", $var->{desc},
-                  Data::Dumper->Dump([$localconfig->{$var->{name}}],
-                                     ["*$var->{name}"]);
-   }
+    if (scalar @new_vars) {
+        my $filename = bz_locations->{'localconfig'};
+        my $fh = new IO::File($filename, '>>') || die "$filename: $!";
+        $fh->seek(0, SEEK_END);
+        foreach my $var (LOCALCONFIG_VARS) {
+            if (grep($_ eq $var->{name}, @new_vars)) {
+                print $fh "\n", $var->{desc},
+                      Data::Dumper->Dump([$localconfig->{$var->{name}}], 
+                                         ["*$var->{name}"]);
+            }
+        }
 
-    if (@new_vars) {
         my $newstuff = join(', ', @new_vars);
         print <<EOT;