Optimize rpmstrPool usage
Introduce global rpmstrPool object and make all rpmds constructors use it.
This commit is contained in:
parent
7fbdefdcc2
commit
faf04db603
@ -53,6 +53,8 @@ libapt_pkg_la_SOURCES = \
|
|||||||
rpm/rpmrecords.h \
|
rpm/rpmrecords.h \
|
||||||
rpm/rpmsrcrecords.cc \
|
rpm/rpmsrcrecords.cc \
|
||||||
rpm/rpmsrcrecords.h \
|
rpm/rpmsrcrecords.h \
|
||||||
|
rpm/rpmstrPool.cc \
|
||||||
|
rpm/rpmstrPool.h \
|
||||||
rpm/rpmsystem.cc \
|
rpm/rpmsystem.cc \
|
||||||
rpm/rpmsystem.h \
|
rpm/rpmsystem.h \
|
||||||
rpm/rpmversion.cc \
|
rpm/rpmversion.cc \
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include <apt-pkg/rpmhandler.h>
|
#include <apt-pkg/rpmhandler.h>
|
||||||
#include <apt-pkg/rpmpackagedata.h>
|
#include <apt-pkg/rpmpackagedata.h>
|
||||||
#include <apt-pkg/rpmsystem.h>
|
#include <apt-pkg/rpmsystem.h>
|
||||||
|
#include <apt-pkg/rpmstrPool.h>
|
||||||
#include <apt-pkg/error.h>
|
#include <apt-pkg/error.h>
|
||||||
#include <apt-pkg/configuration.h>
|
#include <apt-pkg/configuration.h>
|
||||||
#include <apt-pkg/strutl.h>
|
#include <apt-pkg/strutl.h>
|
||||||
@ -460,9 +461,9 @@ bool rpmListParser::ParseDepends(pkgCache::VerIterator Ver,
|
|||||||
{
|
{
|
||||||
#if RPM_VERSION >= 0x040404
|
#if RPM_VERSION >= 0x040404
|
||||||
rpmds rpmlibProv = NULL;
|
rpmds rpmlibProv = NULL;
|
||||||
rpmds ds = rpmdsSingle(RPMTAG_PROVIDENAME,
|
rpmds ds = dsSingleGlobal(RPMTAG_PROVIDENAME,
|
||||||
namel[i], verl?verl[i]:NULL, flagl[i]);
|
namel[i], verl?verl[i]:NULL, flagl[i]);
|
||||||
rpmdsRpmlib(&rpmlibProv, NULL);
|
dsRpmlibGlobal(&rpmlibProv, NULL);
|
||||||
int res = rpmdsSearch(rpmlibProv, ds) >= 0;
|
int res = rpmdsSearch(rpmlibProv, ds) >= 0;
|
||||||
rpmdsFree(ds);
|
rpmdsFree(ds);
|
||||||
rpmdsFree(rpmlibProv);
|
rpmdsFree(rpmlibProv);
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <apt-pkg/error.h>
|
#include <apt-pkg/error.h>
|
||||||
#include <apt-pkg/strutl.h>
|
#include <apt-pkg/strutl.h>
|
||||||
#include <apt-pkg/rpmhandler.h>
|
#include <apt-pkg/rpmhandler.h>
|
||||||
|
#include <apt-pkg/rpmstrPool.h>
|
||||||
#include <apt-pkg/pkgcache.h>
|
#include <apt-pkg/pkgcache.h>
|
||||||
|
|
||||||
#include <apti18n.h>
|
#include <apti18n.h>
|
||||||
@ -514,9 +515,9 @@ bool rpmSrcRecordParser::BuildDepends(vector<pkgSrcRecords::Parser::BuildDepRec>
|
|||||||
{
|
{
|
||||||
#if RPM_VERSION >= 0x040404
|
#if RPM_VERSION >= 0x040404
|
||||||
rpmds rpmlibProv = NULL;
|
rpmds rpmlibProv = NULL;
|
||||||
rpmds ds = rpmdsSingle(RPMTAG_PROVIDENAME,
|
rpmds ds = dsSingleGlobal(RPMTAG_PROVIDENAME,
|
||||||
namel[i], verl?verl[i]:NULL, flagl[i]);
|
namel[i], verl?verl[i]:NULL, flagl[i]);
|
||||||
rpmdsRpmlib(&rpmlibProv, NULL);
|
dsRpmlibGlobal(&rpmlibProv, NULL);
|
||||||
int res = (rpmdsSearch(rpmlibProv, ds) != -1);
|
int res = (rpmdsSearch(rpmlibProv, ds) != -1);
|
||||||
rpmdsFree(ds);
|
rpmdsFree(ds);
|
||||||
rpmdsFree(rpmlibProv);
|
rpmdsFree(rpmlibProv);
|
||||||
|
21
apt/apt-pkg/rpm/rpmstrPool.cc
Normal file
21
apt/apt-pkg/rpm/rpmstrPool.cc
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include <apt-pkg/rpmstrPool.h>
|
||||||
|
#include <rpm/rpmstrpool.h>
|
||||||
|
|
||||||
|
static rpmstrPool global_rpmstrPool;
|
||||||
|
|
||||||
|
rpmds dsSingleGlobal(rpmTagVal tagN, const char * N, const char * EVR,
|
||||||
|
rpmsenseFlags Flags)
|
||||||
|
{
|
||||||
|
if (!global_rpmstrPool)
|
||||||
|
global_rpmstrPool = rpmstrPoolCreate();
|
||||||
|
|
||||||
|
return rpmdsSinglePool(global_rpmstrPool, tagN, N, EVR, Flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
int dsRpmlibGlobal(rpmds * dsp, const void * tblp)
|
||||||
|
{
|
||||||
|
if (!global_rpmstrPool)
|
||||||
|
global_rpmstrPool = rpmstrPoolCreate();
|
||||||
|
|
||||||
|
return rpmdsRpmlibPool(global_rpmstrPool, dsp, tblp);
|
||||||
|
}
|
8
apt/apt-pkg/rpm/rpmstrPool.h
Normal file
8
apt/apt-pkg/rpm/rpmstrPool.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include <sys/types.h>
|
||||||
|
#include <rpm/rpmtypes.h>
|
||||||
|
#include <rpm/rpmds.h>
|
||||||
|
|
||||||
|
rpmds dsSingleGlobal(rpmTagVal tagN, const char * N, const char * EVR,
|
||||||
|
rpmsenseFlags Flags);
|
||||||
|
|
||||||
|
int dsRpmlibGlobal(rpmds * dsp, const void * tblp);
|
@ -20,6 +20,7 @@
|
|||||||
#ifdef HAVE_RPM
|
#ifdef HAVE_RPM
|
||||||
|
|
||||||
#include <apt-pkg/rpmversion.h>
|
#include <apt-pkg/rpmversion.h>
|
||||||
|
#include <apt-pkg/rpmstrPool.h>
|
||||||
#include <apt-pkg/pkgcache.h>
|
#include <apt-pkg/pkgcache.h>
|
||||||
|
|
||||||
#include <rpm/rpmlib.h>
|
#include <rpm/rpmlib.h>
|
||||||
@ -207,8 +208,8 @@ bool rpmVersioningSystem::CheckDep(const char *PkgVer,
|
|||||||
return invert ? false : true;
|
return invert ? false : true;
|
||||||
|
|
||||||
#if RPM_VERSION >= 0x040100
|
#if RPM_VERSION >= 0x040100
|
||||||
rpmds pds = rpmdsSingle(RPMTAG_PROVIDENAME, "", PkgVer, PkgFlags);
|
rpmds pds = dsSingleGlobal(RPMTAG_PROVIDENAME, "", PkgVer, PkgFlags);
|
||||||
rpmds dds = rpmdsSingle(RPMTAG_REQUIRENAME, "", DepVer, DepFlags);
|
rpmds dds = dsSingleGlobal(RPMTAG_REQUIRENAME, "", DepVer, DepFlags);
|
||||||
#if RPM_VERSION >= 0x040201
|
#if RPM_VERSION >= 0x040201
|
||||||
rpmdsSetNoPromote(pds, _rpmds_nopromote);
|
rpmdsSetNoPromote(pds, _rpmds_nopromote);
|
||||||
rpmdsSetNoPromote(dds, _rpmds_nopromote);
|
rpmdsSetNoPromote(dds, _rpmds_nopromote);
|
||||||
|
Loading…
Reference in New Issue
Block a user