|
|
@ -170,7 +170,11 @@ static std::string GetReleaseForSourceRecord(pkgSourceList *SrcList, |
|
|
|
// FindSrc - Find a source record /*{{{*/
|
|
|
|
// ---------------------------------------------------------------------
|
|
|
|
/* */ |
|
|
|
#if APT_PKG_ABI >= 413 |
|
|
|
static pkgSrcRecords::Parser *FindSrc(const char *Name, |
|
|
|
#else |
|
|
|
static pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs, |
|
|
|
#endif |
|
|
|
pkgSrcRecords &SrcRecs,string &Src, |
|
|
|
CacheFile &CacheFile) |
|
|
|
{ |
|
|
@ -278,10 +282,21 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name, |
|
|
|
(VF.File().Archive() != 0 && VF.File().Archive() == RelTag) || |
|
|
|
(VF.File().Codename() != 0 && VF.File().Codename() == RelTag)) |
|
|
|
{ |
|
|
|
Src = Ver.SourcePkgName(); |
|
|
|
// the Version we have is possibly fuzzy or includes binUploads,
|
|
|
|
// so we use the Version of the SourcePkg
|
|
|
|
// so we use the Version of the SourcePkg (empty if same as package)
|
|
|
|
#if APT_PKG_ABI >= 413 |
|
|
|
Src = Ver.SourcePkgName(); |
|
|
|
VerTag = Ver.SourceVerStr(); |
|
|
|
#else |
|
|
|
pkgRecords::Parser &Parse = Recs.Lookup(VF); |
|
|
|
Src = Parse.SourcePkg(); |
|
|
|
// no SourcePkg name, so it is the "binary" name
|
|
|
|
if (Src.empty() == true) |
|
|
|
Src = TmpSrc; |
|
|
|
VerTag = Parse.SourceVer(); |
|
|
|
if (VerTag.empty() == true) |
|
|
|
VerTag = Ver.VerStr(); |
|
|
|
#endif |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
@ -312,10 +327,17 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name, |
|
|
|
pkgCache::VerIterator Ver = Cache->GetCandidateVer(Pkg); |
|
|
|
if (Ver.end() == false) |
|
|
|
{ |
|
|
|
#if APT_PKG_ABI >= 413 |
|
|
|
if (strcmp(Ver.SourcePkgName(),Ver.ParentPkg().Name()) != 0) |
|
|
|
Src = Ver.SourcePkgName(); |
|
|
|
if (VerTag.empty() == true && strcmp(Ver.SourceVerStr(),Ver.VerStr()) != 0) |
|
|
|
VerTag = Ver.SourceVerStr(); |
|
|
|
#else |
|
|
|
pkgRecords::Parser &Parse = Recs.Lookup(Ver.FileList()); |
|
|
|
Src = Parse.SourcePkg(); |
|
|
|
if (VerTag.empty() == true) |
|
|
|
VerTag = Parse.SourceVer(); |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -717,6 +739,9 @@ static bool DoSource(CommandLine &CmdL) |
|
|
|
pkgSourceList *List = Cache.GetSourceList(); |
|
|
|
|
|
|
|
// Create the text record parsers
|
|
|
|
#if APT_PKG_ABI < 413 |
|
|
|
pkgRecords Recs(Cache); |
|
|
|
#endif |
|
|
|
pkgSrcRecords SrcRecs(*List); |
|
|
|
if (_error->PendingError() == true) |
|
|
|
return false; |
|
|
@ -744,8 +769,11 @@ static bool DoSource(CommandLine &CmdL) |
|
|
|
for (const char **I = CmdL.FileList + 1; *I != 0; I++, J++) |
|
|
|
{ |
|
|
|
string Src; |
|
|
|
#if APT_PKG_ABI >= 413 |
|
|
|
pkgSrcRecords::Parser *Last = FindSrc(*I,SrcRecs,Src,Cache); |
|
|
|
|
|
|
|
#else |
|
|
|
pkgSrcRecords::Parser *Last = FindSrc(*I,Recs,SrcRecs,Src,Cache); |
|
|
|
#endif |
|
|
|
if (Last == 0) { |
|
|
|
return _error->Error(_("Unable to find a source package for %s"),Src.c_str()); |
|
|
|
} |
|
|
@ -1004,6 +1032,9 @@ static bool DoBuildDep(CommandLine &CmdL) |
|
|
|
pkgSourceList *List = Cache.GetSourceList(); |
|
|
|
|
|
|
|
// Create the text record parsers
|
|
|
|
#if APT_PKG_ABI < 413 |
|
|
|
pkgRecords Recs(Cache); |
|
|
|
#endif |
|
|
|
pkgSrcRecords SrcRecs(*List); |
|
|
|
if (_error->PendingError() == true) |
|
|
|
return false; |
|
|
@ -1050,7 +1081,11 @@ static bool DoBuildDep(CommandLine &CmdL) |
|
|
|
Last = Type->CreateSrcPkgParser(*I); |
|
|
|
} else { |
|
|
|
// normal case, search the cache for the source file
|
|
|
|
Last = FindSrc(*I,SrcRecs,Src,Cache); |
|
|
|
#if APT_PKG_ABI >= 413 |
|
|
|
Last = FindSrc(*I,SrcRecs,Src,Cache); |
|
|
|
#else |
|
|
|
Last = FindSrc(*I,Recs,SrcRecs,Src,Cache); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
if (Last == 0) |
|
|
@ -1407,9 +1442,18 @@ static string GetChangelogPath(CacheFile &Cache, |
|
|
|
pkgRecords Recs(Cache); |
|
|
|
pkgRecords::Parser &rec=Recs.Lookup(Ver.FileList()); |
|
|
|
string path = flNotFile(rec.FileName()); |
|
|
|
#if APT_PKG_ABI >= 413 |
|
|
|
path.append(Ver.SourcePkgName()); |
|
|
|
path.append("_"); |
|
|
|
path.append(StripEpoch(Ver.SourceVerStr())); |
|
|
|
#else |
|
|
|
string srcpkg = rec.SourcePkg().empty() ? Ver.ParentPkg().Name() : rec.SourcePkg(); |
|
|
|
string ver = Ver.VerStr(); |
|
|
|
// if there is a source version it always wins
|
|
|
|
if (rec.SourceVer() != "") |
|
|
|
ver = rec.SourceVer(); |
|
|
|
path += srcpkg + "_" + StripEpoch(ver); |
|
|
|
#endif |
|
|
|
return path; |
|
|
|
} |
|
|
|
/*}}}*/ |
|
|
|