summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Install/Localconfig.pm
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2008-01-18 06:15:24 +0100
committerlpsolit%gmail.com <>2008-01-18 06:15:24 +0100
commit47d78d46b86fcf78724252db680213ffb372823b (patch)
tree472545330c30abe0a680034625c4ca8f8a0229b8 /Bugzilla/Install/Localconfig.pm
parentfb679ee670725eaef88f2983b68ac91542d3a5f6 (diff)
downloadbugzilla-47d78d46b86fcf78724252db680213ffb372823b.tar.gz
bugzilla-47d78d46b86fcf78724252db680213ffb372823b.tar.xz
Back out bug 147776, checksetup.pl now fills localconfig.old with a cryptic message
Diffstat (limited to 'Bugzilla/Install/Localconfig.pm')
-rw-r--r--Bugzilla/Install/Localconfig.pm78
1 files changed, 30 insertions, 48 deletions
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 <<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;