RPM Package Manager, CVS Repository
/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 14-Aug-2010 00:40:52
Branch: rpm-5_1 Handle: 2009081422241731450592
Added files: (Branch: rpm-5_1)
rpm/rpmio rpmbag.c rpmbag.h
Modified files: (Branch: rpm-5_1)
rpm CHANGES
rpm/rpmio Makefile.am librpmio.vers poptIO.c rpmio.c
Removed files: (Branch: rpm-5_1)
rpm/rpmio gengpg.sh
Log:
- solve: stub-in toy add/del methods.
- solve: permit multiple solvedb's in a rpmbag.
Summary:
Revision Changes Path
1.2288.2.314+2 -0 rpm/CHANGES
1.162.2.27 +2 -3 rpm/rpmio/Makefile.am
2.3 +0 -45 rpm/rpmio/gengpg.sh
2.63.2.22 +4 -0 rpm/rpmio/librpmio.vers
1.24.2.10 +6 -0 rpm/rpmio/poptIO.c
2.2.6.2 +90 -0 rpm/rpmio/rpmbag.c
2.2.6.2 +105 -0 rpm/rpmio/rpmbag.h
1.127.2.27 +3 -0 rpm/rpmio/rpmio.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.2288.2.313 -r1.2288.2.314 CHANGES
--- rpm/CHANGES 13 Aug 2010 18:18:50 -0000 1.2288.2.313
+++ rpm/CHANGES 13 Aug 2010 22:40:48 -0000 1.2288.2.314
@@ -1,4 +1,6 @@
5.1.9 -> 5.1.10:
+ - jbj: solve: stub-in toy add/del methods.
+ - jbj: solve: permit multiple solvedb's in a rpmbag.
- jbj: solve: generalize %_dbpath to permit multiple rpmdb's.
- jbj: solve: flip --aid "opt-in" behavior to --noaid "opt-out".
- jbj: solve: fix: don't free the package file name when depsolving.
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/Makefile.am
============================================================================
$ cvs diff -u -r1.162.2.26 -r1.162.2.27 Makefile.am
--- rpm/rpmio/Makefile.am 13 Apr 2009 10:22:33 -0000 1.162.2.26
+++ rpm/rpmio/Makefile.am 13 Aug 2010 22:40:49 -0000 1.162.2.27
@@ -24,7 +24,6 @@
TESTS =
check_PROGRAMS =
check_SCRIPTS =
-dist_noinst_SCRIPTS = gengpg.sh testit.sh
AM_CPPFLAGS = \
-I$(srcdir) \
@@ -65,7 +64,7 @@
ar.h cpio.h crc.h fnmatch.h glob.h iosm.h \
md2.h md4.h poptIO.h rmd128.h rmd160.h rmd256.h rmd320.h sha224.h \
salsa10.h salsa20.h tar.h tiger.h \
- rpmhook.h rpmio_internal.h rpmlua.h rpmbz.h
+ rpmbag.h rpmbz.h rpmhook.h rpmio_internal.h rpmlua.h
usrlibdir = $(libdir)
usrlib_LTLIBRARIES = librpmio.la
@@ -75,7 +74,7 @@
macro.c mire.c mount.c poptIO.c \
md2.c md4.c rmd128.c rmd160.c rmd256.c rmd320.c sha224.c \
salsa10.c salsa20.c tiger.c \
- rpmbc.c rpmdav.c rpmgc.c rpmhash.c rpmhook.c rpmio.c rpmiob.c \
+ rpmbag.c rpmbc.c rpmdav.c rpmgc.c rpmhash.c rpmhook.c rpmio.c rpmiob.c \
rpmio-stub.c rpmku.c rpmlog.c rpmlua.c rpmmalloc.c rpmmg.c \
rpmnss.c rpmpgp.c rpmrpc.c rpmsq.c rpmssl.c rpmsw.c rpmuuid.c \
rpmxar.c rpmzlog.c strcasecmp.c strtolocale.c \
@@ .
rm -f rpm/rpmio/gengpg.sh <<'@@ .'
Index: rpm/rpmio/gengpg.sh
============================================================================
[NO CHANGE SUMMARY BECAUSE FILE AS A WHOLE IS JUST REMOVED]
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/librpmio.vers
============================================================================
$ cvs diff -u -r2.63.2.21 -r2.63.2.22 librpmio.vers
--- rpm/rpmio/librpmio.vers 6 Apr 2009 00:20:11 -0000 2.63.2.21
+++ rpm/rpmio/librpmio.vers 13 Aug 2010 22:40:49 -0000 2.63.2.22
@@ -251,6 +251,10 @@
_RequestPass;
Rmdir;
_Rmdir;
+ _rpmbag_debug;
+ rpmbagAdd;
+ rpmbagDel;
+ rpmbagNew;
rpmbcImplVecs;
rpmCleanPath;
rpmCLIMacroContext;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/poptIO.c
============================================================================
$ cvs diff -u -r1.24.2.9 -r1.24.2.10 poptIO.c
--- rpm/rpmio/poptIO.c 18 Apr 2009 16:45:17 -0000 1.24.2.9
+++ rpm/rpmio/poptIO.c 13 Aug 2010 22:40:49 -0000 1.24.2.10
@@ -25,6 +25,8 @@
#include <rpmssl.h>
#endif
+#include <rpmbag.h>
+
#include "debug.h"
const char *__progname;
@@ -402,6 +404,10 @@
N_("Debug rpmio I/O"), NULL},
{ "rpmiobdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmiob_debug, -1,
N_("Debug rpmio I/O buffers"), NULL},
+
+ { "rpmbagdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmbag_debug, -1,
+ N_("Debug depsolver wrappers "), NULL},
+
#ifdef WITH_LUA
{ "rpmluadebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmlua_debug, -1,
N_("Debug embedded Lua interpreter"), NULL},
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmbag.c
============================================================================
$ cvs diff -u -r0 -r2.2.6.2 rpmbag.c
--- /dev/null 2010-08-14 00:34:25.000000000 +0200
+++ rpmbag.c 2010-08-14 00:40:51.361565633 +0200
@@ -0,0 +1,90 @@
+/** \ingroup rpmio
+ * \file rpmio/rpmbag.c
+ */
+
+#include "system.h"
+
+#include <rpmiotypes.h>
+#include <rpmio.h> /* for *Pool methods */
+#include <rpmlog.h>
+#include <rpmurl.h>
+#define _RPMBAG_INTERNAL
+#include <rpmbag.h>
+
+#include "debug.h"
+
+/*@unchecked@*/
+int _rpmbag_debug = 0;
+
+static int _maxnsdbp = 5;
+
+static void rpmbagFini(void * _bag)
+ /*@globals fileSystem @*/
+ /*@modifies *_bag, fileSystem @*/
+{
+ rpmbag bag = _bag;
+
+ bag->sdbp = _free(bag->sdbp);
+ bag->nsdbp = 0;
+ bag->fn = _free(bag->fn);
+ bag->flags = 0;
+}
+
+/*@unchecked@*/ /*@only@*/ /*@null@*/
+rpmioPool _rpmbagPool = NULL;
+
+static rpmbag rpmbagGetPool(/*@null@*/ rpmioPool pool)
+ /*@globals _rpmbagPool, fileSystem @*/
+ /*@modifies pool, _rpmbagPool, fileSystem @*/
+{
+ rpmbag bag;
+
+ if (_rpmbagPool == NULL) {
+ _rpmbagPool = rpmioNewPool("bag", sizeof(*bag), -1, _rpmbag_debug,
+ NULL, NULL, rpmbagFini);
+ pool = _rpmbagPool;
+ }
+ bag = (rpmbag) rpmioGetPool(pool, sizeof(*bag));
+ memset(((char *)bag)+sizeof(bag->_item), 0, sizeof(*bag)-sizeof(bag->_item));
+ return bag;
+}
+
+rpmbag rpmbagNew(const char * fn, int flags)
+{
+ rpmbag bag = rpmbagGetPool(_rpmbagPool);
+
+ if (fn)
+ bag->fn = xstrdup(fn);
+ bag->flags = flags;
+
+ bag->sdbp = xcalloc(_maxnsdbp, sizeof(*bag->sdbp));
+
+ return rpmbagLink(bag);
+}
+
+int rpmbagAdd(rpmbag bag, void *_db, int dbmode)
+{
+ if (bag && bag->sdbp && (int)bag->nsdbp >= 0 && bag->nsdbp < _maxnsdbp) {
+ rpmsdb * sdbp = bag->sdbp;
+ int i = bag->nsdbp++; /* XXX find empty slot */
+ sdbp[i] = xcalloc(1, sizeof(*sdbp[i]));
+ sdbp[i]->dbmode = dbmode;
+ sdbp[i]->_db = _db;
+ }
+
+ return 0;
+}
+
+int rpmbagDel(rpmbag bag, int i)
+{
+
+ if (bag && bag->sdbp && i >= 0 && i <= _maxnsdbp) {
+ rpmsdb * sdbp = bag->sdbp;
+ memset(sdbp[i], 0, sizeof(*sdbp[i]));
+ sdbp[i] = _free(sdbp[i]);
+ if ((i+1) == (int)bag->nsdbp) /* XXX find empty slot */
+ bag->nsdbp--;
+ }
+
+ return 0;
+}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmbag.h
============================================================================
$ cvs diff -u -r0 -r2.2.6.2 rpmbag.h
--- /dev/null 2010-08-14 00:34:25.000000000 +0200
+++ rpmbag.h 2010-08-14 00:40:51.611579944 +0200
@@ -0,0 +1,105 @@
+#ifndef H_RPMBAG
+#define H_RPMBAG
+
+/** \ingroup rpmio
+ * \file rpmio/rpmbag.h
+ */
+
+/** \ingroup rpmio
+ */
+/*@unchecked@*/
+extern int _rpmbag_debug;
+
+/** \ingroup rpmio
+ */
+typedef /*@refcounted@*/ struct rpmbag_s * rpmbag;
+typedef struct rpmsdb_s * rpmsdb;
+
+#if defined(_RPMBAG_INTERNAL)
+
+struct rpmsdb_s {
+ struct rpmioItem_s _item; /*!< usage mutex and pool identifier. */
+ void * _bf;
+ int dbmode;
+ void * _db;
+#if defined(__LCLINT__)
+/*@refs@*/
+ int nrefs; /*!< (unused) keep splint happy */
+#endif
+};
+
+/** \ingroup rpmio
+ */
+struct rpmbag_s {
+ struct rpmioItem_s _item; /*!< usage mutex and pool identifier. */
+ const char * fn;
+ int flags;
+ size_t nsdbp;
+ rpmsdb * sdbp;
+#if defined(__LCLINT__)
+/*@refs@*/
+ int nrefs; /*!< (unused) keep splint happy */
+#endif
+};
+#endif /* _RPMBAG_INTERNAL */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Unreference a bag wrapper instance.
+ * @param bag bag wrapper
+ * @return NULL on last dereference
+ */
+/*@unused@*/ /*@null@*/
+rpmbag rpmbagUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmbag bag)
+ /*@modifies bag @*/;
+#define rpmbagUnlink(_bag) \
+ ((rpmbag)rpmioUnlinkPoolItem((rpmioItem)(_bag), __FUNCTION__, __FILE__, __LINE__))
+
+/**
+ * Reference a bag wrapper instance.
+ * @param bag bag wrapper
+ * @return new bag wrapper reference
+ */
+/*@unused@*/ /*@newref@*/ /*@null@*/
+rpmbag rpmbagLink (/*@null@*/ rpmbag bag)
+ /*@modifies bag @*/;
+#define rpmbagLink(_bag) \
+ ((rpmbag)rpmioLinkPoolItem((rpmioItem)(_bag), __FUNCTION__, __FILE__, __LINE__))
+
+/**
+ * Destroy a bag wrapper.
+ * @param bag bag wrapper
+ * @return NULL on last dereference
+ */
+/*@null@*/
+rpmbag rpmbagFree(/*@killref@*/ /*@null@*/rpmbag bag)
+ /*@globals fileSystem @*/
+ /*@modifies bag, fileSystem @*/;
+#define rpmbagFree(_bag) \
+ ((rpmbag)rpmioFreePoolItem((rpmioItem)(_bag), __FUNCTION__, __FILE__, __LINE__))
+
+/**
+ * Create and load a bag wrapper.
+ * @param fn bag file
+ * @param flags bag flags
+ * @return new bag wrapper
+ */
+/*@newref@*/ /*@null@*/
+rpmbag rpmbagNew(const char * fn, int flags)
+ /*@globals fileSystem, internalState @*/
+ /*@modifies fileSystem, internalState @*/;
+
+int rpmbagAdd(rpmbag bag, void *_db, int dbmode)
+ /*@*/;
+
+int rpmbagDel(rpmbag bag, int i)
+ /*@*/;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* H_RPMBAG */
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmio.c
============================================================================
$ cvs diff -u -r1.127.2.26 -r1.127.2.27 rpmio.c
--- rpm/rpmio/rpmio.c 11 Apr 2009 16:34:41 -0000 1.127.2.26
+++ rpm/rpmio/rpmio.c 13 Aug 2010 22:40:49 -0000 1.127.2.27
@@ -3145,6 +3145,7 @@
extern rpmioPool _mirePool;
extern rpmioPool _htPool;
/*@=shadow@*/
+ extern rpmioPool _rpmbagPool;
extern rpmioPool _rpmmgPool;
/*@=nestedextern@*/
#if defined(WITH_LUA)
@@ -3166,6 +3167,8 @@
#endif
urlFreeCache();
+ _rpmbagPool = rpmioFreePool(_rpmbagPool);
+
#if defined(WITH_LUA)
_rpmluavPool = rpmioFreePool(_rpmluavPool);
_rpmluaPool = rpmioFreePool(_rpmluaPool);
@@ .
Received on Sat Aug 14 00:40:52 2010