RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm-5_2: rpm/ CHANGES rpm/rpmio/ Makefile.am librpmio.vers ...

From: Jeff Johnson <jbj@rpm5.org>
Date: Sat 14 Aug 2010 - 00:24:17 CEST
Message-Id: <20100813222417.26528D1609@rpm5.org>
  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:24:17
  Branch: rpm-5_2                          Handle: 2010081322241401

  Added files:              (Branch: rpm-5_2)
    rpm/rpmio               rpmbag.c rpmbag.h
  Modified files:           (Branch: rpm-5_2)
    rpm                     CHANGES
    rpm/rpmio               Makefile.am librpmio.vers poptIO.c rpmio.c

  Log:
    - solve: stub-in toy add/del methods.
    - solve: permit multiple solvedb's in a rpmbag.

  Summary:
    Revision    Changes     Path
    1.2970.2.60 +2  -0      rpm/CHANGES
    1.228.2.6   +2  -2      rpm/rpmio/Makefile.am
    2.114.2.5   +4  -0      rpm/rpmio/librpmio.vers
    1.49.2.1    +6  -0      rpm/rpmio/poptIO.c
    2.2.4.2     +90 -0      rpm/rpmio/rpmbag.c
    2.2.4.2     +105 -0     rpm/rpmio/rpmbag.h
    1.192.2.5   +8  -3      rpm/rpmio/rpmio.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2970.2.59 -r1.2970.2.60 CHANGES
  --- rpm/CHANGES	13 Aug 2010 18:18:16 -0000	1.2970.2.59
  +++ rpm/CHANGES	13 Aug 2010 22:24:14 -0000	1.2970.2.60
  @@ -1,4 +1,6 @@
   5.2.1 -> 5.2.2:
  +    - 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.228.2.5 -r1.228.2.6 Makefile.am
  --- rpm/rpmio/Makefile.am	23 Jul 2009 16:25:27 -0000	1.228.2.5
  +++ rpm/rpmio/Makefile.am	13 Aug 2010 22:24:15 -0000	1.228.2.6
  @@ -66,7 +66,7 @@
   	argv.h ar.h cpio.h crc.h envvar.h fnmatch.h fts.h glob.h iosm.h \
   	md2.h md4.h rmd128.h rmd160.h rmd256.h rmd320.h sha224.h \
   	salsa10.h salsa20.h tiger.h \
  -	poptIO.h rpmbc.h rpmbz.h rpmdav.h rpmficl.h rpmgc.h rpmhash.h \
  +	poptIO.h rpmbag.h rpmbc.h rpmbz.h rpmdav.h rpmficl.h rpmgc.h rpmhash.h \
   	rpmhook.h rpmio_internal.h rpmjs.h rpmkeyring.h rpmku.h \
   	rpmlua.h rpmmg.h rpmnss.h rpmperl.h rpmpython.h rpmruby.h rpmsq.h \
   	rpmssl.h rpmsyck.h rpmtcl.h rpmurl.h rpmuuid.h rpmxar.h rpmz.h rpmzq.h \
  @@ -80,7 +80,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 rpmficl.c rpmgc.c rpmhash.c rpmhook.c \
  +	rpmbag.c rpmbc.c rpmdav.c rpmficl.c rpmgc.c rpmhash.c rpmhook.c \
   	rpmio.c rpmiob.c rpmio-stub.c rpmjs.c rpmkeyring.c \
   	rpmku.c rpmlog.c rpmlua.c rpmmalloc.c rpmmg.c rpmnss.c \
   	rpmperl.c rpmpgp.c rpmpython.c rpmrpc.c rpmruby.c rpmsq.c \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/librpmio.vers
  ============================================================================
  $ cvs diff -u -r2.114.2.4 -r2.114.2.5 librpmio.vers
  --- rpm/rpmio/librpmio.vers	21 May 2009 16:37:27 -0000	2.114.2.4
  +++ rpm/rpmio/librpmio.vers	13 Aug 2010 22:24:15 -0000	2.114.2.5
  @@ -255,6 +255,10 @@
       _RequestPass;
       Rmdir;
       _Rmdir;
  +    _rpmbag_debug;
  +    rpmbagAdd;
  +    rpmbagDel;
  +    rpmbagNew;
       rpmbcImplVecs;
       rpmCleanPath;
       rpmCLIMacroContext;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/poptIO.c
  ============================================================================
  $ cvs diff -u -r1.49 -r1.49.2.1 poptIO.c
  --- rpm/rpmio/poptIO.c	18 Apr 2009 16:41:58 -0000	1.49
  +++ rpm/rpmio/poptIO.c	13 Aug 2010 22:24:15 -0000	1.49.2.1
  @@ -25,6 +25,8 @@
   #include <rpmssl.h>
   #endif
   
  +#include <rpmbag.h>
  +
   #include <rpmficl.h>
   #include <rpmjs.h>
   #include <rpmperl.h>
  @@ -414,6 +416,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},
  +
    { "rpmficldebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmficl_debug, -1,
   	N_("Debug embedded FICL interpreter"), NULL},
    { "rpmjsdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmjs_debug, -1,
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmbag.c
  ============================================================================
  $ cvs diff -u -r0 -r2.2.4.2 rpmbag.c
  --- /dev/null	2010-08-14 00:23:57.000000000 +0200
  +++ rpmbag.c	2010-08-14 00:24:16.518988295 +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.4.2 rpmbag.h
  --- /dev/null	2010-08-14 00:23:57.000000000 +0200
  +++ rpmbag.h	2010-08-14 00:24:16.709000233 +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.192.2.4 -r1.192.2.5 rpmio.c
  --- rpm/rpmio/rpmio.c	11 Nov 2009 22:27:52 -0000	1.192.2.4
  +++ rpm/rpmio/rpmio.c	13 Aug 2010 22:24:15 -0000	1.192.2.5
  @@ -3142,11 +3142,12 @@
       extern rpmioPool _htPool;
       extern rpmioPool _rpmsyckPool;
   /*@=shadow@*/
  -    extern rpmioPool _rpmmgPool;
  -    extern rpmioPool _rpmluavPool;
  -    extern rpmioPool _rpmluaPool;
  +    extern rpmioPool _rpmbagPool;
       extern rpmioPool _rpmficlPool;
       extern rpmioPool _rpmjsPool;
  +    extern rpmioPool _rpmluavPool;
  +    extern rpmioPool _rpmluaPool;
  +    extern rpmioPool _rpmmgPool;
       extern rpmioPool _rpmperlPool;
       extern rpmioPool _rpmpythonPool;
       extern rpmioPool _rpmrubyPool;
  @@ -3181,10 +3182,14 @@
       _rpmficlPool = rpmioFreePool(_rpmficlPool);
       _rpmluavPool = rpmioFreePool(_rpmluavPool);
       _rpmluaPool = rpmioFreePool(_rpmluaPool);
  +
  +    _rpmbagPool = rpmioFreePool(_rpmbagPool);
  +
       _mirePool = rpmioFreePool(_mirePool);
       _rpmmgPool = rpmioFreePool(_rpmmgPool);
       _htPool = rpmioFreePool(_htPool);
       _rpmsyckPool = rpmioFreePool(_rpmsyckPool);
  +
       _rpmiobPool = rpmioFreePool(_rpmiobPool);
       _digPool = rpmioFreePool(_digPool);
       _xarPool = rpmioFreePool(_xarPool);
  @@ .
Received on Sat Aug 14 00:24:17 2010
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.