|
|
@@ -195,7 +195,7 @@ static std::string GetReleaseForSourceRecord(pkgSourceList *SrcList,
|
|
|
// FindSrc - Find a source record /*{{{*/
|
|
|
// ---------------------------------------------------------------------
|
|
|
/* */
|
|
|
-static pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
|
|
|
+static pkgSrcRecords::Parser *FindSrc(const char *Name,
|
|
|
pkgSrcRecords &SrcRecs,string &Src,
|
|
|
CacheFile &CacheFile)
|
|
|
{
|
|
|
@@ -303,16 +303,10 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
|
|
|
(VF.File().Archive() != 0 && VF.File().Archive() == RelTag) ||
|
|
|
(VF.File().Codename() != 0 && VF.File().Codename() == RelTag))
|
|
|
{
|
|
|
- pkgRecords::Parser &Parse = Recs.Lookup(VF);
|
|
|
- Src = Parse.SourcePkg();
|
|
|
- // no SourcePkg name, so it is the "binary" name
|
|
|
- if (Src.empty() == true)
|
|
|
- Src = TmpSrc;
|
|
|
+ Src = Ver.SourcePkgName();
|
|
|
// the Version we have is possibly fuzzy or includes binUploads,
|
|
|
- // so we use the Version of the SourcePkg (empty if same as package)
|
|
|
- VerTag = Parse.SourceVer();
|
|
|
- if (VerTag.empty() == true)
|
|
|
- VerTag = Ver.VerStr();
|
|
|
+ // so we use the Version of the SourcePkg
|
|
|
+ VerTag = Ver.SourceVerStr();
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -343,10 +337,10 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
|
|
|
pkgCache::VerIterator Ver = Cache->GetCandidateVer(Pkg);
|
|
|
if (Ver.end() == false)
|
|
|
{
|
|
|
- pkgRecords::Parser &Parse = Recs.Lookup(Ver.FileList());
|
|
|
- Src = Parse.SourcePkg();
|
|
|
- if (VerTag.empty() == true)
|
|
|
- VerTag = Parse.SourceVer();
|
|
|
+ if (strcmp(Ver.SourcePkgName(),Ver.ParentPkg().Name()) != 0)
|
|
|
+ Src = Ver.SourcePkgName();
|
|
|
+ if (VerTag.empty() == true && strcmp(Ver.SourceVerStr(),Ver.VerStr()) != 0)
|
|
|
+ VerTag = Ver.SourceVerStr();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -731,7 +725,6 @@ static bool DoSource(CommandLine &CmdL)
|
|
|
pkgSourceList *List = Cache.GetSourceList();
|
|
|
|
|
|
// Create the text record parsers
|
|
|
- pkgRecords Recs(Cache);
|
|
|
pkgSrcRecords SrcRecs(*List);
|
|
|
if (_error->PendingError() == true)
|
|
|
return false;
|
|
|
@@ -760,7 +753,7 @@ static bool DoSource(CommandLine &CmdL)
|
|
|
for (const char **I = CmdL.FileList + 1; *I != 0; I++, J++)
|
|
|
{
|
|
|
string Src;
|
|
|
- pkgSrcRecords::Parser *Last = FindSrc(*I,Recs,SrcRecs,Src,Cache);
|
|
|
+ pkgSrcRecords::Parser *Last = FindSrc(*I,SrcRecs,Src,Cache);
|
|
|
|
|
|
if (Last == 0) {
|
|
|
return _error->Error(_("Unable to find a source package for %s"),Src.c_str());
|
|
|
@@ -1037,7 +1030,6 @@ static bool DoBuildDep(CommandLine &CmdL)
|
|
|
pkgSourceList *List = Cache.GetSourceList();
|
|
|
|
|
|
// Create the text record parsers
|
|
|
- pkgRecords Recs(Cache);
|
|
|
pkgSrcRecords SrcRecs(*List);
|
|
|
if (_error->PendingError() == true)
|
|
|
return false;
|
|
|
@@ -1090,7 +1082,7 @@ static bool DoBuildDep(CommandLine &CmdL)
|
|
|
Last = Type->CreateSrcPkgParser(*I);
|
|
|
} else {
|
|
|
// normal case, search the cache for the source file
|
|
|
- Last = FindSrc(*I,Recs,SrcRecs,Src,Cache);
|
|
|
+ Last = FindSrc(*I,SrcRecs,Src,Cache);
|
|
|
}
|
|
|
|
|
|
if (Last == 0)
|
|
|
@@ -1441,21 +1433,15 @@ static bool DoBuildDep(CommandLine &CmdL)
|
|
|
* pool/ next to the deb itself)
|
|
|
* Example return: "pool/main/a/apt/apt_0.8.8ubuntu3"
|
|
|
*/
|
|
|
-static string GetChangelogPath(CacheFile &Cache,
|
|
|
- pkgCache::PkgIterator Pkg,
|
|
|
+static string GetChangelogPath(CacheFile &Cache,
|
|
|
pkgCache::VerIterator Ver)
|
|
|
{
|
|
|
- string path;
|
|
|
-
|
|
|
pkgRecords Recs(Cache);
|
|
|
pkgRecords::Parser &rec=Recs.Lookup(Ver.FileList());
|
|
|
- string srcpkg = rec.SourcePkg().empty() ? Pkg.Name() : rec.SourcePkg();
|
|
|
- string ver = Ver.VerStr();
|
|
|
- // if there is a source version it always wins
|
|
|
- if (rec.SourceVer() != "")
|
|
|
- ver = rec.SourceVer();
|
|
|
- path = flNotFile(rec.FileName());
|
|
|
- path += srcpkg + "_" + StripEpoch(ver);
|
|
|
+ string path = flNotFile(rec.FileName());
|
|
|
+ path.append(Ver.SourcePkgName());
|
|
|
+ path.append("_");
|
|
|
+ path.append(StripEpoch(Ver.SourceVerStr()));
|
|
|
return path;
|
|
|
}
|
|
|
/*}}}*/
|
|
|
@@ -1469,7 +1455,6 @@ static string GetChangelogPath(CacheFile &Cache,
|
|
|
* http://packages.medibuntu.org/pool/non-free/m/mplayer/mplayer_1.0~rc4~try1.dsfg1-1ubuntu1+medibuntu1.changelog
|
|
|
*/
|
|
|
static bool GuessThirdPartyChangelogUri(CacheFile &Cache,
|
|
|
- pkgCache::PkgIterator Pkg,
|
|
|
pkgCache::VerIterator Ver,
|
|
|
string &out_uri)
|
|
|
{
|
|
|
@@ -1484,7 +1469,7 @@ static bool GuessThirdPartyChangelogUri(CacheFile &Cache,
|
|
|
return false;
|
|
|
|
|
|
// get archive uri for the binary deb
|
|
|
- string path_without_dot_changelog = GetChangelogPath(Cache, Pkg, Ver);
|
|
|
+ string path_without_dot_changelog = GetChangelogPath(Cache, Ver);
|
|
|
out_uri = index->ArchiveURI(path_without_dot_changelog + ".changelog");
|
|
|
|
|
|
// now strip away the filename and add srcpkg_srcver.changelog
|
|
|
@@ -1502,25 +1487,20 @@ static bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher,
|
|
|
* GuessThirdPartyChangelogUri for details how)
|
|
|
*/
|
|
|
{
|
|
|
- string path;
|
|
|
- string descr;
|
|
|
- string server;
|
|
|
- string changelog_uri;
|
|
|
-
|
|
|
- // data structures we need
|
|
|
- pkgCache::PkgIterator Pkg = Ver.ParentPkg();
|
|
|
-
|
|
|
// make the server root configurable
|
|
|
- server = _config->Find("Apt::Changelogs::Server",
|
|
|
+ string const server = _config->Find("Apt::Changelogs::Server",
|
|
|
"http://packages.debian.org/changelogs");
|
|
|
- path = GetChangelogPath(CacheFile, Pkg, Ver);
|
|
|
+ string const path = GetChangelogPath(CacheFile, Ver);
|
|
|
+ string changelog_uri;
|
|
|
strprintf(changelog_uri, "%s/%s/changelog", server.c_str(), path.c_str());
|
|
|
if (_config->FindB("APT::Get::Print-URIs", false) == true)
|
|
|
{
|
|
|
std::cout << '\'' << changelog_uri << '\'' << std::endl;
|
|
|
return true;
|
|
|
}
|
|
|
+ pkgCache::PkgIterator const Pkg = Ver.ParentPkg();
|
|
|
|
|
|
+ string descr;
|
|
|
strprintf(descr, _("Changelog for %s (%s)"), Pkg.Name(), changelog_uri.c_str());
|
|
|
// queue it
|
|
|
new pkgAcqFile(&Fetcher, changelog_uri, "", 0, descr, Pkg.Name(), "ignored", targetfile);
|
|
|
@@ -1531,7 +1511,7 @@ static bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher,
|
|
|
if (!FileExists(targetfile))
|
|
|
{
|
|
|
string third_party_uri;
|
|
|
- if (GuessThirdPartyChangelogUri(CacheFile, Pkg, Ver, third_party_uri))
|
|
|
+ if (GuessThirdPartyChangelogUri(CacheFile, Ver, third_party_uri))
|
|
|
{
|
|
|
strprintf(descr, _("Changelog for %s (%s)"), Pkg.Name(), third_party_uri.c_str());
|
|
|
new pkgAcqFile(&Fetcher, third_party_uri, "", 0, descr, Pkg.Name(), "ignored", targetfile);
|