From 47d78d46b86fcf78724252db680213ffb372823b Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Fri, 18 Jan 2008 05:15:24 +0000 Subject: Back out bug 147776, checksetup.pl now fills localconfig.old with a cryptic message --- Bugzilla/Install/Filesystem.pm | 3 -- Bugzilla/Install/Localconfig.pm | 78 ++++++++++++++++------------------------- 2 files changed, 30 insertions(+), 51 deletions(-) (limited to 'Bugzilla') diff --git a/Bugzilla/Install/Filesystem.pm b/Bugzilla/Install/Filesystem.pm index 5291c106c..a24dc28ca 100644 --- a/Bugzilla/Install/Filesystem.pm +++ b/Bugzilla/Install/Filesystem.pm @@ -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 }, diff --git a/Bugzilla/Install/Localconfig.pm b/Bugzilla/Install/Localconfig.pm index 3722fa7c6..7df9e0736 100644 --- a/Bugzilla/Install/Localconfig.pm +++ b/Bugzilla/Install/Localconfig.pm @@ -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 <{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 <$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 <