From 1eb1836f4b5397497bd34f0cf516e6e4e73117bf Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 15 Jun 2015 16:41:43 +0200 Subject: show item ID in Hit, Ign and Err lines as well Again, consistency is the main sellingpoint here, but this way it is now also easier to explain that some files move through different stages and lines are printed for them hence multiple times: That is a bit hard to believe if the number is changing all the time, but now that it keeps consistent. --- po/ar.po | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'po/ar.po') diff --git a/po/ar.po b/po/ar.po index e2b179d0e..3e71fef80 100644 --- a/po/ar.po +++ b/po/ar.po @@ -1555,20 +1555,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " +#, c-format +msgid "Hit:%lu %s" msgstr "" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "جلب:" +#, c-format +msgid "Get:%lu %s" +msgstr "جلب:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "تجاهل" +#, c-format +msgid "Ign:%lu %s" +msgstr "تجاهل:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "خطأ" +#, c-format +msgid "Err:%lu %s" +msgstr "خطأ:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format -- cgit v1.2.3-70-g09d2 From a0c19a217ca2ed38ae0ecb4b8d2d4f8c4e53289f Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 12 Jul 2015 13:41:12 +0200 Subject: implement a more generic ShowList method apt-get is displaying various lists of package names, which until now it was building as a string before passing it to ShowList, which inserted linebreaks at fitting points and showed a title if needed, but it never really understood what it was working with. With the help of C++11 the new generic knows not only what it works with, but generates the list on the fly rather than asking for it and potentially discarding parts of the input (= the non-default verbose display). It also doubles as a test for how usable the CacheSets are with C++11. (Not all callers are adapted yet.) Git-Dch: Ignore --- apt-pkg/cacheset.h | 99 ++++++-- apt-private/private-cachefile.cc | 61 ++--- apt-private/private-cachefile.h | 59 +++-- apt-private/private-cacheset.h | 16 +- apt-private/private-install.cc | 69 +++--- apt-private/private-output.cc | 263 ++++++++++----------- apt-private/private-output.h | 67 +++++- po/apt-all.pot | 2 +- po/ar.po | 4 +- po/ast.po | 4 +- po/bg.po | 4 +- po/bs.po | 2 +- po/ca.po | 4 +- po/cs.po | 4 +- po/cy.po | 4 +- po/da.po | 4 +- po/de.po | 4 +- po/dz.po | 2 +- po/el.po | 4 +- po/es.po | 4 +- po/eu.po | 4 +- po/fi.po | 4 +- po/fr.po | 4 +- po/gl.po | 4 +- po/he.po | 4 +- po/hu.po | 4 +- po/it.po | 4 +- po/ja.po | 4 +- po/km.po | 4 +- po/ko.po | 4 +- po/ku.po | 2 +- po/lt.po | 4 +- po/mr.po | 2 +- po/nb.po | 4 +- po/ne.po | 4 +- po/nl.po | 4 +- po/nn.po | 4 +- po/pl.po | 4 +- po/pt.po | 4 +- po/pt_BR.po | 4 +- po/ro.po | 4 +- po/ru.po | 4 +- po/sk.po | 4 +- po/sl.po | 4 +- po/sv.po | 4 +- po/th.po | 4 +- po/tl.po | 4 +- po/tr.po | 4 +- po/uk.po | 4 +- po/vi.po | 4 +- po/zh_CN.po | 4 +- po/zh_TW.po | 4 +- test/integration/test-apt-get-autoremove | 26 ++ .../test-bug-596498-trusted-unsigned-repo | 9 + .../integration/test-bug-604222-new-and-autoremove | 26 ++ .../test-bug-613420-new-garbage-dependency | 16 ++ .../test-bug-675449-essential-are-protected | 14 ++ test/integration/test-kernel-helper-autoremove | 16 ++ 58 files changed, 570 insertions(+), 341 deletions(-) (limited to 'po/ar.po') diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h index 03f3605a1..0b9b9441c 100644 --- a/apt-pkg/cacheset.h +++ b/apt-pkg/cacheset.h @@ -17,6 +17,7 @@ #include #endif #include +#include #include #include #include @@ -210,16 +211,15 @@ private: void * const d; }; /*}}}*/ // Iterator templates for our Containers /*{{{*/ -template class Container_iterator_base : +template class Container_iterator_base : public std::iterator::iterator_category, container_iterator>, public Interface::iterator_base { protected: container_iterator _iter; - inline virtual typename Container::value_type getType(void) const APT_OVERRIDE { return *_iter; } public: explicit Container_iterator_base(container_iterator i) : _iter(i) {} - inline typename Container::value_type operator*(void) const { return *_iter; } + inline container_value operator*(void) const { return this->getType(); } operator container_iterator(void) const { return _iter; } inline iterator_type& operator++() { ++_iter; return static_cast(*this); } inline iterator_type operator++(int) { iterator_type tmp(*this); operator++(); return tmp; } @@ -241,48 +241,56 @@ public: friend Master; }; template class Container_const_iterator : - public Container_iterator_base, typename Container::const_iterator> + public Container_iterator_base, typename Container::const_iterator, typename Container::value_type> { typedef Container_const_iterator iterator_type; typedef typename Container::const_iterator container_iterator; public: explicit Container_const_iterator(container_iterator i) : - Container_iterator_base(i) {} + Container_iterator_base(i) {} + + inline virtual typename Container::value_type getType(void) const APT_OVERRIDE { return *this->_iter; } }; template class Container_iterator : - public Container_iterator_base, typename Container::iterator> + public Container_iterator_base, typename Container::iterator, typename Container::value_type> { typedef Container_iterator iterator_type; typedef typename Container::iterator container_iterator; public: explicit Container_iterator(container_iterator i) : - Container_iterator_base(i) {} + Container_iterator_base(i) {} operator typename Master::const_iterator() { return typename Master::const_iterator(this->_iter); } inline iterator_type& operator=(iterator_type const &i) { this->_iter = i._iter; return static_cast(*this); } inline iterator_type& operator=(container_iterator const &i) { this->_iter = i; return static_cast(*this); } + + inline virtual typename Container::value_type getType(void) const APT_OVERRIDE { return *this->_iter; } }; template class Container_const_reverse_iterator : - public Container_iterator_base, typename Container::const_reverse_iterator> + public Container_iterator_base, typename Container::const_reverse_iterator, typename Container::value_type> { typedef Container_const_reverse_iterator iterator_type; typedef typename Container::const_reverse_iterator container_iterator; public: explicit Container_const_reverse_iterator(container_iterator i) : - Container_iterator_base(i) {} + Container_iterator_base(i) {} + + inline virtual typename Container::value_type getType(void) const APT_OVERRIDE { return *this->_iter; } }; template class Container_reverse_iterator : - public Container_iterator_base, typename Container::reverse_iterator> + public Container_iterator_base, typename Container::reverse_iterator, typename Container::value_type> { typedef Container_reverse_iterator iterator_type; typedef typename Container::reverse_iterator container_iterator; public: explicit Container_reverse_iterator(container_iterator i) : - Container_iterator_base(i) {} + Container_iterator_base(i) {} operator typename Master::const_iterator() { return typename Master::const_iterator(this->_iter); } inline iterator_type& operator=(iterator_type const &i) { this->_iter = i._iter; return static_cast(*this); } inline iterator_type& operator=(container_iterator const &i) { this->_iter = i; return static_cast(*this); } + + inline virtual typename Container::value_type getType(void) const APT_OVERRIDE { return *this->_iter; } }; /*}}}*/ class PackageContainerInterface { /*{{{*/ @@ -583,6 +591,10 @@ template<> template void PackageContainer template void PackageContainer >::insert(PackageContainer const &pkgcont) { + for (typename PackageContainer::const_iterator p = pkgcont.begin(); p != pkgcont.end(); ++p) + _cont.push_back(*p); +} template<> template void PackageContainer >::insert(PackageContainer const &pkgcont) { for (typename PackageContainer::const_iterator p = pkgcont.begin(); p != pkgcont.end(); ++p) _cont.push_back(*p); @@ -603,6 +615,12 @@ template<> inline bool PackageContainer return true; } #endif +template<> inline bool PackageContainer >::insert(pkgCache::PkgIterator const &P) { + if (P.end() == true) + return false; + _cont.push_back(P); + return true; +} template<> inline bool PackageContainer >::insert(pkgCache::PkgIterator const &P) { if (P.end() == true) return false; @@ -619,6 +637,10 @@ template<> inline void PackageContainer _cont.push_front(*p); } #endif +template<> inline void PackageContainer >::insert(const_iterator begin, const_iterator end) { + for (const_iterator p = begin; p != end; ++p) + _cont.push_back(*p); +} template<> inline void PackageContainer >::insert(const_iterator begin, const_iterator end) { for (const_iterator p = begin; p != end; ++p) _cont.push_back(*p); @@ -647,6 +669,10 @@ template<> template inline bool PackageContainer template inline bool PackageContainer >::sort(Compare Comp) { + std::sort(_cont.begin(), _cont.end(), Comp); + return true; +} /*}}}*/ // class PackageUniverse - pkgCache as PackageContainerInterface /*{{{*/ @@ -657,22 +683,35 @@ template<> template inline bool PackageContainer + { + protected: + inline virtual pkgCache::PkgIterator getType(void) const APT_OVERRIDE + { + return _iter; + } + public: + explicit const_iterator(pkgCache::PkgIterator i): + Container_iterator_base(i) {} + + }; + typedef const_iterator iterator; APT_PUBLIC bool empty() const APT_OVERRIDE { return false; } APT_PUBLIC size_t size() const APT_OVERRIDE { return _cont->Head().PackageCount; } - APT_PUBLIC const_iterator begin() const { return _cont->PkgBegin(); } - APT_PUBLIC const_iterator end() const { return _cont->PkgEnd(); } - APT_PUBLIC const_iterator cbegin() const { return _cont->PkgBegin(); } - APT_PUBLIC const_iterator cend() const { return _cont->PkgEnd(); } - APT_PUBLIC iterator begin() { return _cont->PkgBegin(); } - APT_PUBLIC iterator end() { return _cont->PkgEnd(); } + APT_PUBLIC const_iterator begin() const { return const_iterator(_cont->PkgBegin()); } + APT_PUBLIC const_iterator end() const { return const_iterator(_cont->PkgEnd()); } + APT_PUBLIC const_iterator cbegin() const { return const_iterator(_cont->PkgBegin()); } + APT_PUBLIC const_iterator cend() const { return const_iterator(_cont->PkgEnd()); } + APT_PUBLIC iterator begin() { return iterator(_cont->PkgBegin()); } + APT_PUBLIC iterator end() { return iterator(_cont->PkgEnd()); } + + APT_PUBLIC pkgCache * data() const { return _cont; } explicit APT_PUBLIC PackageUniverse(pkgCache * const Owner); APT_PUBLIC virtual ~PackageUniverse(); @@ -693,6 +732,7 @@ typedef PackageContainer > PackageUnor typedef PackageContainer > PackageForwardList; #endif typedef PackageContainer > PackageList; +typedef PackageContainer > PackageDeque; typedef PackageContainer > PackageVector; class VersionContainerInterface { /*{{{*/ @@ -1059,6 +1099,10 @@ template<> template void VersionContainer template void VersionContainer >::insert(VersionContainer const &vercont) { + for (typename VersionContainer::const_iterator v = vercont.begin(); v != vercont.end(); ++v) + _cont.push_back(*v); +} template<> template void VersionContainer >::insert(VersionContainer const &vercont) { for (typename VersionContainer::const_iterator v = vercont.begin(); v != vercont.end(); ++v) _cont.push_back(*v); @@ -1079,6 +1123,12 @@ template<> inline bool VersionContainer return true; } #endif +template<> inline bool VersionContainer >::insert(pkgCache::VerIterator const &V) { + if (V.end() == true) + return false; + _cont.push_back(V); + return true; +} template<> inline bool VersionContainer >::insert(pkgCache::VerIterator const &V) { if (V.end() == true) return false; @@ -1095,6 +1145,10 @@ template<> inline void VersionContainer _cont.push_front(*v); } #endif +template<> inline void VersionContainer >::insert(const_iterator begin, const_iterator end) { + for (const_iterator v = begin; v != end; ++v) + _cont.push_back(*v); +} template<> inline void VersionContainer >::insert(const_iterator begin, const_iterator end) { for (const_iterator v = begin; v != end; ++v) _cont.push_back(*v); @@ -1123,6 +1177,10 @@ template<> template inline bool VersionContainer template inline bool VersionContainer >::sort(Compare Comp) { + std::sort(_cont.begin(), _cont.end(), Comp); + return true; +} /*}}}*/ typedef VersionContainer > VersionSet; @@ -1131,6 +1189,7 @@ typedef VersionContainer > VersionUnor typedef VersionContainer > VersionForwardList; #endif typedef VersionContainer > VersionList; +typedef VersionContainer > VersionDeque; typedef VersionContainer > VersionVector; } #endif diff --git a/apt-private/private-cachefile.cc b/apt-private/private-cachefile.cc index 29e665245..2b2050684 100644 --- a/apt-private/private-cachefile.cc +++ b/apt-private/private-cachefile.cc @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include @@ -21,39 +21,40 @@ using namespace std; -// CacheFile::NameComp - QSort compare by name /*{{{*/ -// --------------------------------------------------------------------- -/* */ -pkgCache *CacheFile::SortCache = 0; -int CacheFile::NameComp(const void *a,const void *b) +static bool SortPackagesByName(pkgCache * const Owner, + map_pointer_t const A, map_pointer_t const B) { - if (*(pkgCache::Package **)a == 0 || *(pkgCache::Package **)b == 0) - return *(pkgCache::Package **)a - *(pkgCache::Package **)b; - - const pkgCache::Package &A = **(pkgCache::Package **)a; - const pkgCache::Package &B = **(pkgCache::Package **)b; - const pkgCache::Group * const GA = SortCache->GrpP + A.Group; - const pkgCache::Group * const GB = SortCache->GrpP + B.Group; - - return strcmp(SortCache->StrP + GA->Name,SortCache->StrP + GB->Name); + if (A == 0) + return false; + if (B == 0 || A == B) + return true; + pkgCache::Group const * const GA = Owner->GrpP + A; + pkgCache::Group const * const GB = Owner->GrpP + B; + return strcmp(Owner->StrP + GA->Name, Owner->StrP + GB->Name) <= 0; } - /*}}}*/ -// CacheFile::Sort - Sort by name /*{{{*/ -// --------------------------------------------------------------------- -/* */ -void CacheFile::Sort() +SortedPackageUniverse::SortedPackageUniverse(CacheFile &Cache) : + PackageUniverse{Cache}, List{Cache.UniverseList} { - delete [] List; - List = new pkgCache::Package *[Cache->Head().PackageCount]; - memset(List,0,sizeof(*List)*Cache->Head().PackageCount); - pkgCache::PkgIterator I = Cache->PkgBegin(); - for (;I.end() != true; ++I) - List[I->ID] = I; - - SortCache = *this; - qsort(List,Cache->Head().PackageCount,sizeof(*List),NameComp); } - /*}}}*/ +void SortedPackageUniverse::LazyInit() const +{ + if (List.empty() == false) + return; + pkgCache * const Owner = data(); + // In Multi-Arch systems Grps are easier to sort than Pkgs + std::vector GrpList; + List.reserve(Owner->Head().GroupCount); + for (pkgCache::GrpIterator I{Owner->GrpBegin()}; I.end() != true; ++I) + GrpList.emplace_back(I - Owner->GrpP); + std::stable_sort(GrpList.begin(), GrpList.end(), std::bind( &SortPackagesByName, Owner, std::placeholders::_1, std::placeholders::_2 )); + List.reserve(Owner->Head().PackageCount); + for (auto G : GrpList) + { + pkgCache::GrpIterator const Grp(*Owner, Owner->GrpP + G); + for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() != true; P = Grp.NextPkg(P)) + List.emplace_back(P - Owner->PkgP); + } +} // CacheFile::CheckDeps - Open the cache file /*{{{*/ // --------------------------------------------------------------------- /* This routine generates the caches and then opens the dependency cache diff --git a/apt-private/private-cachefile.h b/apt-private/private-cachefile.h index 1fddabfbd..4a68d9733 100644 --- a/apt-private/private-cachefile.h +++ b/apt-private/private-cachefile.h @@ -7,12 +7,13 @@ #include #include #include +#include + #include -// FIXME: we need to find a way to export this +// FIXME: we need to find a way to export this class APT_PUBLIC SourceList : public pkgSourceList { - public: // Add custom metaIndex (e.g. local files) void AddMetaIndex(metaIndex *mi) { @@ -22,17 +23,11 @@ class APT_PUBLIC SourceList : public pkgSourceList }; // class CacheFile - Cover class for some dependency cache functions /*{{{*/ -// --------------------------------------------------------------------- -/* */ class APT_PUBLIC CacheFile : public pkgCacheFile { - static pkgCache *SortCache; - APT_HIDDEN static int NameComp(const void *a,const void *b) APT_PURE; - public: - pkgCache::Package **List; - - void Sort(); + std::vector UniverseList; + bool CheckDeps(bool AllowBroken = false); bool BuildCaches(bool WithLock = true) { @@ -51,14 +46,10 @@ class APT_PUBLIC CacheFile : public pkgCacheFile return _error->Error(_("The list of sources could not be read.")); return true; } - bool Open(bool WithLock = true) + bool Open(bool WithLock = true) { OpTextProgress Prog(*_config); - if (pkgCacheFile::Open(&Prog,WithLock) == false) - return false; - Sort(); - - return true; + return pkgCacheFile::Open(&Prog,WithLock); }; bool OpenForInstall() { @@ -67,11 +58,39 @@ class APT_PUBLIC CacheFile : public pkgCacheFile else return Open(true); } - CacheFile() : List(0) {}; - ~CacheFile() { - delete[] List; - } }; /*}}}*/ +class APT_PUBLIC SortedPackageUniverse : public APT::PackageUniverse +{ + std::vector &List; + void LazyInit() const; + +public: + SortedPackageUniverse(CacheFile &Cache); + + class const_iterator : public APT::Container_iterator_base::const_iterator, pkgCache::PkgIterator> + { + pkgCache * const Cache; + protected: + inline virtual pkgCache::PkgIterator getType(void) const APT_OVERRIDE + { + if (*_iter == 0) return pkgCache::PkgIterator(*Cache); + return pkgCache::PkgIterator(*Cache, Cache->PkgP + *_iter); + } + public: + explicit const_iterator(pkgCache * const Owner, std::vector::const_iterator i): + Container_iterator_base::const_iterator, pkgCache::PkgIterator>(i), Cache(Owner) {} + + }; + typedef const_iterator iterator; + + APT_PUBLIC const_iterator begin() const { LazyInit(); return const_iterator(data(), List.begin()); } + APT_PUBLIC const_iterator end() const { LazyInit(); return const_iterator(data(), List.end()); } + APT_PUBLIC const_iterator cbegin() const { LazyInit(); return const_iterator(data(), List.begin()); } + APT_PUBLIC const_iterator cend() const { LazyInit(); return const_iterator(data(), List.end()); } + APT_PUBLIC iterator begin() { LazyInit(); return iterator(data(), List.begin()); } + APT_PUBLIC iterator end() { LazyInit(); return iterator(data(), List.end()); } +}; + #endif diff --git a/apt-private/private-cacheset.h b/apt-private/private-cacheset.h index 518f179f3..7cafe4fdd 100644 --- a/apt-private/private-cacheset.h +++ b/apt-private/private-cacheset.h @@ -12,6 +12,8 @@ #include #include +#include + #include #include #include @@ -21,8 +23,6 @@ #include #include -#include "private-output.h" - #include class OpProgress; @@ -174,17 +174,19 @@ public: std::string VersionsList; SPtrArray Seen = new bool[Cache.GetPkgCache()->Head().PackageCount]; memset(Seen,0,Cache.GetPkgCache()->Head().PackageCount*sizeof(*Seen)); + APT::PackageList pkglist; for (pkgCache::DepIterator Dep = Pkg.RevDependsList(); Dep.end() == false; ++Dep) { if (Dep->Type != pkgCache::Dep::Replaces) continue; - if (Seen[Dep.ParentPkg()->ID] == true) + pkgCache::PkgIterator const DP = Dep.ParentPkg(); + if (Seen[DP->ID] == true) continue; - Seen[Dep.ParentPkg()->ID] = true; - List += Dep.ParentPkg().FullName(true) + " "; - //VersionsList += std::string(Dep.ParentPkg().CurVersion) + "\n"; ??? + Seen[DP->ID] = true; + pkglist.insert(DP); } - ShowList(c1out,_("However the following packages replace it:"),List,VersionsList); + ShowList(c1out, _("However the following packages replace it:"), pkglist, + &AlwaysTrue, &PrettyFullName, &EmptyString); } c1out << std::endl; } diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc index 3474d262a..cdca45755 100644 --- a/apt-private/private-install.cc +++ b/apt-private/private-install.cc @@ -374,11 +374,10 @@ static bool DoAutomaticRemove(CacheFile &Cache) unsigned long autoRemoveCount = 0; APT::PackageSet tooMuch; - APT::PackageList autoRemoveList; + SortedPackageUniverse Universe(Cache); // look over the cache to see what can be removed - for (unsigned J = 0; J < Cache->Head().PackageCount; ++J) + for (auto const &Pkg: Universe) { - pkgCache::PkgIterator Pkg(Cache,Cache.List[J]); if (Cache[Pkg].Garbage) { if(Pkg.CurrentVer() != 0 || Cache[Pkg].Install()) @@ -395,8 +394,6 @@ static bool DoAutomaticRemove(CacheFile &Cache) } else { - if (hideAutoRemove == false && Cache[Pkg].Delete() == false) - autoRemoveList.insert(Pkg); // if the package is a new install and already garbage we don't need to // install it in the first place, so nuke it instead of show it if (Cache[Pkg].Install() == true && Pkg.CurrentVer() == 0) @@ -456,18 +453,6 @@ static bool DoAutomaticRemove(CacheFile &Cache) } while (Changed == true); } - std::string autoremovelist, autoremoveversions; - if (smallList == false && autoRemoveCount != 0) - { - for (APT::PackageList::const_iterator Pkg = autoRemoveList.begin(); Pkg != autoRemoveList.end(); ++Pkg) - { - if (Cache[Pkg].Garbage == false) - continue; - autoremovelist += Pkg.FullName(true) + " "; - autoremoveversions += std::string(Cache[Pkg].CandVersion) + "\n"; - } - } - // Now see if we had destroyed anything (if we had done anything) if (Cache->BrokenCount() != 0) { @@ -482,12 +467,17 @@ static bool DoAutomaticRemove(CacheFile &Cache) } // if we don't remove them, we should show them! - if (doAutoRemove == false && (autoremovelist.empty() == false || autoRemoveCount != 0)) + if (doAutoRemove == false && autoRemoveCount != 0) { if (smallList == false) + { + SortedPackageUniverse Universe(Cache); ShowList(c1out, P_("The following package was automatically installed and is no longer required:", "The following packages were automatically installed and are no longer required:", - autoRemoveCount), autoremovelist, autoremoveversions); + autoRemoveCount), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) { return (*Cache)[Pkg].Garbage == true && (*Cache)[Pkg].Delete() == false; }, + &PrettyFullName, CandidateVersion(&Cache)); + } else ioprintf(c1out, P_("%lu package was automatically installed and is no longer required.\n", "%lu packages were automatically installed and are no longer required.\n", autoRemoveCount), autoRemoveCount); @@ -651,6 +641,18 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, CacheFile &Cache, // DoInstall - Install packages from the command line /*{{{*/ // --------------------------------------------------------------------- /* Install named packages */ +struct PkgIsExtraInstalled { + pkgCacheFile * const Cache; + APT::VersionSet const * const verset; + PkgIsExtraInstalled(pkgCacheFile * const Cache, APT::VersionSet const * const Container) : Cache(Cache), verset(Container) {} + bool operator() (pkgCache::PkgIterator const Pkg) + { + if ((*Cache)[Pkg].Install() == false) + return false; + pkgCache::VerIterator const Cand = (*Cache)[Pkg].CandidateVerIter(*Cache); + return verset->find(Cand) == verset->end(); + } +}; bool DoInstall(CommandLine &CmdL) { CacheFile Cache; @@ -689,35 +691,18 @@ bool DoInstall(CommandLine &CmdL) /* Print out a list of packages that are going to be installed extra to what the user asked */ + SortedPackageUniverse Universe(Cache); if (Cache->InstCount() != verset[MOD_INSTALL].size()) - { - std::string List; - std::string VersionsList; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) - { - pkgCache::PkgIterator I(Cache,Cache.List[J]); - if ((*Cache)[I].Install() == false) - continue; - pkgCache::VerIterator Cand = Cache[I].CandidateVerIter(Cache); - - if (verset[MOD_INSTALL].find(Cand) != verset[MOD_INSTALL].end()) - continue; - - List += I.FullName(true) + " "; - VersionsList += std::string(Cache[I].CandVersion) + "\n"; - } - - ShowList(c1out,_("The following extra packages will be installed:"),List,VersionsList); - } + ShowList(c1out, _("The following extra packages will be installed:"), Universe, + PkgIsExtraInstalled(&Cache, &verset[MOD_INSTALL]), + &PrettyFullName, CandidateVersion(&Cache)); /* Print out a list of suggested and recommended packages */ { std::string SuggestsList, RecommendsList; std::string SuggestsVersions, RecommendsVersions; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) + for (auto const &Pkg: Universe) { - pkgCache::PkgIterator Pkg(Cache,Cache.List[J]); - /* Just look at the ones we want to install */ if ((*Cache)[Pkg].Install() == false) continue; @@ -738,7 +723,6 @@ bool DoInstall(CommandLine &CmdL) for(;;) { /* Skip if package is installed already, or is about to be */ - std::string target = Start.TargetPkg().FullName(true) + " "; pkgCache::PkgIterator const TarPkg = Start.TargetPkg(); if (TarPkg->SelectedState == pkgCache::State::Install || TarPkg->SelectedState == pkgCache::State::Hold || @@ -749,6 +733,7 @@ bool DoInstall(CommandLine &CmdL) } /* Skip if we already saw it */ + std::string target = Start.TargetPkg().FullName(true) + " "; if (int(SuggestsList.find(target)) != -1 || int(RecommendsList.find(target)) != -1) { foundInstalledInOrGroup=true; diff --git a/apt-private/private-output.cc b/apt-private/private-output.cc index 9944ab002..b77efff86 100644 --- a/apt-private/private-output.cc +++ b/apt-private/private-output.cc @@ -25,6 +25,8 @@ #include #include +#include + #include /*}}}*/ @@ -491,11 +493,9 @@ void ShowBroken(ostream &out, CacheFile &Cache, bool const Now) return; out << _("The following packages have unmet dependencies:") << endl; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) - { - pkgCache::PkgIterator const I(Cache,Cache.List[J]); - ShowBrokenPackage(out, &Cache, I, Now); - } + SortedPackageUniverse Universe(Cache); + for (auto const &Pkg: Universe) + ShowBrokenPackage(out, &Cache, Pkg, Now); } void ShowBroken(ostream &out, pkgCacheFile &Cache, bool const Now) { @@ -503,98 +503,64 @@ void ShowBroken(ostream &out, pkgCacheFile &Cache, bool const Now) return; out << _("The following packages have unmet dependencies:") << endl; - for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); Pkg.end() == false; ++Pkg) + APT::PackageUniverse Universe(Cache); + for (auto const &Pkg: Universe) ShowBrokenPackage(out, &Cache, Pkg, Now); } /*}}}*/ // ShowNew - Show packages to newly install /*{{{*/ -// --------------------------------------------------------------------- -/* */ void ShowNew(ostream &out,CacheFile &Cache) { - /* Print out a list of packages that are going to be installed extra - to what the user asked */ - string List; - string VersionsList; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) - { - pkgCache::PkgIterator I(Cache,Cache.List[J]); - if (Cache[I].NewInstall() == true) { - List += I.FullName(true) + " "; - VersionsList += string(Cache[I].CandVersion) + "\n"; - } - } - - ShowList(out,_("The following NEW packages will be installed:"),List,VersionsList); + SortedPackageUniverse Universe(Cache); + ShowList(out,_("The following NEW packages will be installed:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall(); }, + &PrettyFullName, + CandidateVersion(&Cache)); } /*}}}*/ // ShowDel - Show packages to delete /*{{{*/ -// --------------------------------------------------------------------- -/* */ void ShowDel(ostream &out,CacheFile &Cache) { - /* Print out a list of packages that are going to be removed extra - to what the user asked */ - string List; - string VersionsList; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) - { - pkgCache::PkgIterator I(Cache,Cache.List[J]); - if (Cache[I].Delete() == true) - { - if ((Cache[I].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge) - List += I.FullName(true) + "* "; - else - List += I.FullName(true) + " "; - - VersionsList += string(Cache[I].CandVersion)+ "\n"; - } - } - - ShowList(out,_("The following packages will be REMOVED:"),List,VersionsList); + SortedPackageUniverse Universe(Cache); + ShowList(out,_("The following packages will be REMOVED:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].Delete(); }, + [&Cache](pkgCache::PkgIterator const &Pkg) + { + std::string str = PrettyFullName(Pkg); + if (((*Cache)[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge) + str.append("*"); + return str; + }, + CandidateVersion(&Cache)); } /*}}}*/ // ShowKept - Show kept packages /*{{{*/ -// --------------------------------------------------------------------- -/* */ void ShowKept(ostream &out,CacheFile &Cache) { - string List; - string VersionsList; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) - { - pkgCache::PkgIterator I(Cache,Cache.List[J]); - - // Not interesting - if (Cache[I].Upgrade() == true || Cache[I].Upgradable() == false || - I->CurrentVer == 0 || Cache[I].Delete() == true) - continue; - - List += I.FullName(true) + " "; - VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n"; - } - ShowList(out,_("The following packages have been kept back:"),List,VersionsList); + SortedPackageUniverse Universe(Cache); + ShowList(out,_("The following packages have been kept back:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) + { + return Cache[Pkg].Upgrade() == false && + Cache[Pkg].Upgradable() == true && + Pkg->CurrentVer != 0 && + Cache[Pkg].Delete() == false; + }, + &PrettyFullName, + CurrentToCandidateVersion(&Cache)); } /*}}}*/ // ShowUpgraded - Show upgraded packages /*{{{*/ -// --------------------------------------------------------------------- -/* */ void ShowUpgraded(ostream &out,CacheFile &Cache) { - string List; - string VersionsList; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) - { - pkgCache::PkgIterator I(Cache,Cache.List[J]); - - // Not interesting - if (Cache[I].Upgrade() == false || Cache[I].NewInstall() == true) - continue; - - List += I.FullName(true) + " "; - VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n"; - } - ShowList(out,_("The following packages will be upgraded:"),List,VersionsList); + SortedPackageUniverse Universe(Cache); + ShowList(out,_("The following packages will be upgraded:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) + { + return Cache[Pkg].Upgrade() == true && Cache[Pkg].NewInstall() == false; + }, + &PrettyFullName, + CurrentToCandidateVersion(&Cache)); } /*}}}*/ // ShowDowngraded - Show downgraded packages /*{{{*/ @@ -602,74 +568,73 @@ void ShowUpgraded(ostream &out,CacheFile &Cache) /* */ bool ShowDowngraded(ostream &out,CacheFile &Cache) { - string List; - string VersionsList; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) - { - pkgCache::PkgIterator I(Cache,Cache.List[J]); - - // Not interesting - if (Cache[I].Downgrade() == false || Cache[I].NewInstall() == true) - continue; - - List += I.FullName(true) + " "; - VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n"; - } - return ShowList(out,_("The following packages will be DOWNGRADED:"),List,VersionsList); + SortedPackageUniverse Universe(Cache); + return ShowList(out,_("The following packages will be DOWNGRADED:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) + { + return Cache[Pkg].Downgrade() == true && Cache[Pkg].NewInstall() == false; + }, + &PrettyFullName, + CurrentToCandidateVersion(&Cache)); } /*}}}*/ // ShowHold - Show held but changed packages /*{{{*/ -// --------------------------------------------------------------------- -/* */ bool ShowHold(ostream &out,CacheFile &Cache) { - string List; - string VersionsList; - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) - { - pkgCache::PkgIterator I(Cache,Cache.List[J]); - if (Cache[I].InstallVer != (pkgCache::Version *)I.CurrentVer() && - I->SelectedState == pkgCache::State::Hold) { - List += I.FullName(true) + " "; - VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n"; - } - } - - return ShowList(out,_("The following held packages will be changed:"),List,VersionsList); + SortedPackageUniverse Universe(Cache); + return ShowList(out,_("The following held packages will be changed:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) + { + return Pkg->SelectedState == pkgCache::State::Hold && + Cache[Pkg].InstallVer != (pkgCache::Version *)Pkg.CurrentVer(); + }, + &PrettyFullName, + CurrentToCandidateVersion(&Cache)); } /*}}}*/ // ShowEssential - Show an essential package warning /*{{{*/ // --------------------------------------------------------------------- /* This prints out a warning message that is not to be ignored. It shows - all essential packages and their dependents that are to be removed. + all essential packages and their dependents that are to be removed. It is insanely risky to remove the dependents of an essential package! */ +struct APT_HIDDEN PrettyFullNameWithDue { + std::map due; + PrettyFullNameWithDue() {} + std::string operator() (pkgCache::PkgIterator const &Pkg) + { + std::string const A = PrettyFullName(Pkg); + std::map::const_iterator d = due.find(Pkg->ID); + if (d == due.end()) + return A; + + std::string const B = PrettyFullName(d->second); + std::ostringstream outstr; + ioprintf(outstr, _("%s (due to %s)"), A.c_str(), B.c_str()); + return outstr.str(); + } +}; bool ShowEssential(ostream &out,CacheFile &Cache) { - string List; - string VersionsList; - bool *Added = new bool[Cache->Head().PackageCount]; - for (unsigned int I = 0; I != Cache->Head().PackageCount; I++) - Added[I] = false; - - for (unsigned J = 0; J < Cache->Head().PackageCount; J++) + std::vector Added(Cache->Head().PackageCount, false); + APT::PackageDeque pkglist; + PrettyFullNameWithDue withdue; + + SortedPackageUniverse Universe(Cache); + for (pkgCache::PkgIterator const &I: Universe) { - pkgCache::PkgIterator I(Cache,Cache.List[J]); if ((I->Flags & pkgCache::Flag::Essential) != pkgCache::Flag::Essential && (I->Flags & pkgCache::Flag::Important) != pkgCache::Flag::Important) continue; - + // The essential package is being removed - if (Cache[I].Delete() == true) + if (Cache[I].Delete() == false) + continue; + + if (Added[I->ID] == false) { - if (Added[I->ID] == false) - { - Added[I->ID] = true; - List += I.FullName(true) + " "; - //VersionsList += string(Cache[I].CurVersion) + "\n"; ??? - } + Added[I->ID] = true; + pkglist.insert(I); } - else - continue; if (I->CurrentVer == 0) continue; @@ -681,27 +646,23 @@ bool ShowEssential(ostream &out,CacheFile &Cache) if (D->Type != pkgCache::Dep::PreDepends && D->Type != pkgCache::Dep::Depends) continue; - + pkgCache::PkgIterator P = D.SmartTargetPkg(); if (Cache[P].Delete() == true) { if (Added[P->ID] == true) continue; Added[P->ID] = true; - - char S[300]; - snprintf(S,sizeof(S),_("%s (due to %s) "),P.FullName(true).c_str(),I.FullName(true).c_str()); - List += S; - //VersionsList += "\n"; ??? - } - } + + pkglist.insert(P); + withdue.due[P->ID] = I; + } + } } - - delete [] Added; return ShowList(out,_("WARNING: The following essential packages will be removed.\n" - "This should NOT be done unless you know exactly what you are doing!"),List,VersionsList); + "This should NOT be done unless you know exactly what you are doing!"), + pkglist, &AlwaysTrue, withdue, &EmptyString); } - /*}}}*/ // Stats - Show some statistics /*{{{*/ // --------------------------------------------------------------------- @@ -829,3 +790,33 @@ bool AnalPrompt(const char *Text) return false; } /*}}}*/ + +std::string PrettyFullName(pkgCache::PkgIterator const &Pkg) +{ + return Pkg.FullName(true); +} +std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg) +{ + return (*Cache)[Pkg].CandVersion; +} +std::function CandidateVersion(pkgCacheFile * const Cache) +{ + return std::bind(static_cast(&CandidateVersion), Cache, std::placeholders::_1); +} +std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg) +{ + return std::string((*Cache)[Pkg].CurVersion) + " => " + (*Cache)[Pkg].CandVersion; +} +std::function CurrentToCandidateVersion(pkgCacheFile * const Cache) +{ + return std::bind(static_cast(&CurrentToCandidateVersion), Cache, std::placeholders::_1); +} +bool AlwaysTrue(pkgCache::PkgIterator const &) +{ + return true; +} +std::string EmptyString(pkgCache::PkgIterator const &) +{ + return std::string(); +} + diff --git a/apt-private/private-output.h b/apt-private/private-output.h index d5b57adec..b9151b245 100644 --- a/apt-private/private-output.h +++ b/apt-private/private-output.h @@ -1,9 +1,11 @@ #ifndef APT_PRIVATE_OUTPUT_H #define APT_PRIVATE_OUTPUT_H +#include #include #include +#include #include #include #include @@ -32,8 +34,63 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, APT_PUBLIC void ShowBroken(std::ostream &out, CacheFile &Cache, bool const Now); APT_PUBLIC void ShowBroken(std::ostream &out, pkgCacheFile &Cache, bool const Now); -APT_PUBLIC bool ShowList(std::ostream &out, std::string Title, std::string List, +template APT_PUBLIC bool ShowList(std::ostream &out, std::string const &Title, + Container const &cont, + std::function Predicate, + std::function PkgDisplay, + std::function VerboseDisplay) +{ + size_t const ScreenWidth = (::ScreenWidth > 3) ? ::ScreenWidth - 3 : 0; + int ScreenUsed = 0; + bool const ShowVersions = _config->FindB("APT::Get::Show-Versions", false); + bool printedTitle = false; + + for (auto const &Pkg: cont) + { + if (Predicate(Pkg) == false) + continue; + + if (printedTitle == false) + { + out << Title; + printedTitle = true; + } + + if (ShowVersions == true) + { + out << std::endl << " " << PkgDisplay(Pkg); + std::string const verbose = VerboseDisplay(Pkg); + if (verbose.empty() == false) + out << " (" << verbose << ")"; + } + else + { + std::string const PkgName = PkgDisplay(Pkg); + if (ScreenUsed == 0 || (ScreenUsed + PkgName.length()) >= ScreenWidth) + { + out << std::endl << " "; + ScreenUsed = 0; + } + else if (ScreenUsed != 0) + { + out << " "; + ++ScreenUsed; + } + out << PkgName; + ScreenUsed += PkgName.length(); + } + } + + if (printedTitle == true) + { + out << std::endl; + return false; + } + return true; +} +APT_DEPRECATED APT_PUBLIC bool ShowList(std::ostream &out, std::string Title, std::string List, std::string VersionsList); + void ShowNew(std::ostream &out,CacheFile &Cache); void ShowDel(std::ostream &out,CacheFile &Cache); void ShowKept(std::ostream &out,CacheFile &Cache); @@ -49,4 +106,12 @@ void Stats(std::ostream &out, pkgDepCache &Dep); bool YnPrompt(bool Default=true); bool AnalPrompt(const char *Text); +APT_PUBLIC std::string PrettyFullName(pkgCache::PkgIterator const &Pkg); +APT_PUBLIC std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg); +APT_PUBLIC std::function CandidateVersion(pkgCacheFile * const Cache); +APT_PUBLIC std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg); +APT_PUBLIC std::function CurrentToCandidateVersion(pkgCacheFile * const Cache); +APT_PUBLIC std::string EmptyString(pkgCache::PkgIterator const &); +APT_PUBLIC bool AlwaysTrue(pkgCache::PkgIterator const &); + #endif diff --git a/po/apt-all.pot b/po/apt-all.pot index 73b033876..e2d09401b 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -1135,7 +1135,7 @@ msgstr "" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " +msgid "%s (due to %s)" msgstr "" #: apt-private/private-output.cc:696 diff --git a/po/ar.po b/po/ar.po index 3e71fef80..8c1622d91 100644 --- a/po/ar.po +++ b/po/ar.po @@ -1151,8 +1151,8 @@ msgstr "سيتم تغيير الحزم المبقاة التالية:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (بسبب %s) " +msgid "%s (due to %s)" +msgstr "%s (بسبب %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/ast.po b/po/ast.po index 1995c12f6..07888ebe2 100644 --- a/po/ast.po +++ b/po/ast.po @@ -1261,8 +1261,8 @@ msgstr "Van camudase los siguientes paquetes reteníos:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (por %s) " +msgid "%s (due to %s)" +msgstr "%s (por %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/bg.po b/po/bg.po index 7dff005e6..6dc47f5bb 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1294,8 +1294,8 @@ msgstr "Следните задържани пакети ще бъдат про #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (поради %s) " +msgid "%s (due to %s)" +msgstr "%s (поради %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/bs.po b/po/bs.po index abb9a570a..e68cee981 100644 --- a/po/bs.po +++ b/po/bs.po @@ -1159,7 +1159,7 @@ msgstr "" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " +msgid "%s (due to %s)" msgstr "" #: apt-private/private-output.cc:696 diff --git a/po/ca.po b/po/ca.po index 065ad0ea7..3f111875d 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1276,8 +1276,8 @@ msgstr "Es canviaran els paquets retinguts següents:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (per %s) " +msgid "%s (due to %s)" +msgstr "%s (per %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/cs.po b/po/cs.po index 3f6bcb4a7..4de2b7006 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1301,8 +1301,8 @@ msgstr "Následující podržené balíky budou změněny:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (kvůli %s) " +msgid "%s (due to %s)" +msgstr "%s (kvůli %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/cy.po b/po/cy.po index b05bc7c59..db9ec0bbc 100644 --- a/po/cy.po +++ b/po/cy.po @@ -1288,8 +1288,8 @@ msgstr "Caiff y pecynnau wedi eu dal canlynol eu newid:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (oherwydd %s) " +msgid "%s (due to %s)" +msgstr "%s (oherwydd %s)" #: apt-private/private-output.cc:696 #, fuzzy diff --git a/po/da.po b/po/da.po index d6b8e07a1..f337879f6 100644 --- a/po/da.po +++ b/po/da.po @@ -1319,8 +1319,8 @@ msgstr "Følgende tilbageholdte pakker vil blive ændret:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (grundet %s) " +msgid "%s (due to %s)" +msgstr "%s (grundet %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/de.po b/po/de.po index d4ca0d5a0..0b363c8de 100644 --- a/po/de.po +++ b/po/de.po @@ -1364,8 +1364,8 @@ msgstr "Die folgenden zurückgehaltenen Pakete werden verändert:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (wegen %s) " +msgid "%s (due to %s)" +msgstr "%s (wegen %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/dz.po b/po/dz.po index a4c50d245..e27ea6a90 100644 --- a/po/dz.po +++ b/po/dz.po @@ -1256,7 +1256,7 @@ msgstr "འོག་གི་འཆང་ཡོད་པའི་ཐུམ་ས #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " +msgid "%s (due to %s)" msgstr "%s( %s་གིས་སྦེ)" #: apt-private/private-output.cc:696 diff --git a/po/el.po b/po/el.po index 98e1f31c9..b2370c6ad 100644 --- a/po/el.po +++ b/po/el.po @@ -1272,8 +1272,8 @@ msgstr "Τα ακόλουθα κρατημένα πακέτα θα αλλαχθ #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (λόγω του %s) " +msgid "%s (due to %s)" +msgstr "%s (λόγω του %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/es.po b/po/es.po index a2a9a71e9..c071ffb4a 100644 --- a/po/es.po +++ b/po/es.po @@ -1388,8 +1388,8 @@ msgstr "Se cambiarán los siguientes paquetes retenidos:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (por %s) " +msgid "%s (due to %s)" +msgstr "%s (por %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/eu.po b/po/eu.po index f1e90411a..528c6cc51 100644 --- a/po/eu.po +++ b/po/eu.po @@ -1257,8 +1257,8 @@ msgstr "Ondorengo pakete atxikiak aldatu egingo dira:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (arrazoia: %s) " +msgid "%s (due to %s)" +msgstr "%s (arrazoia: %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/fi.po b/po/fi.po index c40ed8e9e..5a5299255 100644 --- a/po/fi.po +++ b/po/fi.po @@ -1248,8 +1248,8 @@ msgstr "Seuraavat pysytetyt paketit muutetaan:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (syynä %s) " +msgid "%s (due to %s)" +msgstr "%s (syynä %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/fr.po b/po/fr.po index ecb752f5e..0a437907f 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1328,8 +1328,8 @@ msgstr "Les paquets retenus suivants seront changés :" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (en raison de %s) " +msgid "%s (due to %s)" +msgstr "%s (en raison de %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/gl.po b/po/gl.po index 2adaa302a..9ec10122b 100644 --- a/po/gl.po +++ b/po/gl.po @@ -1275,8 +1275,8 @@ msgstr "Vanse modificar os paquetes retidos seguintes:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (por mor de %s) " +msgid "%s (due to %s)" +msgstr "%s (por mor de %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/he.po b/po/he.po index ab7b50745..2c355f863 100644 --- a/po/he.po +++ b/po/he.po @@ -610,8 +610,8 @@ msgstr "החבילות המחוזקות הבאות ישונו:" #: cmdline/apt-get.cc:545 #, c-format -msgid "%s (due to %s) " -msgstr "%s (בגלל %s) " +msgid "%s (due to %s)" +msgstr "%s (בגלל %s)" #: cmdline/apt-get.cc:553 #, fuzzy diff --git a/po/hu.po b/po/hu.po index 635184c75..fcf53f727 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1291,8 +1291,8 @@ msgstr "Az alábbi visszafogott csomagokat cserélem:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (%s miatt) " +msgid "%s (due to %s)" +msgstr "%s (%s miatt)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/it.po b/po/it.po index 178754c52..6d9793c55 100644 --- a/po/it.po +++ b/po/it.po @@ -1323,8 +1323,8 @@ msgstr "I seguenti pacchetti bloccati saranno cambiati:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (a causa di %s) " +msgid "%s (due to %s)" +msgstr "%s (a causa di %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/ja.po b/po/ja.po index f8f55f8aa..6e0e21418 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1324,8 +1324,8 @@ msgstr "以下の変更禁止パッケージは変更されます:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (%s のため) " +msgid "%s (due to %s)" +msgstr "%s (%s のため)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/km.po b/po/km.po index 8c72865f8..8ae605510 100644 --- a/po/km.po +++ b/po/km.po @@ -1242,8 +1242,8 @@ msgstr "កញ្ចប់​រង់ចាំ​ខាងក្រោម​ន #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (ដោយ​សារតែ​ %s) " +msgid "%s (due to %s)" +msgstr "%s (ដោយ​សារតែ​ %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/ko.po b/po/ko.po index 51cc27d61..e5b08fdec 100644 --- a/po/ko.po +++ b/po/ko.po @@ -1250,8 +1250,8 @@ msgstr "고정되었던 다음 패키지를 바꿀 것입니다:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (%s때문에) " +msgid "%s (due to %s)" +msgstr "%s (%s때문에)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/ku.po b/po/ku.po index 540307937..3b2d6ed12 100644 --- a/po/ku.po +++ b/po/ku.po @@ -1162,7 +1162,7 @@ msgstr "" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " +msgid "%s (due to %s)" msgstr "%s (ji ber %s)" #: apt-private/private-output.cc:696 diff --git a/po/lt.po b/po/lt.po index 1f485b28d..6d0365183 100644 --- a/po/lt.po +++ b/po/lt.po @@ -1166,8 +1166,8 @@ msgstr "Bus pakeisti šie sulaikyti paketai:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (dėl %s) " +msgid "%s (due to %s)" +msgstr "%s (dėl %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/mr.po b/po/mr.po index 24e470cef..31bdb63c9 100644 --- a/po/mr.po +++ b/po/mr.po @@ -1240,7 +1240,7 @@ msgstr "पुढिल ठेवलेली पॅकेजेस बदलत #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " +msgid "%s (due to %s)" msgstr "%s (च्या मुळे %s)" #: apt-private/private-output.cc:696 diff --git a/po/nb.po b/po/nb.po index 433e33909..41563cecd 100644 --- a/po/nb.po +++ b/po/nb.po @@ -1258,8 +1258,8 @@ msgstr "Følgende pakker vil bli endret:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (pga. %s) " +msgid "%s (due to %s)" +msgstr "%s (pga. %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/ne.po b/po/ne.po index 4c6f2d098..b5fb2c6fc 100644 --- a/po/ne.po +++ b/po/ne.po @@ -1240,8 +1240,8 @@ msgstr "निम्न भइरहेको प्याकेजहरू प #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (%s कारणले) " +msgid "%s (due to %s)" +msgstr "%s (%s कारणले)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/nl.po b/po/nl.po index 5c774fe8d..2214ac65c 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1337,8 +1337,8 @@ msgstr "De volgende vastgehouden pakketten zullen gewijzigd worden:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (vanwege %s) " +msgid "%s (due to %s)" +msgstr "%s (vanwege %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/nn.po b/po/nn.po index 0886c266a..5c8c39967 100644 --- a/po/nn.po +++ b/po/nn.po @@ -1251,8 +1251,8 @@ msgstr "Dei f #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (fordi %s) " +msgid "%s (due to %s)" +msgstr "%s (fordi %s)" #: apt-private/private-output.cc:696 #, fuzzy diff --git a/po/pl.po b/po/pl.po index 1851fa805..f248841c9 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1302,8 +1302,8 @@ msgstr "Zostaną zmienione następujące zatrzymane pakiety:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (z powodu %s) " +msgid "%s (due to %s)" +msgstr "%s (z powodu %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/pt.po b/po/pt.po index 4f05ada82..0e106a7d1 100644 --- a/po/pt.po +++ b/po/pt.po @@ -1291,8 +1291,8 @@ msgstr "Os seguintes pacotes mantidos serão mudados:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (devido a %s) " +msgid "%s (due to %s)" +msgstr "%s (devido a %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/pt_BR.po b/po/pt_BR.po index 5e2abd988..c50792b79 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1264,8 +1264,8 @@ msgstr "Os seguintes pacotes mantidos serão mudados:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (por causa de %s) " +msgid "%s (due to %s)" +msgstr "%s (por causa de %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/ro.po b/po/ro.po index 9b0a1494a..7b94bd3d8 100644 --- a/po/ro.po +++ b/po/ro.po @@ -1267,8 +1267,8 @@ msgstr "Următoarele pachete ținute vor fi schimbate:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (datorită %s) " +msgid "%s (due to %s)" +msgstr "%s (datorită %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/ru.po b/po/ru.po index 7d30cb696..5e52b9234 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1614,8 +1614,8 @@ msgstr "" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (вследствие %s) " +msgid "%s (due to %s)" +msgstr "%s (вследствие %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/sk.po b/po/sk.po index 631ddd826..0aeb167ea 100644 --- a/po/sk.po +++ b/po/sk.po @@ -1280,8 +1280,8 @@ msgstr "Nasledovné pridržané balíky sa zmenia:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (kvôli %s) " +msgid "%s (due to %s)" +msgstr "%s (kvôli %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/sl.po b/po/sl.po index 845fe3c5f..496919956 100644 --- a/po/sl.po +++ b/po/sl.po @@ -1277,8 +1277,8 @@ msgstr "Naslednji zadržani paketi bodo spremenjeni:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (zaradi %s) " +msgid "%s (due to %s)" +msgstr "%s (zaradi %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/sv.po b/po/sv.po index 52f65b598..bdf00ff65 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1266,8 +1266,8 @@ msgstr "Följande tillbakahållna paket kommer att ändras:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (på grund av %s) " +msgid "%s (due to %s)" +msgstr "%s (på grund av %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/th.po b/po/th.po index 60a468ea4..c016205c5 100644 --- a/po/th.po +++ b/po/th.po @@ -1287,8 +1287,8 @@ msgstr "จะเปลี่ยนแปลงรายการคงรุ่ #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (เนื่องจาก %s) " +msgid "%s (due to %s)" +msgstr "%s (เนื่องจาก %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/tl.po b/po/tl.po index 970b0b387..be3371704 100644 --- a/po/tl.po +++ b/po/tl.po @@ -1258,8 +1258,8 @@ msgstr "Ang susunod na mga hinawakang mga pakete ay babaguhin:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (dahil sa %s) " +msgid "%s (due to %s)" +msgstr "%s (dahil sa %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/tr.po b/po/tr.po index 79945ebd3..8b8691a55 100644 --- a/po/tr.po +++ b/po/tr.po @@ -1315,8 +1315,8 @@ msgstr "Aşağıdaki eski sürümlerinde tutulan paketler değiştirilecek:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (%s nedeniyle) " +msgid "%s (due to %s)" +msgstr "%s (%s nedeniyle)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/uk.po b/po/uk.po index 47976d39c..514403641 100644 --- a/po/uk.po +++ b/po/uk.po @@ -1298,8 +1298,8 @@ msgstr "Пакунки, які мали б залишитися без змін, #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (внаслідок %s) " +msgid "%s (due to %s)" +msgstr "%s (внаслідок %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/vi.po b/po/vi.po index 2edb52f22..73770ce74 100644 --- a/po/vi.po +++ b/po/vi.po @@ -1334,8 +1334,8 @@ msgstr "Những gói giữ lại sau đây sẽ bị THAY ĐỔI:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (bởi vì %s) " +msgid "%s (due to %s)" +msgstr "%s (bởi vì %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 6e9610ac9..1f92d6269 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1289,8 +1289,8 @@ msgstr "下列被要求保持版本不变的软件包将被改变:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s (是由于 %s) " +msgid "%s (due to %s)" +msgstr "%s (是由于 %s)" #: apt-private/private-output.cc:696 msgid "" diff --git a/po/zh_TW.po b/po/zh_TW.po index 201d9d675..f37e5e0ed 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1236,8 +1236,8 @@ msgstr "下列被保留 (hold) 的套件將會被更改:" #: apt-private/private-output.cc:688 #, c-format -msgid "%s (due to %s) " -msgstr "%s(因為 %s)" +msgid "%s (due to %s)" +msgstr "%s(因為 %s" #: apt-private/private-output.cc:696 msgid "" diff --git a/test/integration/test-apt-get-autoremove b/test/integration/test-apt-get-autoremove index a0e4d3c24..454b47976 100755 --- a/test/integration/test-apt-get-autoremove +++ b/test/integration/test-apt-get-autoremove @@ -27,6 +27,19 @@ The following packages will be REMOVED: po-debconf 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. Remv po-debconf [1.0.16]' aptget autoremove -s +testequal "Reading package lists... +Building dependency tree... +Reading state information... +The following package was automatically installed and is no longer required: + po-debconf +Use 'apt-get autoremove' to remove it. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s +testequal "Reading package lists... +Building dependency tree... +Reading state information... +1 package was automatically installed and is no longer required. +Use 'apt-get autoremove' to remove it. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small testdpkginstalled 'po-debconf' echo 'APT::NeverAutoRemove { "^po-debconf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove @@ -63,6 +76,19 @@ The following packages will be REMOVED: 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. Remv debhelper [8.0.0] Remv po-debconf [1.0.16]' aptget autoremove -s +testequal "Reading package lists... +Building dependency tree... +Reading state information... +The following packages were automatically installed and are no longer required: + debhelper po-debconf +Use 'apt-get autoremove' to remove them. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s +testequal "Reading package lists... +Building dependency tree... +Reading state information... +2 packages were automatically installed and are no longer required. +Use 'apt-get autoremove' to remove them. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small testsuccess aptmark hold debhelper testsuccessequal 'Reading package lists... diff --git a/test/integration/test-bug-596498-trusted-unsigned-repo b/test/integration/test-bug-596498-trusted-unsigned-repo index c515837a3..94f280b81 100755 --- a/test/integration/test-bug-596498-trusted-unsigned-repo +++ b/test/integration/test-bug-596498-trusted-unsigned-repo @@ -37,6 +37,15 @@ WARNING: The following packages cannot be authenticated! Install these packages without verification? [y/N] N E: Some packages could not be authenticated" aptget install cool --assume-no -d +configarchitecture 'amd64' 'i386' +testequal "$(echo "$PKGTEXT" | sed 's#cool$#cool:i386#g') +WARNING: The following packages cannot be authenticated! + cool:i386 +Authentication warning overridden. +$DOWNLOG +Download complete and in download only mode" aptget install cool:i386 --assume-no -d --allow-unauthenticated +configarchitecture 'i386' + find aptarchive/ \( -name 'Release.gpg' -o -name 'InRelease' \) -delete sed -i -e 's#\(deb\(-src\)\?\) \[trusted=no\] #\1 #' $DEBFILE aptgetupdate diff --git a/test/integration/test-bug-604222-new-and-autoremove b/test/integration/test-bug-604222-new-and-autoremove index 52992680b..3b5fa20c4 100755 --- a/test/integration/test-bug-604222-new-and-autoremove +++ b/test/integration/test-bug-604222-new-and-autoremove @@ -23,6 +23,17 @@ The following NEW packages will be installed: Inst libavcodec52 (4:0.5.2-6 localhost [i386]) Conf libavcodec52 (4:0.5.2-6 localhost [i386])" aptget install libavcodec52 -s +testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... +1 package was automatically installed and is no longer required. +Use 'apt-get autoremove' to remove it. +The following NEW packages will be installed: + libavcodec52 +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst libavcodec52 (4:0.5.2-6 localhost [i386]) +Conf libavcodec52 (4:0.5.2-6 localhost [i386])" aptget install libavcodec52 -s -o APT::Get::HideAutoRemove=small + testfailureequal "Reading package lists... Building dependency tree... Reading state information... @@ -39,6 +50,21 @@ The following packages will be upgraded: Need to get 0 B/19.4 MB of archives. After this operation, 17.3 MB of additional disk space will be used. E: Trivial Only specified but this is not a trivial operation." aptget install dummy-archive --trivial-only +testequal "Reading package lists... +Building dependency tree... +Reading state information... +1 package was automatically installed and is no longer required. +Use 'apt-get autoremove' to remove it. +The following extra packages will be installed: + libavcodec52 libopenal-dev libvtk5.4 +The following NEW packages will be installed: + dummy-archive libavcodec52 libopenal-dev +The following packages will be upgraded: + libvtk5.4 +1 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. +Need to get 0 B/19.4 MB of archives. +After this operation, 17.3 MB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install dummy-archive --trivial-only -o APT::Get::HideAutoRemove=small echo -n > rootdir/var/lib/dpkg/status rm rootdir/var/lib/apt/extended_states diff --git a/test/integration/test-bug-613420-new-garbage-dependency b/test/integration/test-bug-613420-new-garbage-dependency index 5839f8798..18eab79c2 100755 --- a/test/integration/test-bug-613420-new-garbage-dependency +++ b/test/integration/test-bug-613420-new-garbage-dependency @@ -35,3 +35,19 @@ The following packages will be upgraded: 1 upgraded, 3 newly installed, 1 to remove and 0 not upgraded. After this operation, 126 MB disk space will be freed. E: Trivial Only specified but this is not a trivial operation." aptget install libreoffice --trivial-only +testequal "Reading package lists... +Building dependency tree... +Reading state information... +2 packages were automatically installed and are no longer required. +Use 'apt-get autoremove' to remove them. +The following extra packages will be installed: + libreoffice-core libreoffice-officebean openoffice.org-officebean +The following packages will be REMOVED: + openoffice.org-core +The following NEW packages will be installed: + libreoffice libreoffice-core libreoffice-officebean +The following packages will be upgraded: + openoffice.org-officebean +1 upgraded, 3 newly installed, 1 to remove and 0 not upgraded. +After this operation, 126 MB disk space will be freed. +E: Trivial Only specified but this is not a trivial operation." aptget install libreoffice --trivial-only -o APT::Get::HideAutoRemove=small diff --git a/test/integration/test-bug-675449-essential-are-protected b/test/integration/test-bug-675449-essential-are-protected index f50507532..e62add938 100755 --- a/test/integration/test-bug-675449-essential-are-protected +++ b/test/integration/test-bug-675449-essential-are-protected @@ -87,3 +87,17 @@ Inst pkg-none-native [1] (2 unstable [amd64]) Conf pkg-none-native (2 unstable [amd64]) Inst pkg-none-new (2 unstable [amd64]) Conf pkg-none-new (2 unstable [amd64])' aptget dist-upgrade -s + +insertinstalledpackage 'foo' 'amd64' '1' 'Depends: libfoo +Essential: yes' +insertinstalledpackage 'libfoo' 'amd64' '1' +testequal 'Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + foo* libfoo* +WARNING: The following essential packages will be removed. +This should NOT be done unless you know exactly what you are doing! + foo libfoo (due to foo) +0 upgraded, 0 newly installed, 2 to remove and 4 not upgraded. +Purg foo [1] +Purg libfoo [1]' aptget purge libfoo -s diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove index c2fc37ee7..2b020ceca 100755 --- a/test/integration/test-kernel-helper-autoremove +++ b/test/integration/test-kernel-helper-autoremove @@ -58,6 +58,22 @@ testprotected() { testsuccessequal "Reading package lists... Building dependency tree... Reading state information... +The following packages were automatically installed and are no longer required: + linux-headers-1000000-1-generic (100.0.0-1) + linux-image-1.0.0-2-generic (1.0.0-2) + linux-image-100.0.0-1-generic (100.0.0-1) + $CURRENTKERNEL (1) +Use 'apt-get autoremove' to remove them. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV +testequal "Reading package lists... +Building dependency tree... +Reading state information... +4 packages were automatically installed and are no longer required. +Use 'apt-get autoremove' to remove them. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small +testequal "Reading package lists... +Building dependency tree... +Reading state information... The following packages will be REMOVED: linux-headers-1000000-1-generic (100.0.0-1) linux-image-1.0.0-2-generic (1.0.0-2) -- cgit v1.2.3-70-g09d2 From 26677b9c25b318c291d778eec758a06471fcba26 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Tue, 11 Aug 2015 17:41:27 +0200 Subject: po-fixups: fill Project-Id-Version and Encoding correctly Closes: 612996 --- doc/po/es.po | 2 +- doc/po/fr.po | 2 +- doc/po/it.po | 2 +- doc/po/ja.po | 2 +- doc/po/pl.po | 2 +- doc/po/pt.po | 2 +- doc/po/pt_BR.po | 2 +- po/ar.po | 2 +- po/cs.po | 2 +- po/cy.po | 2 +- po/dz.po | 2 +- po/el.po | 2 +- po/eu.po | 2 +- po/fr.po | 2 +- po/gl.po | 2 +- po/hu.po | 2 +- po/it.po | 2 +- po/km.po | 2 +- po/ko.po | 2 +- po/ku.po | 2 +- po/lt.po | 2 +- po/mr.po | 2 +- po/ne.po | 2 +- po/nn.po | 2 +- po/pt.po | 2 +- po/pt_BR.po | 2 +- po/ro.po | 2 +- po/sk.po | 2 +- po/sv.po | 2 +- po/th.po | 2 +- po/tl.po | 2 +- po/tr.po | 2 +- po/uk.po | 2 +- po/zh_TW.po | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) (limited to 'po/ar.po') diff --git a/doc/po/es.po b/doc/po/es.po index 590ae4aeb..31b22ed00 100644 --- a/doc/po/es.po +++ b/doc/po/es.po @@ -36,7 +36,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt 0.9.7.1\n" +"Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2014-11-06 09:45+0100\n" "PO-Revision-Date: 2014-07-04 01:31+0200\n" diff --git a/doc/po/fr.po b/doc/po/fr.po index 85869a2b7..0c9e3a346 100644 --- a/doc/po/fr.po +++ b/doc/po/fr.po @@ -9,7 +9,7 @@ # Jean-Pierre Giraud , 2014. msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2014-11-15 17:26+0100\n" diff --git a/doc/po/it.po b/doc/po/it.po index 28e97f14b..fabe6c544 100644 --- a/doc/po/it.po +++ b/doc/po/it.po @@ -8,7 +8,7 @@ # Beatrice Torracca , 2012, 2014, 2015. msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-10 09:48+0100\n" "PO-Revision-Date: 2015-01-27 14:11+0200\n" diff --git a/doc/po/ja.po b/doc/po/ja.po index 3e0712125..f504436c0 100644 --- a/doc/po/ja.po +++ b/doc/po/ja.po @@ -6,7 +6,7 @@ # KURASAWA Nozomu, 2003-2006, 2009-2012. msgid "" msgstr "" -"Project-Id-Version: apt 1.0.6\n" +"Project-Id-Version: apt-doc 1.0.6\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2014-11-06 09:45+0100\n" "PO-Revision-Date: 2014-07-10 19:52+0900\n" diff --git a/doc/po/pl.po b/doc/po/pl.po index 481d85af6..2b9114c6e 100644 --- a/doc/po/pl.po +++ b/doc/po/pl.po @@ -9,7 +9,7 @@ # Robert Luberda 2000-2004, 2010, 2012. msgid "" msgstr "" -"Project-Id-Version: apt 0.9.7.3\n" +"Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2014-11-06 09:45+0100\n" "PO-Revision-Date: 2014-07-04 02:13+0200\n" diff --git a/doc/po/pt.po b/doc/po/pt.po index 3aefcc2a9..82d470426 100644 --- a/doc/po/pt.po +++ b/doc/po/pt.po @@ -5,7 +5,7 @@ # Américo Monteiro , 2009 - 2014. msgid "" msgstr "" -"Project-Id-Version: apt 1.0.7\n" +"Project-Id-Version: apt-doc 1.0.7\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2014-11-06 09:45+0100\n" "PO-Revision-Date: 2014-08-29 00:34+0100\n" diff --git a/doc/po/pt_BR.po b/doc/po/pt_BR.po index 88b479e75..44e2f17f8 100644 --- a/doc/po/pt_BR.po +++ b/doc/po/pt_BR.po @@ -7,7 +7,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2014-11-06 09:45+0100\n" "PO-Revision-Date: 2004-09-20 17:02+0000\n" diff --git a/po/ar.po b/po/ar.po index 8c1622d91..9bf40386f 100644 --- a/po/ar.po +++ b/po/ar.po @@ -4,7 +4,7 @@ # Ossama M. Khayat , 2005, 2006. msgid "" msgstr "" -"Project-Id-Version: apt_po\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2006-10-20 21:28+0300\n" diff --git a/po/cs.po b/po/cs.po index 4de2b7006..2c732fc29 100644 --- a/po/cs.po +++ b/po/cs.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2014-10-05 06:09+0200\n" diff --git a/po/cy.po b/po/cy.po index db9ec0bbc..7d2d6366e 100644 --- a/po/cy.po +++ b/po/cy.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: APT\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2005-06-06 13:46+0100\n" diff --git a/po/dz.po b/po/dz.po index e27ea6a90..12b6499f1 100644 --- a/po/dz.po +++ b/po/dz.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt_po.pot\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2006-09-19 09:49+0530\n" diff --git a/po/el.po b/po/el.po index b2370c6ad..bc3a784b9 100644 --- a/po/el.po +++ b/po/el.po @@ -14,7 +14,7 @@ # Θανάσης Νάτσης , 2012. msgid "" msgstr "" -"Project-Id-Version: apt_po_el\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2008-08-26 18:25+0300\n" diff --git a/po/eu.po b/po/eu.po index 528c6cc51..9e1647035 100644 --- a/po/eu.po +++ b/po/eu.po @@ -5,7 +5,7 @@ # Piarres Beobide , 2005, 2006, 2007, 2008, 2009. msgid "" msgstr "" -"Project-Id-Version: apt_po_eu\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2009-05-17 00:41+0200\n" diff --git a/po/fr.po b/po/fr.po index 0a437907f..0e3ae69b1 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,7 +7,7 @@ # Julien Patriarca , 2013. msgid "" msgstr "" -"Project-Id-Version: fr\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2013-12-15 16:45+0100\n" diff --git a/po/gl.po b/po/gl.po index 9ec10122b..9ad26c4e7 100644 --- a/po/gl.po +++ b/po/gl.po @@ -8,7 +8,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt_po_gl\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2011-05-12 15:28+0100\n" diff --git a/po/hu.po b/po/hu.po index fcf53f727..9475a9f42 100644 --- a/po/hu.po +++ b/po/hu.po @@ -5,7 +5,7 @@ # Gabor Kelemen , 2004, 2005, 2011, 2012. msgid "" msgstr "" -"Project-Id-Version: apt trunk\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2012-06-25 17:09+0200\n" diff --git a/po/it.po b/po/it.po index 6d9793c55..ca7a11027 100644 --- a/po/it.po +++ b/po/it.po @@ -6,7 +6,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-04-11 08:08+0200\n" "PO-Revision-Date: 2015-04-07 16:51+0100\n" diff --git a/po/km.po b/po/km.po index 8ae605510..263c30dea 100644 --- a/po/km.po +++ b/po/km.po @@ -8,7 +8,7 @@ # Khoem Sokhem , 2006. msgid "" msgstr "" -"Project-Id-Version: apt_po_km\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2006-10-10 09:48+0700\n" diff --git a/po/ko.po b/po/ko.po index e5b08fdec..969736cca 100644 --- a/po/ko.po +++ b/po/ko.po @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2010-08-30 02:31+0900\n" diff --git a/po/ku.po b/po/ku.po index 3b2d6ed12..f66836634 100644 --- a/po/ku.po +++ b/po/ku.po @@ -6,7 +6,7 @@ # Erdal Ronahi , 2008. msgid "" msgstr "" -"Project-Id-Version: apt-ku\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2008-05-08 12:48+0200\n" diff --git a/po/lt.po b/po/lt.po index 6d0365183..67ff3c8fb 100644 --- a/po/lt.po +++ b/po/lt.po @@ -6,7 +6,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2008-08-02 01:47-0400\n" diff --git a/po/mr.po b/po/mr.po index 31bdb63c9..69c133592 100644 --- a/po/mr.po +++ b/po/mr.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2008-11-20 23:27+0530\n" diff --git a/po/ne.po b/po/ne.po index b5fb2c6fc..83ffc1d37 100644 --- a/po/ne.po +++ b/po/ne.po @@ -4,7 +4,7 @@ # Shiva Pokharel , 2006. msgid "" msgstr "" -"Project-Id-Version: apt_po\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2006-06-12 14:35+0545\n" diff --git a/po/nn.po b/po/nn.po index 5c8c39967..1f079e98a 100644 --- a/po/nn.po +++ b/po/nn.po @@ -7,7 +7,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt_nn\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2005-02-14 23:30+0100\n" diff --git a/po/pt.po b/po/pt.po index 0e106a7d1..28b8be563 100644 --- a/po/pt.po +++ b/po/pt.po @@ -5,7 +5,7 @@ # Miguel Figueiredo , 2005-2012. msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2012-06-29 15:45+0100\n" diff --git a/po/pt_BR.po b/po/pt_BR.po index c50792b79..ad8c325c4 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,7 +5,7 @@ # Felipe Augusto van de Wiel (faw) , 2006-2008. msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2008-11-17 02:33-0200\n" diff --git a/po/ro.po b/po/ro.po index 7b94bd3d8..68628517b 100644 --- a/po/ro.po +++ b/po/ro.po @@ -5,7 +5,7 @@ # Eddy Petrișor , 2008. msgid "" msgstr "" -"Project-Id-Version: ro\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2008-11-15 02:21+0200\n" diff --git a/po/sk.po b/po/sk.po index 0aeb167ea..776b139c1 100644 --- a/po/sk.po +++ b/po/sk.po @@ -8,7 +8,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2012-06-28 20:49+0100\n" diff --git a/po/sv.po b/po/sv.po index bdf00ff65..7e7801f84 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2010-08-24 21:18+0100\n" diff --git a/po/th.po b/po/th.po index c016205c5..731b1de46 100644 --- a/po/th.po +++ b/po/th.po @@ -6,7 +6,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2014-12-12 13:00+0700\n" diff --git a/po/tl.po b/po/tl.po index be3371704..d6e1059e8 100644 --- a/po/tl.po +++ b/po/tl.po @@ -8,7 +8,7 @@ # msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2007-03-29 21:36+0800\n" diff --git a/po/tr.po b/po/tr.po index 8b8691a55..5a5c4fcd5 100644 --- a/po/tr.po +++ b/po/tr.po @@ -6,7 +6,7 @@ # Rosetta Contributors, 2009. msgid "" msgstr "" -"Project-Id-Version: apt\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-04-13 07:23+0200\n" "PO-Revision-Date: 2015-06-21 16:54+0200\n" diff --git a/po/uk.po b/po/uk.po index 514403641..1494413e9 100644 --- a/po/uk.po +++ b/po/uk.po @@ -10,7 +10,7 @@ # binary = двійковий msgid "" msgstr "" -"Project-Id-Version: apt-all\n" +"Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2012-09-25 20:19+0300\n" diff --git a/po/zh_TW.po b/po/zh_TW.po index f37e5e0ed..6b78c8340 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -6,7 +6,7 @@ # $Id: zh_TW.po,v 1.11 2004/04/30 04:50:38 mdz Exp $ msgid "" msgstr "" -"Project-Id-Version: 0.5.4\n" +"Project-Id-Version: apt 0.5.4\n" "Report-Msgid-Bugs-To: APT Development Team \n" "POT-Creation-Date: 2015-03-09 02:17+0100\n" "PO-Revision-Date: 2009-01-28 10:41+0800\n" -- cgit v1.2.3-70-g09d2