diff options
Diffstat (limited to 'cmdline')
-rw-r--r-- | cmdline/apt-cache.cc | 10 | ||||
-rw-r--r-- | cmdline/apt-get.cc | 39 | ||||
-rw-r--r-- | cmdline/apt-mark.cc | 16 |
3 files changed, 46 insertions, 19 deletions
diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index ce869581b..0a2c28d23 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -597,6 +597,7 @@ bool ShowDepends(CommandLine &CmdL, bool const RevDepends) bool const Installed = _config->FindB("APT::Cache::Installed", false); bool const Important = _config->FindB("APT::Cache::Important", false); bool const ShowDepType = _config->FindB("APT::Cache::ShowDependencyType", RevDepends == false); + bool const ShowVersion = _config->FindB("APT::Cache::ShowVersion", false); bool const ShowPreDepends = _config->FindB("APT::Cache::ShowPre-Depends", true); bool const ShowDepends = _config->FindB("APT::Cache::ShowDepends", true); bool const ShowRecommends = _config->FindB("APT::Cache::ShowRecommends", Important == false); @@ -646,10 +647,13 @@ bool ShowDepends(CommandLine &CmdL, bool const RevDepends) if (ShowDepType == true) cout << D.DepType() << ": "; if (Trg->VersionList == 0) - cout << "<" << Trg.FullName(true) << ">" << endl; + cout << "<" << Trg.FullName(true) << ">"; else - cout << Trg.FullName(true) << endl; - + cout << Trg.FullName(true); + if (ShowVersion == true && D->Version != 0) + cout << " (" << pkgCache::CompTypeDeb(D->CompareOp) << ' ' << D.TargetVer() << ')'; + cout << std::endl; + if (Recurse == true && Shown[Trg->ID] == false) { Shown[Trg->ID] = true; diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index d4c7f4200..4e307b657 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1434,7 +1434,7 @@ bool TryToInstallBuildDep(pkgCache::PkgIterator Pkg,pkgCacheFile &Cache, if (Cache[Pkg].CandidateVer == 0 && Pkg->ProvidesList != 0) { CacheSetHelperAPTGet helper(c1out); - helper.showErrors(AllowFail == false); + helper.showErrors(false); pkgCache::VerIterator Ver = helper.canNotFindNewestVer(Cache, Pkg); if (Ver.end() == false) Pkg = Ver.ParentPkg(); @@ -2895,11 +2895,15 @@ bool DoBuildDep(CommandLine &CmdL) if (StripMultiArch == false && D->Type != pkgSrcRecords::Parser::BuildDependIndep) { size_t const colon = D->Package.find(":"); - if (colon != string::npos && - (strcmp(D->Package.c_str() + colon, ":any") == 0 || strcmp(D->Package.c_str() + colon, ":native") == 0)) - Pkg = Cache->FindPkg(D->Package.substr(0,colon)); + if (colon != string::npos) + { + if (strcmp(D->Package.c_str() + colon, ":any") == 0 || strcmp(D->Package.c_str() + colon, ":native") == 0) + Pkg = Cache->FindPkg(D->Package.substr(0,colon)); + else + Pkg = Cache->FindPkg(D->Package); + } else - Pkg = Cache->FindPkg(D->Package); + Pkg = Cache->FindPkg(D->Package, hostArch); // a bad version either is invalid or doesn't satify dependency #define BADVER(Ver) (Ver.end() == true || \ @@ -2918,13 +2922,13 @@ bool DoBuildDep(CommandLine &CmdL) } if (verlist.empty() == true) { - pkgCache::PkgIterator HostPkg = Cache->FindPkg(D->Package, hostArch); - if (HostPkg.end() == false) + pkgCache::PkgIterator BuildPkg = Cache->FindPkg(D->Package, "native"); + if (BuildPkg.end() == false && Pkg != BuildPkg) { - pkgCache::VerIterator Ver = (*Cache)[HostPkg].InstVerIter(*Cache); + pkgCache::VerIterator Ver = (*Cache)[BuildPkg].InstVerIter(*Cache); if (BADVER(Ver) == false) verlist.insert(Ver); - Ver = (*Cache)[HostPkg].CandidateVerIter(*Cache); + Ver = (*Cache)[BuildPkg].CandidateVerIter(*Cache); if (BADVER(Ver) == false) verlist.insert(Ver); } @@ -2943,6 +2947,8 @@ bool DoBuildDep(CommandLine &CmdL) Pkg = Ver.ParentPkg().Group().FindPkg(hostArch); else if (strcmp(D->Package.c_str() + colon, ":any") == 0) forbidden = "Multi-Arch: none"; + else if (strcmp(D->Package.c_str() + colon, ":native") == 0) + Pkg = Ver.ParentPkg().Group().FindPkg("native"); } else if (Ver->MultiArch == pkgCache::Version::Same) { @@ -2950,11 +2956,15 @@ bool DoBuildDep(CommandLine &CmdL) Pkg = Ver.ParentPkg().Group().FindPkg(hostArch); else if (strcmp(D->Package.c_str() + colon, ":any") == 0) forbidden = "Multi-Arch: same"; - // :native gets the buildArch + else if (strcmp(D->Package.c_str() + colon, ":native") == 0) + Pkg = Ver.ParentPkg().Group().FindPkg("native"); } else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) { - if (colon != string::npos) + if (colon == string::npos) + Pkg = Ver.ParentPkg().Group().FindPkg("native"); + else if (strcmp(D->Package.c_str() + colon, ":any") == 0 || + strcmp(D->Package.c_str() + colon, ":native") == 0) forbidden = "Multi-Arch: foreign"; } else if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed) @@ -2972,7 +2982,8 @@ bool DoBuildDep(CommandLine &CmdL) if (Pkg.end() == true) Pkg = Grp.FindPreferredPkg(true); } - // native gets buildArch + else if (strcmp(D->Package.c_str() + colon, ":native") == 0) + Pkg = Ver.ParentPkg().Group().FindPkg("native"); } if (forbidden.empty() == false) @@ -3004,7 +3015,7 @@ bool DoBuildDep(CommandLine &CmdL) else Pkg = Cache->FindPkg(D->Package); - if (Pkg.end() == true) + if (Pkg.end() == true || (Pkg->VersionList == 0 && Pkg->ProvidesList == 0)) { if (_config->FindB("Debug::BuildDeps",false) == true) cout << " (not found)" << (*D).Package << endl; @@ -3087,7 +3098,7 @@ bool DoBuildDep(CommandLine &CmdL) } } - if (TryToInstallBuildDep(Pkg,Cache,Fix,false,false) == true) + if (TryToInstallBuildDep(Pkg,Cache,Fix,false,false,false) == true) { // We successfully installed something; skip remaining alternatives skipAlternatives = hasAlternatives; diff --git a/cmdline/apt-mark.cc b/cmdline/apt-mark.cc index 2a093c55a..c5b7ca496 100644 --- a/cmdline/apt-mark.cc +++ b/cmdline/apt-mark.cc @@ -291,14 +291,26 @@ bool DoHold(CommandLine &CmdL) FILE* dpkg = fdopen(external[1], "w"); for (APT::PackageList::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg) { + if (dpkgMultiArch == false) + fprintf(dpkg, "%s", Pkg.FullName(true).c_str()); + else + { + if (Pkg->CurrentVer != 0) + fprintf(dpkg, "%s:%s", Pkg.Name(), Pkg.CurrentVer().Arch()); + else if (Pkg.VersionList().end() == false) + fprintf(dpkg, "%s:%s", Pkg.Name(), Pkg.VersionList().Arch()); + else + fprintf(dpkg, "%s", Pkg.FullName(false).c_str()); + } + if (MarkHold == true) { - fprintf(dpkg, "%s hold\n", Pkg.FullName(!dpkgMultiArch).c_str()); + fprintf(dpkg, " hold\n"); ioprintf(c1out,_("%s set on hold.\n"), Pkg.FullName(true).c_str()); } else { - fprintf(dpkg, "%s install\n", Pkg.FullName(!dpkgMultiArch).c_str()); + fprintf(dpkg, " install\n"); ioprintf(c1out,_("Canceled hold on %s.\n"), Pkg.FullName(true).c_str()); } } |