return true;
}
/*}}}*/
-
-
-// helper that can go wit hthe next ABI break
-#if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR < 13)
-static std::string MetaIndexFileNameOnDisk(metaIndex *metaindex)
-{
- // FIXME: this cast is the horror, the horror
- debReleaseIndex *r = (debReleaseIndex*)metaindex;
-
- // see if we have a InRelease file
- std::string PathInRelease = r->MetaIndexFile("InRelease");
- if (FileExists(PathInRelease))
- return PathInRelease;
-
- // and if not return the normal one
- if (FileExists(PathInRelease))
- return r->MetaIndexFile("Release");
-
- return "";
-}
-#endif
-
// GetReleaseForSourceRecord - Return Suite for the given srcrecord /*{{{*/
// ---------------------------------------------------------------------
/* */
{
if (&CurrentIndexFile == (*IF))
{
-#if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR < 13)
- std::string path = MetaIndexFileNameOnDisk(*S);
-#else
- std::string path = (*S)->LocalFileName();
-#endif
- if (path != "")
+ std::string const path = (*S)->LocalFileName();
+ if (path != "")
{
indexRecords records;
records.Load(path);
// 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)
{
(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;
}
}
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
}
}
}
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;
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());
}
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;
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)
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;
}
/*}}}*/