Browse Source

new quiet level -qq for apt to hide progress output

-q is for logging and -qqq (old -qq) basically kills every output expect
errors, so there should be a way of declaring a middleground in which
the output of e.g. 'update' isn't as verbose, but still shows some
things. The test framework was actually making use of by accident as it
ignored the quiet level in output setup for apt before.
Eventually we should figure out some better quiet levels for all tools…
tags/debian/1.1_exp15
David Kalnischkies 6 years ago
parent
commit
2b0660b537
12 changed files with 51 additions and 39 deletions
  1. +1
    -1
      apt-pkg/contrib/progress.cc
  2. +2
    -0
      apt-private/acqprogress.cc
  3. +9
    -2
      apt-private/private-download.cc
  4. +10
    -2
      apt-private/private-download.h
  5. +1
    -2
      apt-private/private-install.cc
  6. +7
    -8
      apt-private/private-update.cc
  7. +3
    -10
      cmdline/apt-get.cc
  8. +1
    -3
      cmdline/apt-helper.cc
  9. +12
    -6
      cmdline/apt.cc
  10. +2
    -2
      test/integration/test-apt-cli-update
  11. +1
    -1
      test/integration/test-apt-update-nofallback
  12. +2
    -2
      test/integration/test-apt-update-rollback

+ 1
- 1
apt-pkg/contrib/progress.cc View File

@@ -132,7 +132,7 @@ OpTextProgress::OpTextProgress(Configuration &Config) :
{
if (Config.FindI("quiet",0) >= 1 || Config.FindB("quiet::NoUpdate", false) == true)
NoUpdate = true;
if (Config.FindI("quiet",0) >= 2)
if (Config.FindI("quiet",0) >= 2 || Config.FindB("quiet::NoProgress", false) == true)
NoDisplay = true;
}
/*}}}*/


+ 2
- 0
apt-private/acqprogress.cc View File

@@ -37,6 +37,8 @@ AcqTextStatus::AcqTextStatus(std::ostream &out, unsigned int &ScreenWidth,unsign
// testcases use it to disable pulses without disabling other user messages
if (Quiet == 0 && _config->FindB("quiet::NoUpdate", false) == true)
this->Quiet = 1;
if (Quiet < 2 && _config->FindB("quiet::NoProgress", false) == true)
this->Quiet = 2;
}
/*}}}*/
// AcqTextStatus::Start - Downloading has started /*{{{*/


+ 9
- 2
apt-private/private-download.cc View File

@@ -10,6 +10,7 @@

#include <apt-private/private-output.h>
#include <apt-private/private-download.h>
#include <apt-private/acqprogress.h>

#include <fstream>
#include <string>
@@ -39,8 +40,8 @@ bool CheckAuth(pkgAcquire& Fetcher, bool const PromptUser)

return AuthPrompt(UntrustedList, PromptUser);
}
bool AuthPrompt(std::vector<std::string> const &UntrustedList, bool const PromptUser)
/*}}}*/
bool AuthPrompt(std::vector<std::string> const &UntrustedList, bool const PromptUser)/*{{{*/
{
ShowList(c2out,_("WARNING: The following packages cannot be authenticated!"), UntrustedList,
[](std::string const&) { return true; },
@@ -148,3 +149,9 @@ bool CheckFreeSpaceBeforeDownload(std::string const &Dir, unsigned long long Fet
return true;
}
/*}}}*/

aptAcquireWithTextStatus::aptAcquireWithTextStatus() : pkgAcquire::pkgAcquire(),
Stat(std::cout, ScreenWidth, _config->FindI("quiet",0))
{
SetLog(&Stat);
}

+ 10
- 2
apt-private/private-download.h View File

@@ -1,13 +1,14 @@
#ifndef APT_PRIVATE_DOWNLOAD_H
#define APT_PRIVATE_DOWNLOAD_H

#include <apt-pkg/acquire.h>
#include <apt-pkg/macros.h>

#include <apt-private/acqprogress.h>

#include <string>
#include <vector>

class pkgAcquire;

// Check if all files in the fetcher are authenticated
APT_PUBLIC bool CheckAuth(pkgAcquire& Fetcher, bool const PromptUser);

@@ -19,4 +20,11 @@ APT_PUBLIC bool AcquireRun(pkgAcquire &Fetcher, int const PulseInterval, bool *

APT_PUBLIC bool CheckFreeSpaceBeforeDownload(std::string const &Dir, unsigned long long FetchBytes);

class APT_PUBLIC aptAcquireWithTextStatus : public pkgAcquire
{
AcqTextStatus Stat;
public:
aptAcquireWithTextStatus();
};

#endif

+ 1
- 2
apt-private/private-install.cc View File

@@ -134,8 +134,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask, bool Safety)
return false;

// Create the download object
AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
pkgAcquire Fetcher(&Stat);
aptAcquireWithTextStatus Fetcher;
if (_config->FindB("APT::Get::Print-URIs", false) == true)
{
// force a hashsum for compatibility reasons


+ 7
- 8
apt-private/private-update.cc View File

@@ -13,6 +13,7 @@

#include <apt-private/acqprogress.h>
#include <apt-private/private-cachefile.h>
#include <apt-private/private-download.h>
#include <apt-private/private-output.h>
#include <apt-private/private-update.h>

@@ -37,20 +38,15 @@ bool DoUpdate(CommandLine &CmdL)
return false;
pkgSourceList *List = Cache.GetSourceList();

// Create the progress
AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));

// Just print out the uris an exit if the --print-uris flag was used
if (_config->FindB("APT::Get::Print-URIs") == true)
{
// force a hashsum for compatibility reasons
_config->CndSet("Acquire::ForceHash", "md5sum");

// get a fetcher
pkgAcquire Fetcher(&Stat);

// Populate it with the source selection and get all Indexes
// Populate it with the source selection and get all Indexes
// (GetAll=true)
aptAcquireWithTextStatus Fetcher;
if (List->GetIndexes(&Fetcher,true) == false)
return false;

@@ -70,7 +66,10 @@ bool DoUpdate(CommandLine &CmdL)

// do the work
if (_config->FindB("APT::Get::Download",true) == true)
ListUpdate(Stat, *List);
{
AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
ListUpdate(Stat, *List);
}

// Rebuild the cache.
if (_config->FindB("pkgCacheFile::Generate", true) == true)


+ 3
- 10
cmdline/apt-get.cc View File

@@ -595,14 +595,12 @@ static bool DoDownload(CommandLine &CmdL)
if (verset.empty() == true)
return false;

AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
pkgAcquire Fetcher(&Stat);

pkgRecords Recs(Cache);
pkgSourceList *SrcList = Cache.GetSourceList();

// reuse the usual acquire methods for deb files, but don't drop them into
// the usual directories - keep everything in the current directory
aptAcquireWithTextStatus Fetcher;
std::vector<std::string> storefile(verset.size());
std::string const cwd = SafeGetCWD();
_config->Set("Dir::Cache::Archives", cwd);
@@ -693,10 +691,6 @@ static bool DoSource(CommandLine &CmdL)
if (_error->PendingError() == true)
return false;

// Create the download object
AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
pkgAcquire Fetcher(&Stat);

std::unique_ptr<DscFile[]> Dsc(new DscFile[CmdL.FileSize()]);
// insert all downloaded uris into this set to avoid downloading them
@@ -711,6 +705,7 @@ static bool DoSource(CommandLine &CmdL)
bool const dscOnly = _config->FindB("APT::Get::Dsc-Only", false);

// Load the requestd sources into the fetcher
aptAcquireWithTextStatus Fetcher;
unsigned J = 0;
std::vector<std::string> UntrustedList;
for (const char **I = CmdL.FileList + 1; *I != 0; I++, J++)
@@ -1368,13 +1363,11 @@ static bool DoChangelog(CommandLine &CmdL)
CmdL.FileList + 1, APT::CacheSetHelper::CANDIDATE, helper);
if (verset.empty() == true)
return false;
pkgAcquire Fetcher;
AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
Fetcher.SetLog(&Stat);

bool const downOnly = _config->FindB("APT::Get::Download-Only", false);
bool const printOnly = _config->FindB("APT::Get::Print-URIs", false);

aptAcquireWithTextStatus Fetcher;
for (APT::VersionList::const_iterator Ver = verset.begin();
Ver != verset.end();
++Ver)


+ 1
- 3
cmdline/apt-helper.cc View File

@@ -50,9 +50,7 @@ static bool DoDownloadFile(CommandLine &CmdL)
if (CmdL.FileSize() <= 2)
return _error->Error(_("Must specify at least one pair url/filename"));

AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
pkgAcquire Fetcher(&Stat);

aptAcquireWithTextStatus Fetcher;
size_t fileind = 0;
std::vector<std::string> targetfiles;
while (fileind + 2 <= CmdL.FileSize())


+ 12
- 6
cmdline/apt.cc View File

@@ -39,10 +39,10 @@

static bool ShowHelp(CommandLine &, CommandLine::DispatchWithHelp const * Cmds)
{
ioprintf(c1out, "%s %s (%s)\n", PACKAGE, PACKAGE_VERSION, COMMON_ARCH);
ioprintf(std::cout, "%s %s (%s)\n", PACKAGE, PACKAGE_VERSION, COMMON_ARCH);

// FIXME: generate from CommandLine
c1out <<
std::cout <<
_("Usage: apt [options] command\n"
"\n"
"CLI for apt.\n")
@@ -87,13 +87,19 @@ int main(int argc, const char *argv[]) /*{{{*/
{nullptr, nullptr, nullptr}
};

// FIXME: Those ignore commandline configuration like -q
InitSignals();
InitOutput();

CommandLine CmdL;
ParseCommandLine(CmdL, Cmds, "apt", &_config, &_system, argc, argv, ShowHelp);

int const quiet = _config->FindI("quiet", 0);
if (quiet == 2)
{
_config->CndSet("quiet::NoProgress", true);
_config->Set("quiet", 1);
}

InitSignals();
InitOutput();

CheckIfCalledByScript(argc, argv);
CheckIfSimulateMode(CmdL);



+ 2
- 2
test/integration/test-apt-cli-update View File

@@ -15,8 +15,8 @@ setupaptarchive --no-update

testfailuremsg 'E: The update command takes no arguments' apt update arguments

testsuccessequal "1 package can be upgraded. Run 'apt list --upgradable' to see it." apt update -q
testsuccessequal "1 package can be upgraded. Run 'apt list --upgradable' to see it." apt update -qq

cp dpkg.status rootdir/var/lib/dpkg/status
insertinstalledpackage 'foo' 'all' '2.0'
testsuccessequal 'All packages are up to date.' apt update -q
testsuccessequal 'All packages are up to date.' apt update -qq

+ 1
- 1
test/integration/test-apt-update-nofallback View File

@@ -42,7 +42,7 @@ N: See apt-secure(8) manpage for repository creation and user configuration deta

assert_repo_is_intact()
{
testsuccessequal "foo/unstable 2.0 all" apt list -q
testsuccessequal "foo/unstable 2.0 all" apt list -qq
testsuccess aptget install -y -s foo
testfailure aptget install -y evil
testsuccess aptget source foo --print-uris


+ 2
- 2
test/integration/test-apt-update-rollback View File

@@ -38,7 +38,7 @@ start_with_good_inrelease() {
create_fresh_archive
testsuccess aptget update
listcurrentlistsdirectory > lists.before
testsuccessequal 'old/unstable 1.0 all' apt list -q
testsuccessequal 'old/unstable 1.0 all' apt list -qq
}

test_inrelease_to_new_inrelease() {
@@ -48,7 +48,7 @@ test_inrelease_to_new_inrelease() {
add_new_package '+1hour'
testsuccess aptget update -o Debug::Acquire::Transaction=1
testsuccessequal 'new/unstable 1.0 all
old/unstable 1.0 all' apt list -q
old/unstable 1.0 all' apt list -qq
}

test_inrelease_to_broken_hash_reverts_all() {


Loading…
Cancel
Save