Merge branch 'issue-1528' into calamares
- don't blank out the text in the progress bar if the job provides no message -- just leave the last message shown. FIXES #1527 (There's no point in having more than one copy of those initcpio* modules, so just use the prettyName()). - when a job starts, look for status, then description, then name so that **something** is shown as text in the progress bar. - give *shellprocess* the possibility to change its own labels through translations in the config file. #FIXES #1528
This commit is contained in:
commit
5895f3fb71
2
CHANGES
2
CHANGES
@ -20,6 +20,8 @@ This release contains contributions from (alphabetically by first name):
|
|||||||
a particular kind of partition table. (thanks Gaël)
|
a particular kind of partition table. (thanks Gaël)
|
||||||
- The *partition* module is a little more resilient to variations
|
- The *partition* module is a little more resilient to variations
|
||||||
in btrfs notation from os-prober.
|
in btrfs notation from os-prober.
|
||||||
|
- The *shellprocess* module now supports having a different progress
|
||||||
|
message (other than "Shell Processes Job") through the config file.
|
||||||
|
|
||||||
|
|
||||||
# 3.2.31 (2020-10-06) #
|
# 3.2.31 (2020-10-06) #
|
||||||
|
@ -177,6 +177,18 @@ private:
|
|||||||
const auto& jobitem = m_runningJobs->at( m_jobIndex );
|
const auto& jobitem = m_runningJobs->at( m_jobIndex );
|
||||||
progress = ( jobitem.cumulative + jobitem.weight * percentage ) / m_overallQueueWeight;
|
progress = ( jobitem.cumulative + jobitem.weight * percentage ) / m_overallQueueWeight;
|
||||||
message = jobitem.job->prettyStatusMessage();
|
message = jobitem.job->prettyStatusMessage();
|
||||||
|
// In progress reports at the start of a job (e.g. when the queue
|
||||||
|
// starts the job, or if the job itself reports 0.0) be more
|
||||||
|
// accepting in what gets reported: jobs with no status fall
|
||||||
|
// back to description and name, whichever is non-empty.
|
||||||
|
if ( percentage == 0.0 && message.isEmpty() )
|
||||||
|
{
|
||||||
|
message = jobitem.job->prettyDescription();
|
||||||
|
if ( message.isEmpty() )
|
||||||
|
{
|
||||||
|
message = jobitem.job->prettyName();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -127,7 +127,7 @@ System::runCommand( System::RunLocation location,
|
|||||||
|
|
||||||
if ( ( location == System::RunLocation::RunInTarget ) && ( !gs || !gs->contains( "rootMountPoint" ) ) )
|
if ( ( location == System::RunLocation::RunInTarget ) && ( !gs || !gs->contains( "rootMountPoint" ) ) )
|
||||||
{
|
{
|
||||||
cWarning() << "No rootMountPoint in global storage";
|
cWarning() << "No rootMountPoint in global storage, while RunInTarget is specified";
|
||||||
return ProcessResult::Code::NoWorkingDirectory;
|
return ProcessResult::Code::NoWorkingDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,8 +191,11 @@ void
|
|||||||
ExecutionViewStep::updateFromJobQueue( qreal percent, const QString& message )
|
ExecutionViewStep::updateFromJobQueue( qreal percent, const QString& message )
|
||||||
{
|
{
|
||||||
m_progressBar->setValue( int( percent * m_progressBar->maximum() ) );
|
m_progressBar->setValue( int( percent * m_progressBar->maximum() ) );
|
||||||
|
if ( !message.isEmpty() )
|
||||||
|
{
|
||||||
m_label->setText( message );
|
m_label->setText( message );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExecutionViewStep::onLeave()
|
ExecutionViewStep::onLeave()
|
||||||
|
@ -34,6 +34,10 @@ ShellProcessJob::~ShellProcessJob() {}
|
|||||||
QString
|
QString
|
||||||
ShellProcessJob::prettyName() const
|
ShellProcessJob::prettyName() const
|
||||||
{
|
{
|
||||||
|
if ( m_name )
|
||||||
|
{
|
||||||
|
return m_name->get();
|
||||||
|
}
|
||||||
return tr( "Shell Processes Job" );
|
return tr( "Shell Processes Job" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,6 +79,16 @@ ShellProcessJob::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
{
|
{
|
||||||
cWarning() << "No script given for ShellProcessJob" << moduleInstanceKey();
|
cWarning() << "No script given for ShellProcessJob" << moduleInstanceKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool labels_ok = false;
|
||||||
|
auto labels = CalamaresUtils::getSubMap( configurationMap, "i18n", labels_ok );
|
||||||
|
if ( labels_ok )
|
||||||
|
{
|
||||||
|
if ( labels.contains( "name" ) )
|
||||||
|
{
|
||||||
|
m_name = std::make_unique< CalamaresUtils::Locale::TranslatedString >( labels, "name" );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CALAMARES_PLUGIN_FACTORY_DEFINITION( ShellProcessJobFactory, registerPlugin< ShellProcessJob >(); )
|
CALAMARES_PLUGIN_FACTORY_DEFINITION( ShellProcessJobFactory, registerPlugin< ShellProcessJob >(); )
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include "CppJob.h"
|
#include "CppJob.h"
|
||||||
#include "DllMacro.h"
|
#include "DllMacro.h"
|
||||||
|
|
||||||
|
#include "locale/TranslatableConfiguration.h"
|
||||||
#include "utils/CommandList.h"
|
#include "utils/CommandList.h"
|
||||||
#include "utils/PluginFactory.h"
|
#include "utils/PluginFactory.h"
|
||||||
|
|
||||||
@ -37,6 +38,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr< CalamaresUtils::CommandList > m_commands;
|
std::unique_ptr< CalamaresUtils::CommandList > m_commands;
|
||||||
|
std::unique_ptr< CalamaresUtils::Locale::TranslatedString > m_name;
|
||||||
};
|
};
|
||||||
|
|
||||||
CALAMARES_PLUGIN_FACTORY_DECLARATION( ShellProcessJobFactory )
|
CALAMARES_PLUGIN_FACTORY_DECLARATION( ShellProcessJobFactory )
|
||||||
|
@ -24,16 +24,56 @@
|
|||||||
#
|
#
|
||||||
# The value of *script* may be:
|
# The value of *script* may be:
|
||||||
# - a single string; this is one command that is executed.
|
# - a single string; this is one command that is executed.
|
||||||
# - a list of strings; these are executed one at a time, by
|
# - a single object (this is not useful).
|
||||||
|
# - a list of items; these are executed one at a time, by
|
||||||
# separate shells (/bin/sh -c is invoked for each command).
|
# separate shells (/bin/sh -c is invoked for each command).
|
||||||
# - an object, specifying a key *command* and (optionally)
|
# Each list item may be:
|
||||||
|
# - a single string; this is one command that is executed.
|
||||||
|
# - a single object, specifying a key *command* and (optionally)
|
||||||
# a key *timeout* to set the timeout for this specific
|
# a key *timeout* to set the timeout for this specific
|
||||||
# command differently from the global setting.
|
# command differently from the global setting.
|
||||||
|
#
|
||||||
|
# Using a single object is not useful because the same effect can
|
||||||
|
# be obtained with a single string and a global timeout, but when
|
||||||
|
# there are multiple commands to execute, one of them might have
|
||||||
|
# a different timeout than the others.
|
||||||
|
#
|
||||||
|
# To change the description of the job, set the *name* entries in *i18n*.
|
||||||
---
|
---
|
||||||
dontChroot: false
|
dontChroot: false
|
||||||
timeout: 10
|
timeout: 10
|
||||||
|
|
||||||
|
# Script may be a single string (because false returns an error exit
|
||||||
|
# code, this will trigger a failure in the installation):
|
||||||
|
#
|
||||||
|
# script: "/usr/bin/false"
|
||||||
|
|
||||||
|
# Script may be a list of strings (because false returns an error exit
|
||||||
|
# code, **but** the command starts with a "-", the error exit is
|
||||||
|
# ignored and installation continues):
|
||||||
|
#
|
||||||
|
# script:
|
||||||
|
# - "-/usr/bin/false"
|
||||||
|
# - "/bin/ls"
|
||||||
|
# - "/usr/bin/true"
|
||||||
|
|
||||||
|
# Script may be a lit of items (if the touch command fails, it is
|
||||||
|
# ignored; the slowloris command has a different timeout from the
|
||||||
|
# other commands in the list):
|
||||||
script:
|
script:
|
||||||
- "-touch @@ROOT@@/tmp/thingy"
|
- "-touch @@ROOT@@/tmp/thingy"
|
||||||
- "/usr/bin/false"
|
- "/usr/bin/true"
|
||||||
- command: "/usr/local/bin/slowloris"
|
- command: "/usr/local/bin/slowloris"
|
||||||
timeout: 3600
|
timeout: 3600
|
||||||
|
|
||||||
|
# You can change the description of the job (as it is displayed in the
|
||||||
|
# progress bar during installation) by defining an *i18n* key, which
|
||||||
|
# has a *name* field and optionally, translations as *name[lang]*.
|
||||||
|
#
|
||||||
|
# Without a translation here, the default name from the source code
|
||||||
|
# is used, "Shell Processes Job".
|
||||||
|
#
|
||||||
|
# i18n:
|
||||||
|
# name: "Shell process"
|
||||||
|
# name[nl]: "Schelpenpad"
|
||||||
|
# name[en_GB]: "Just a moment"
|
||||||
|
Loading…
Reference in New Issue
Block a user