Back out bug 147776, checksetup.pl now fills localconfig.old with a cryptic message
git-svn-id: svn://10.0.0.236/trunk@243406 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
db81d625d8
commit
b4d8a19355
@ -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 },
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user