RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: [EMAIL PROTECTED]
Module: rpm Date: 02-May-2008 18:10:49
Branch: HEAD Handle: 2008050216104801
Modified files:
rpm CHANGES
rpm/lib depends.c rpmts.c
Log:
- jbj: initialize ts->PRCO lazily (measured 20.4% rpm -qa speedup
ymmv).
Summary:
Revision Changes Path
1.2314 +1 -0 rpm/CHANGES
1.396 +3 -3 rpm/lib/depends.c
2.146 +18 -7 rpm/lib/rpmts.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.2313 -r1.2314 CHANGES
--- rpm/CHANGES 29 Apr 2008 21:45:39 -0000 1.2313
+++ rpm/CHANGES 2 May 2008 16:10:48 -0000 1.2314
@@ -1,5 +1,6 @@
5.1.0 -> 5.2a0:
+ - jbj: initialize ts->PRCO lazily (measured 20.4% rpm -qa speedup ymmv).
- glen: print error when makeTempPath fails due missing temp dir
- jbj: add _fdopen to FDIO_t, expose fdbg(), make lzdio.c standalone.
- jbj: expose XfdLink/XfdFree/XfdNew, nuke the FDIO_t vectors.
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/depends.c
============================================================================
$ cvs diff -u -r1.395 -r1.396 depends.c
--- rpm/lib/depends.c 28 Apr 2008 16:37:20 -0000 1.395
+++ rpm/lib/depends.c 2 May 2008 16:10:49 -0000 1.396
@@ -1047,7 +1047,7 @@
#else
rpmTag tagN = RPMTAG_PROVIDENAME;
#endif
- rpmds P = rpmdsFromPRCO(ts->PRCO, tagN);
+ rpmds P = rpmdsFromPRCO(rpmtsPRCO(ts), tagN);
if (rpmdsSearch(P, dep) >= 0) {
rpmdsNotify(dep, _("(sysinfo provides)"), rc);
goto exit;
@@ -2607,8 +2607,8 @@
* Make sure transaction dependencies are satisfied.
*/
{ const char * tsNEVRA = "transaction dependencies";
- rpmds R = rpmdsFromPRCO(ts->PRCO, RPMTAG_REQUIRENAME);
- rpmds C = rpmdsFromPRCO(ts->PRCO, RPMTAG_CONFLICTNAME);
+ rpmds R = rpmdsFromPRCO(rpmtsPRCO(ts), RPMTAG_REQUIRENAME);
+ rpmds C = rpmdsFromPRCO(rpmtsPRCO(ts), RPMTAG_CONFLICTNAME);
rpmds D = NULL;
rpmds L = NULL;
const char * dep = NULL;
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/rpmts.c
============================================================================
$ cvs diff -u -r2.145 -r2.146 rpmts.c
--- rpm/lib/rpmts.c 2 Apr 2008 18:35:26 -0000 2.145
+++ rpm/lib/rpmts.c 2 May 2008 16:10:49 -0000 2.146
@@ -904,8 +904,24 @@
rpmPRCO rpmtsPRCO(rpmts ts)
{
+ rpmPRCO PRCO = NULL;
+
+ if (ts != NULL) {
+ static int oneshot = 0;
+ if (!oneshot) {
+ const char * fn = rpmGetPath("%{?_rpmds_sysinfo_path}", NULL);
+ int xx;
+
+ ts->PRCO = rpmdsNewPRCO(NULL);
+ if (fn && *fn != '\0' && !rpmioAccess(fn, NULL, R_OK))
+ xx = rpmdsSysinfo(ts->PRCO, NULL);
+ fn = _free(fn);
+ oneshot++;
+ }
+ PRCO = ts->PRCO;
+ }
/[EMAIL PROTECTED] -retexpose -usereleased @*/
- return (ts != NULL ? ts->PRCO : NULL);
+ return PRCO;
/[EMAIL PROTECTED] =retexpose =usereleased @*/
}
@@ -1297,12 +1313,7 @@
ts->nsuggests = 0;
ts->suggests = NULL;
- ts->PRCO = rpmdsNewPRCO(NULL);
- { const char * fn = rpmGetPath("%{?_rpmds_sysinfo_path}", NULL);
- if (fn && *fn != '\0' && !rpmioAccess(fn, NULL, R_OK))
- xx = rpmdsSysinfo(ts->PRCO, NULL);
- fn = _free(fn);
- }
+ ts->PRCO = NULL;
ts->sdb = NULL;
ts->sdbmode = O_RDONLY;
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]