Commit 1c2902ec authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

Bug 578587: Make checksetup be way quieter when creating a new install

r=mkanat, a=mkanat (module owner)
parent 32b3964d
...@@ -37,7 +37,7 @@ use base qw(DBI::db); ...@@ -37,7 +37,7 @@ use base qw(DBI::db);
use Bugzilla::Constants; use Bugzilla::Constants;
use Bugzilla::Install::Requirements; use Bugzilla::Install::Requirements;
use Bugzilla::Install::Util qw(vers_cmp); use Bugzilla::Install::Util qw(vers_cmp install_string);
use Bugzilla::Install::Localconfig; use Bugzilla::Install::Localconfig;
use Bugzilla::Util; use Bugzilla::Util;
use Bugzilla::Error; use Bugzilla::Error;
...@@ -423,9 +423,13 @@ sub bz_setup_database { ...@@ -423,9 +423,13 @@ sub bz_setup_database {
$self->_bz_init_schema_storage(); $self->_bz_init_schema_storage();
my @desired_tables = $self->_bz_schema->get_table_list(); my @desired_tables = $self->_bz_schema->get_table_list();
my $bugs_exists = $self->bz_table_info('bugs');
if (!$bugs_exists) {
print install_string('db_table_setup'), "\n";
}
foreach my $table_name (@desired_tables) { foreach my $table_name (@desired_tables) {
$self->bz_add_table($table_name); $self->bz_add_table($table_name, { silently => !$bugs_exists });
} }
} }
...@@ -437,15 +441,29 @@ sub bz_enum_initial_values { ...@@ -437,15 +441,29 @@ sub bz_enum_initial_values {
sub bz_populate_enum_tables { sub bz_populate_enum_tables {
my ($self) = @_; my ($self) = @_;
my $any_severities = $self->selectrow_array(
'SELECT 1 FROM bug_severity ' . $self->sql_limit(1));
print install_string('db_enum_setup'), "\n " if !$any_severities;
my $enum_values = $self->bz_enum_initial_values(); my $enum_values = $self->bz_enum_initial_values();
while (my ($table, $values) = each %$enum_values) { while (my ($table, $values) = each %$enum_values) {
$self->_bz_populate_enum_table($table, $values); $self->_bz_populate_enum_table($table, $values);
} }
print "\n" if !$any_severities;
} }
sub bz_setup_foreign_keys { sub bz_setup_foreign_keys {
my ($self) = @_; my ($self) = @_;
# profiles_activity was the first table to get foreign keys,
# so if it doesn't have them, then we're setting up FKs
# for the first time, and should be quieter about it.
my $activity_fk = $self->bz_fk_info('profiles_activity', 'userid');
if (!$activity_fk) {
print get_text('install_fk_setup'), "\n";
}
# We use _bz_schema because bz_add_table has removed all REFERENCES # We use _bz_schema because bz_add_table has removed all REFERENCES
# items from _bz_real_schema. # items from _bz_real_schema.
my @tables = $self->_bz_schema->get_table_list(); my @tables = $self->_bz_schema->get_table_list();
...@@ -458,7 +476,7 @@ sub bz_setup_foreign_keys { ...@@ -458,7 +476,7 @@ sub bz_setup_foreign_keys {
$add_fks{$column} = $def->{REFERENCES}; $add_fks{$column} = $def->{REFERENCES};
} }
} }
$self->bz_add_fks($table, \%add_fks); $self->bz_add_fks($table, \%add_fks, { silently => !$activity_fk });
} }
} }
...@@ -516,7 +534,7 @@ sub bz_add_fk { ...@@ -516,7 +534,7 @@ sub bz_add_fk {
} }
sub bz_add_fks { sub bz_add_fks {
my ($self, $table, $column_fks) = @_; my ($self, $table, $column_fks, $options) = @_;
my %add_these; my %add_these;
foreach my $column (keys %$column_fks) { foreach my $column (keys %$column_fks) {
...@@ -525,9 +543,13 @@ sub bz_add_fks { ...@@ -525,9 +543,13 @@ sub bz_add_fks {
my $fk = $column_fks->{$column}; my $fk = $column_fks->{$column};
$self->_check_references($table, $column, $fk); $self->_check_references($table, $column, $fk);
$add_these{$column} = $fk; $add_these{$column} = $fk;
if (Bugzilla->usage_mode == USAGE_MODE_CMDLINE
and !$options->{silently})
{
print get_text('install_fk_add', print get_text('install_fk_add',
{ table => $table, column => $column, fk => $fk }) { table => $table, column => $column, fk => $fk }),
. "\n" if Bugzilla->usage_mode == USAGE_MODE_CMDLINE; "\n";
}
} }
return if !scalar(keys %add_these); return if !scalar(keys %add_these);
...@@ -650,12 +672,12 @@ sub bz_add_index_raw { ...@@ -650,12 +672,12 @@ sub bz_add_index_raw {
} }
sub bz_add_table { sub bz_add_table {
my ($self, $name) = @_; my ($self, $name, $options) = @_;
my $table_exists = $self->bz_table_info($name); my $table_exists = $self->bz_table_info($name);
if (!$table_exists) { if (!$table_exists) {
$self->_bz_add_table_raw($name); $self->_bz_add_table_raw($name, $options);
my $table_def = dclone($self->_bz_schema->get_table_abstract($name)); my $table_def = dclone($self->_bz_schema->get_table_abstract($name));
my %fields = @{$table_def->{FIELDS}}; my %fields = @{$table_def->{FIELDS}};
...@@ -686,10 +708,13 @@ sub bz_add_table { ...@@ -686,10 +708,13 @@ sub bz_add_table {
# Returns: nothing # Returns: nothing
# #
sub _bz_add_table_raw { sub _bz_add_table_raw {
my ($self, $name) = @_; my ($self, $name, $options) = @_;
my @statements = $self->_bz_schema->get_table_ddl($name); my @statements = $self->_bz_schema->get_table_ddl($name);
print "Adding new table $name ...\n" if (Bugzilla->usage_mode == USAGE_MODE_CMDLINE
if Bugzilla->usage_mode == USAGE_MODE_CMDLINE; and !$options->{silently})
{
print install_string('db_table_new', { table => $name }), "\n";
}
$self->do($_) foreach (@statements); $self->do($_) foreach (@statements);
} }
...@@ -1181,7 +1206,7 @@ sub _bz_init_schema_storage { ...@@ -1181,7 +1206,7 @@ sub _bz_init_schema_storage {
$self->_bz_add_table_raw('bz_schema'); $self->_bz_add_table_raw('bz_schema');
} }
print "Initializing the new Schema storage...\n"; print install_string('db_schema_init'), "\n";
my $sth = $self->prepare("INSERT INTO bz_schema " my $sth = $self->prepare("INSERT INTO bz_schema "
." (schema_data, version) VALUES (?,?)"); ." (schema_data, version) VALUES (?,?)");
$sth->bind_param(1, $store_me, $self->BLOB_TYPE); $sth->bind_param(1, $store_me, $self->BLOB_TYPE);
...@@ -1284,14 +1309,13 @@ sub _bz_populate_enum_table { ...@@ -1284,14 +1309,13 @@ sub _bz_populate_enum_table {
# If the table is empty... # If the table is empty...
if (!$table_size) { if (!$table_size) {
print " $table";
my $insert = $self->prepare( my $insert = $self->prepare(
"INSERT INTO $sql_table (value,sortkey) VALUES (?,?)"); "INSERT INTO $sql_table (value,sortkey) VALUES (?,?)");
print "Inserting values into the '$table' table:\n";
my $sortorder = 0; my $sortorder = 0;
my $maxlen = max(map(length($_), @$valuelist)) + 2; my $maxlen = max(map(length($_), @$valuelist)) + 2;
foreach my $value (@$valuelist) { foreach my $value (@$valuelist) {
$sortorder += 100; $sortorder += 100;
printf "%-${maxlen}s sortkey: $sortorder\n", "'$value'";
$insert->execute($value, $sortorder); $insert->execute($value, $sortorder);
} }
} }
......
...@@ -1065,11 +1065,12 @@ this code does. ...@@ -1065,11 +1065,12 @@ this code does.
sub _bz_build_schema_from_disk { sub _bz_build_schema_from_disk {
my ($self) = @_; my ($self) = @_;
print "Building Schema object from database...\n";
my $schema = $self->_bz_schema->get_empty_schema(); my $schema = $self->_bz_schema->get_empty_schema();
my @tables = $self->bz_table_list_real(); my @tables = $self->bz_table_list_real();
if (@tables) {
print "Building Schema object from database...\n";
}
foreach my $table (@tables) { foreach my $table (@tables) {
$schema->add_table($table); $schema->add_table($table);
my @columns = $self->bz_table_columns_real($table); my @columns = $self->bz_table_columns_real($table);
......
...@@ -389,8 +389,11 @@ sub create { ...@@ -389,8 +389,11 @@ sub create {
my ($params) = @_; my ($params) = @_;
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
print get_text('install_group_create', { name => $params->{name} }) . "\n" my $silently = delete $params->{silently};
if Bugzilla->usage_mode == USAGE_MODE_CMDLINE; if (Bugzilla->usage_mode == USAGE_MODE_CMDLINE and !$silently) {
print get_text('install_group_create', { name => $params->{name} }),
"\n";
}
$dbh->bz_start_transaction(); $dbh->bz_start_transaction();
......
...@@ -174,12 +174,21 @@ use constant DEFAULT_COMPONENT => { ...@@ -174,12 +174,21 @@ use constant DEFAULT_COMPONENT => {
}; };
sub update_settings { sub update_settings {
my $dbh = Bugzilla->dbh;
# If we're setting up settings for the first time, we want to be quieter.
my $any_settings = $dbh->selectrow_array(
'SELECT 1 FROM setting ' . $dbh->sql_limit(1));
if (!$any_settings) {
print get_text('install_setting_setup'), "\n";
}
my %settings = %{SETTINGS()}; my %settings = %{SETTINGS()};
foreach my $setting (keys %settings) { foreach my $setting (keys %settings) {
add_setting($setting, add_setting($setting,
$settings{$setting}->{options}, $settings{$setting}->{options},
$settings{$setting}->{default}, $settings{$setting}->{default},
$settings{$setting}->{subclass}); $settings{$setting}->{subclass}, undef,
!$any_settings);
} }
} }
...@@ -188,11 +197,19 @@ sub update_system_groups { ...@@ -188,11 +197,19 @@ sub update_system_groups {
$dbh->bz_start_transaction(); $dbh->bz_start_transaction();
# If there is no editbugs group, this is the first time we're
# adding groups.
my $editbugs_exists = new Bugzilla::Group({ name => 'editbugs' });
if (!$editbugs_exists) {
print get_text('install_groups_setup'), "\n";
}
# Create most of the system groups # Create most of the system groups
foreach my $definition (SYSTEM_GROUPS) { foreach my $definition (SYSTEM_GROUPS) {
my $exists = new Bugzilla::Group({ name => $definition->{name} }); my $exists = new Bugzilla::Group({ name => $definition->{name} });
if (!$exists) { if (!$exists) {
$definition->{isbuggroup} = 0; $definition->{isbuggroup} = 0;
$definition->{silently} = !$editbugs_exists;
my $inherited_by = delete $definition->{inherited_by}; my $inherited_by = delete $definition->{inherited_by};
my $created = Bugzilla::Group->create($definition); my $created = Bugzilla::Group->create($definition);
# Each group in inherited_by is automatically a member of this # Each group in inherited_by is automatically a member of this
......
...@@ -125,7 +125,8 @@ sub new { ...@@ -125,7 +125,8 @@ sub new {
############################### ###############################
sub add_setting { sub add_setting {
my ($name, $values, $default_value, $subclass, $force_check) = @_; my ($name, $values, $default_value, $subclass, $force_check,
$silently) = @_;
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
my $exists = _setting_exists($name); my $exists = _setting_exists($name);
...@@ -146,7 +147,7 @@ sub add_setting { ...@@ -146,7 +147,7 @@ sub add_setting {
undef, $name); undef, $name);
} }
} }
else { elsif (!$silently) {
print get_text('install_setting_new', { name => $name }) . "\n"; print get_text('install_setting_new', { name => $name }) . "\n";
} }
$dbh->do(q{INSERT INTO setting (name, default_value, is_enabled, subclass) $dbh->do(q{INSERT INTO setting (name, default_value, is_enabled, subclass)
......
...@@ -666,12 +666,21 @@ ...@@ -666,12 +666,21 @@
that have been [% IF action == 'delete' %]deleted[% ELSE %]set to NULL[% END %]: that have been [% IF action == 'delete' %]deleted[% ELSE %]set to NULL[% END %]:
[%+ values.join(', ') FILTER html %] [%+ values.join(', ') FILTER html %]
[% ELSIF message_tag == "install_fk_setup" %]
Setting up foreign keys...
[% ELSIF message_tag == "install_group_create" %] [% ELSIF message_tag == "install_group_create" %]
Creating group [% name FILTER html %]... Creating group [% name FILTER html %]...
[% ELSIF message_tag == "install_groups_setup" %]
Creating default groups...
[% ELSIF message_tag == "install_setting_new" %] [% ELSIF message_tag == "install_setting_new" %]
Adding a new user setting called '[% name FILTER html %]' Adding a new user setting called '[% name FILTER html %]'
[% ELSIF message_tag == "install_setting_setup" %]
Setting up user preferences...
[% ELSIF message_tag == "install_table_drop" %] [% ELSIF message_tag == "install_table_drop" %]
Dropping the '[% name FILTER html %]' table... Dropping the '[% name FILTER html %]' table...
......
...@@ -44,6 +44,10 @@ EOT ...@@ -44,6 +44,10 @@ EOT
COMMANDS TO INSTALL REQUIRED MODULES (You *must* run all these commands COMMANDS TO INSTALL REQUIRED MODULES (You *must* run all these commands
and then re-run this script): and then re-run this script):
EOT EOT
db_enum_setup => "Setting up choices for standard drop-down fields:",
db_schema_init => "Initializing bz_schema...",
db_table_new => "Adding new table ##table##...",
db_table_setup => "Creating tables...",
done => 'done.', done => 'done.',
extension_must_return_name => <<END, extension_must_return_name => <<END,
##file## returned ##returned##, which is not a valid name for an extension. ##file## returned ##returned##, which is not a valid name for an extension.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment