summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2020-03-06 12:57:38 +0000
committerJulian Andres Klode <jak@debian.org>2020-03-06 12:57:38 +0000
commit44d8409b9c8399577d7652649862be2591b1ff64 (patch)
treecf511b030725b1a7bb97f3c402ff5df773b84382
parent9f36e3cf3fe158fd52c662b5c8c6f6cab327fa06 (diff)
parent1b81f6bd13bb31e59da3f53cfdc7caab43abf887 (diff)
Merge branch 'pu/improve-locking-msgs' into 'master'
Pu/improve locking msgs See merge request apt-team/apt!111
-rw-r--r--apt-pkg/contrib/fileutl.cc6
-rw-r--r--apt-pkg/contrib/progress.cc16
-rw-r--r--apt-pkg/contrib/progress.h1
-rw-r--r--apt-pkg/deb/debsystem.cc7
-rw-r--r--doc/examples/configure-index2
5 files changed, 25 insertions, 7 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index db5463be2..045dbe17d 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -302,13 +302,15 @@ int GetLock(string File,bool Errors)
if (Errors == true)
{
+ // We only do the lookup in the if ((errno == EACCES || errno == EAGAIN))
+ // case, so we do not need to show the errno strerrr here...
if (fl.l_pid != -1)
{
auto name = GetProcessName(fl.l_pid);
if (name.empty())
- _error->Errno("open", _("Could not get lock %s. It is held by process %d"), File.c_str(), fl.l_pid);
+ _error->Error(_("Could not get lock %s. It is held by process %d"), File.c_str(), fl.l_pid);
else
- _error->Errno("open", _("Could not get lock %s. It is held by process %d (%s)"), File.c_str(), fl.l_pid, name.c_str());
+ _error->Error(_("Could not get lock %s. It is held by process %d (%s)"), File.c_str(), fl.l_pid, name.c_str());
}
else
_error->Errno("open", _("Could not get lock %s"), File.c_str());
diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc
index 971198270..03f88d4ce 100644
--- a/apt-pkg/contrib/progress.cc
+++ b/apt-pkg/contrib/progress.cc
@@ -91,7 +91,10 @@ void OpProgress::SubProgress(unsigned long long SubTotal,const string &Op,
an update the display would be swamped and the system much slower.
This provides an upper bound on the update rate. */
bool OpProgress::CheckChange(float Interval)
-{
+{
+ // For absolute progress, we assume every call is relevant.
+ if (_config->FindB("APT::Internal::OpProgress::Absolute", false))
+ return true;
// New major progress indication
if (Op != LastOp)
{
@@ -199,9 +202,14 @@ void OpTextProgress::Update()
Write(S);
cout << endl;
}
-
- // Print the spinner
- snprintf(S,sizeof(S),_("%c%s... %u%%"),'\r',Op.c_str(),(unsigned int)Percent);
+
+ // Print the spinner. Absolute progress shows us a time progress.
+ if (_config->FindB("APT::Internal::OpProgress::Absolute", false) && Total != -1llu)
+ snprintf(S, sizeof(S), _("%c%s... %llu/%llus"), '\r', Op.c_str(), Current, Total);
+ else if (_config->FindB("APT::Internal::OpProgress::Absolute", false))
+ snprintf(S, sizeof(S), _("%c%s... %llus"), '\r', Op.c_str(), Current);
+ else
+ snprintf(S, sizeof(S), _("%c%s... %u%%"), '\r', Op.c_str(), (unsigned int)Percent);
Write(S);
OldOp = Op;
diff --git a/apt-pkg/contrib/progress.h b/apt-pkg/contrib/progress.h
index 4d118ee99..d6a698af3 100644
--- a/apt-pkg/contrib/progress.h
+++ b/apt-pkg/contrib/progress.h
@@ -28,6 +28,7 @@
class Configuration;
class APT_PUBLIC OpProgress
{
+ friend class OpTextProgress;
unsigned long long Current;
unsigned long long Total;
unsigned long long Size;
diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc
index da7ae2e42..6904879b6 100644
--- a/apt-pkg/deb/debsystem.cc
+++ b/apt-pkg/deb/debsystem.cc
@@ -79,6 +79,11 @@ debSystem::~debSystem()
checking of the updates directory. */
static int GetLockMaybeWait(std::string const &file, OpProgress *Progress, int &timeoutSec)
{
+ struct ScopedAbsoluteProgress
+ {
+ ScopedAbsoluteProgress() { _config->Set("APT::Internal::OpProgress::Absolute", true); }
+ ~ScopedAbsoluteProgress() { _config->Set("APT::Internal::OpProgress::Absolute", false); }
+ } _scopedAbsoluteProgress;
int fd = -1;
if (timeoutSec == 0 || Progress == nullptr)
return GetLock(file);
@@ -102,7 +107,7 @@ static int GetLockMaybeWait(std::string const &file, OpProgress *Progress, int &
_error->PopMessage(poppedError);
_error->RevertToStack();
- strprintf(completeError, _("Waiting for cache lock (%s)"), poppedError.c_str());
+ strprintf(completeError, _("Waiting for cache lock: %s"), poppedError.c_str());
sleep(1);
Progress->OverallProgress(i, timeoutSec, 0, completeError);
}
diff --git a/doc/examples/configure-index b/doc/examples/configure-index
index 4e0bd57ae..bf9efc109 100644
--- a/doc/examples/configure-index
+++ b/doc/examples/configure-index
@@ -826,3 +826,5 @@ dir::filelistdir "<STRING>";
dir::dpkg::tupletable "<FILE>";
dir::dpkg::triplettable "<FILE>";
dir::dpkg::cputable "<FILE>";
+
+APT::Internal::OpProgress::Absolute "<BOOL>";