- Prepare ResPool being a singleton ontop of sat::Pool.
authorMichael Andres <ma@suse.de>
Tue, 29 Jan 2008 18:08:25 +0000 (18:08 +0000)
committerMichael Andres <ma@suse.de>
Tue, 29 Jan 2008 18:08:25 +0000 (18:08 +0000)
  Remove obsolete ZYpp::{add,remove}Resolvables methods .

57 files changed:
zypp/CMakeLists.txt
zypp/Locks.cc
zypp/PoolItem.cc
zypp/PoolItem.h
zypp/ResPool.cc
zypp/ResPool.h
zypp/ResPoolManager.cc [deleted file]
zypp/ResPoolManager.h [deleted file]
zypp/ResPoolProxy.cc
zypp/ResPoolProxy.h
zypp/Resolver.cc
zypp/Resolver.h
zypp/SilentCallbacks.h [deleted file]
zypp/Target.h
zypp/ZYpp.cc
zypp/ZYpp.h
zypp/ZYppCommitResult.h
zypp/pool/GetResolvablesToInsDel.cc
zypp/pool/GetResolvablesToInsDel.h
zypp/pool/PoolTraits.h
zypp/sat/Pool.cc
zypp/sat/Pool.h
zypp/sat/Repo.cc
zypp/sat/Repo.h
zypp/sat/SATResolver.cc
zypp/sat/SATResolver.h
zypp/sat/detail/PoolMember.h
zypp/solver/detail/ChangeLog [deleted file]
zypp/solver/detail/Helper.cc
zypp/solver/detail/Helper.h
zypp/solver/detail/InstallOrder.cc
zypp/solver/detail/InstallOrder.h
zypp/solver/detail/ProblemSolutionCombi.cc
zypp/solver/detail/ProblemSolutionCombi.h
zypp/solver/detail/ProblemSolutionIgnore.cc
zypp/solver/detail/ProblemSolutionIgnore.h
zypp/solver/detail/ProblemSolutionInstall.cc
zypp/solver/detail/ProblemSolutionInstall.h
zypp/solver/detail/ProblemSolutionKeep.cc
zypp/solver/detail/ProblemSolutionKeep.h
zypp/solver/detail/ProblemSolutionUninstall.cc
zypp/solver/detail/ProblemSolutionUninstall.h
zypp/solver/detail/ProblemSolutionUnlock.cc
zypp/solver/detail/ProblemSolutionUnlock.h
zypp/solver/detail/Resolver.cc
zypp/solver/detail/Resolver.h
zypp/solver/detail/ResolverUpgrade.cc
zypp/solver/detail/SolutionAction.cc
zypp/solver/detail/SolutionAction.h
zypp/solver/detail/Testcase.cc
zypp/solver/detail/Testcase.h
zypp/solver/detail/Types.h
zypp/target/TargetImpl.cc
zypp/target/TargetImpl.h
zypp/ui/Selectable.h
zypp/zypp_detail/ZYppImpl.cc
zypp/zypp_detail/ZYppImpl.h

index 67e202a..133d600 100644 (file)
@@ -33,7 +33,6 @@ SET( zypp_SRCS
   ResPool.cc
   NameKindProxy.cc
   ResPoolProxy.cc
-  ResPoolManager.cc
   Resolver.cc
   ResolverProblem.cc
   ProblemSolution.cc
@@ -145,7 +144,6 @@ SET( zypp_HEADERS
   ResObject.h
   ResObjectsh
   ResPool.h
-  ResPoolManager.h
   ResPoolProxy.h
   ResStatus.h
   ResStore.h
@@ -156,7 +154,6 @@ SET( zypp_HEADERS
   Script.h
   Selection.h
   Signature.h
-  SilentCallbacks.h
   SrcPackage.h
   SysContent.h
   Target.h
index fd7f2a6..10a4a45 100644 (file)
@@ -103,7 +103,7 @@ struct ItemLockerFunc
 
   bool operator()( const CapAndItem &cai_r )
   {
-    PoolItem_Ref item(cai_r.item);
+    PoolItem item(cai_r.item);
     MIL << "Locking " << cai_r.item << "(matched by " << _lock_str << ")" << endl;
     item.status().setLock( true, ResStatus::USER);
     return true;
index 8a865ed..a2aeae0 100644 (file)
@@ -24,10 +24,10 @@ namespace zypp
 
   ///////////////////////////////////////////////////////////////////
   //
-  //   CLASS NAME : PoolItem_Ref::Impl
+  //   CLASS NAME : PoolItem::Impl
   //
-  /** PoolItem_Ref implementation. */
-  struct PoolItem_Ref::Impl
+  /** PoolItem implementation. */
+  struct PoolItem::Impl
   {
     Impl()
     {}
@@ -94,8 +94,8 @@ namespace zypp
   };
   ///////////////////////////////////////////////////////////////////
 
-  /** \relates PoolItem_Ref::Impl Stream output */
-  inline std::ostream & operator<<( std::ostream & str, const PoolItem_Ref::Impl & obj )
+  /** \relates PoolItem::Impl Stream output */
+  inline std::ostream & operator<<( std::ostream & str, const PoolItem::Impl & obj )
   {
     str << obj.status();
     if (obj.resolvable())
@@ -105,7 +105,7 @@ namespace zypp
     return str;
   }
 
-  inline bool PoolItem_Ref::Impl::autoprotect() const
+  inline bool PoolItem::Impl::autoprotect() const
   {
     if ( _status.isInstalled()
          && isKind<Package>( _resolvable )
@@ -120,43 +120,43 @@ namespace zypp
 
   ///////////////////////////////////////////////////////////////////
   //
-  //   CLASS NAME : PoolItem_Ref
+  //   CLASS NAME : PoolItem
   //
   ///////////////////////////////////////////////////////////////////
 
   ///////////////////////////////////////////////////////////////////
   //
-  //   METHOD NAME : PoolItem_Ref::PoolItem_Ref
+  //   METHOD NAME : PoolItem::PoolItem
   //   METHOD TYPE : Ctor
   //
-  PoolItem_Ref::PoolItem_Ref()
+  PoolItem::PoolItem()
   : _pimpl( Impl::nullimpl() )
   {}
 
   ///////////////////////////////////////////////////////////////////
   //
-  //   METHOD NAME : PoolItem_Ref::PoolItem_Ref
+  //   METHOD NAME : PoolItem::PoolItem
   //   METHOD TYPE : Ctor
   //
-  PoolItem_Ref::PoolItem_Ref( ResObject::constPtr res_r )
+  PoolItem::PoolItem( ResObject::constPtr res_r )
   : _pimpl( new Impl( res_r ) )
   {}
 
   ///////////////////////////////////////////////////////////////////
   //
-  //   METHOD NAME : PoolItem_Ref::PoolItem_Ref
+  //   METHOD NAME : PoolItem::PoolItem
   //   METHOD TYPE : Ctor
   //
-  PoolItem_Ref::PoolItem_Ref( ResObject::constPtr res_r, const ResStatus & status_r )
+  PoolItem::PoolItem( ResObject::constPtr res_r, const ResStatus & status_r )
   : _pimpl( new Impl( res_r, status_r ) )
   {}
 
   ///////////////////////////////////////////////////////////////////
   //
-  //   METHOD NAME : PoolItem_Ref::~PoolItem_Ref
+  //   METHOD NAME : PoolItem::~PoolItem
   //   METHOD TYPE : Dtor
   //
-  PoolItem_Ref::~PoolItem_Ref()
+  PoolItem::~PoolItem()
   {}
 
   ///////////////////////////////////////////////////////////////////
@@ -165,22 +165,22 @@ namespace zypp
   //
   ///////////////////////////////////////////////////////////////////
 
-  ResStatus & PoolItem_Ref::status() const
+  ResStatus & PoolItem::status() const
   { return _pimpl->status(); }
 
-  ResStatus & PoolItem_Ref::statusReset() const
+  ResStatus & PoolItem::statusReset() const
   { return _pimpl->statusReset(); }
 
-  ResObject::constPtr PoolItem_Ref::resolvable() const
+  ResObject::constPtr PoolItem::resolvable() const
   { return _pimpl->resolvable(); }
 
-  void PoolItem_Ref::saveState() const
+  void PoolItem::saveState() const
   { _pimpl->saveState(); }
 
-  void PoolItem_Ref::restoreState() const
+  void PoolItem::restoreState() const
   { _pimpl->restoreState(); }
 
-  bool PoolItem_Ref::sameState() const
+  bool PoolItem::sameState() const
   { return _pimpl->sameState(); }
 
   /******************************************************************
@@ -188,7 +188,7 @@ namespace zypp
    **  FUNCTION NAME : operator<<
    **  FUNCTION TYPE : std::ostream &
   */
-  std::ostream & operator<<( std::ostream & str, const PoolItem_Ref & obj )
+  std::ostream & operator<<( std::ostream & str, const PoolItem & obj )
   {
     return str << *obj._pimpl;
   }
index fbdff24..9abe299 100644 (file)
@@ -25,42 +25,42 @@ namespace zypp
 
   ///////////////////////////////////////////////////////////////////
   //
-  //   CLASS NAME : PoolItem_Ref
+  //   CLASS NAME : PoolItem
   //
   /** Reference to a PoolItem connecting ResObject and ResStatus.
    *
    * The "real" PoolItem is usg. somewhere in the ResPool. This is
    * a reference to it. All copies made will reference (and modify)
-   * the same PoolItem. All changes via a PoolItem_Ref are immediately
+   * the same PoolItem. All changes via a PoolItem are immediately
    * visible in all copies (now COW).
    *
-   * \note Constness: Like pointer types, a <tt>const PoolItem_Ref</tt>
+   * \note Constness: Like pointer types, a <tt>const PoolItem</tt>
    * does \b not refer to a <tt>const PoolItem</tt>. The reference is
    * \c const, i.e. you can't change the refered PoolItem. The PoolItem
    * (i.e. the status) is always mutable.
    *
   */
-  class PoolItem_Ref
+  class PoolItem
   {
-    friend std::ostream & operator<<( std::ostream & str, const PoolItem_Ref & obj );
+    friend std::ostream & operator<<( std::ostream & str, const PoolItem & obj );
 
   public:
-    /** Implementation  */
+    /** Implementation */
     class Impl;
 
   public:
     /** Default ctor for use in std::container. */
-    PoolItem_Ref();
+    PoolItem();
 
     /** Ctor */
     explicit
-    PoolItem_Ref( ResObject::constPtr res_r );
+    PoolItem( ResObject::constPtr res_r );
 
     /** Ctor */
-    PoolItem_Ref( ResObject::constPtr res_r, const ResStatus & status_r );
+    PoolItem( ResObject::constPtr res_r, const ResStatus & status_r );
 
     /** Dtor */
-    ~PoolItem_Ref();
+    ~PoolItem();
 
   public:
     /** Returns the current status. */
@@ -106,34 +106,35 @@ namespace zypp
   };
   ///////////////////////////////////////////////////////////////////
 
-  typedef PoolItem_Ref PoolItem;
+  /** \relates PoolItem \todo remove deprecated typedef. */
+  typedef PoolItem ZYPP_DEPRECATED PoolItem_Ref;
 
-  /** \relates PoolItem_Ref Stream output */
-  std::ostream & operator<<( std::ostream & str, const PoolItem_Ref & obj );
+  /** \relates PoolItem Stream output */
+  std::ostream & operator<<( std::ostream & str, const PoolItem & obj );
 
-  /** \relates PoolItem_Ref */
-  inline bool operator==( const PoolItem_Ref & lhs, const PoolItem_Ref & rhs )
+  /** \relates PoolItem */
+  inline bool operator==( const PoolItem & lhs, const PoolItem & rhs )
   { return lhs.resolvable() == rhs.resolvable(); }
 
-  /** \relates PoolItem_Ref */
-  inline bool operator==( const PoolItem_Ref & lhs, const ResObject::constPtr & rhs )
+  /** \relates PoolItem */
+  inline bool operator==( const PoolItem & lhs, const ResObject::constPtr & rhs )
   { return lhs.resolvable() == rhs; }
 
-  /** \relates PoolItem_Ref */
-  inline bool operator==( const ResObject::constPtr & lhs, const PoolItem_Ref & rhs )
+  /** \relates PoolItem */
+  inline bool operator==( const ResObject::constPtr & lhs, const PoolItem & rhs )
   { return lhs == rhs.resolvable(); }
 
 
-  /** \relates PoolItem_Ref */
-  inline bool operator!=( const PoolItem_Ref & lhs, const PoolItem_Ref & rhs )
+  /** \relates PoolItem */
+  inline bool operator!=( const PoolItem & lhs, const PoolItem & rhs )
   { return ! (lhs==rhs); }
 
-  /** \relates PoolItem_Ref */
-  inline bool operator!=( const PoolItem_Ref & lhs, const ResObject::constPtr & rhs )
+  /** \relates PoolItem */
+  inline bool operator!=( const PoolItem & lhs, const ResObject::constPtr & rhs )
   { return ! (lhs==rhs); }
 
-  /** \relates PoolItem_Ref */
-  inline bool operator!=( const ResObject::constPtr & lhs, const PoolItem_Ref & rhs )
+  /** \relates PoolItem */
+  inline bool operator!=( const ResObject::constPtr & lhs, const PoolItem & rhs )
   { return ! (lhs==rhs); }
 
   /////////////////////////////////////////////////////////////////
@@ -143,9 +144,9 @@ namespace zypp
 namespace std
 { /////////////////////////////////////////////////////////////////
 
-  /** \relates zypp::PoolItem_Ref Order in std::container follows ResObject::constPtr.*/
+  /** \relates zypp::PoolItem Order in std::container follows ResObject::constPtr.*/
   template<>
-    inline bool less<zypp::PoolItem_Ref>::operator()( const zypp::PoolItem_Ref & lhs, const zypp::PoolItem_Ref & rhs ) const
+    inline bool less<zypp::PoolItem>::operator()( const zypp::PoolItem & lhs, const zypp::PoolItem & rhs ) const
     { return lhs.resolvable() < rhs.resolvable(); }
 
   /////////////////////////////////////////////////////////////////
index c6c0523..b5169c8 100644 (file)
 #include <iostream>
 //#include "zypp/base/Logger.h"
 
+#include "zypp/base/SerialNumber.h"
+
 #include "zypp/ResPool.h"
 #include "zypp/pool/PoolImpl.h"
-#include "zypp/base/SerialNumber.h"
 
 using std::endl;
 
@@ -52,18 +53,13 @@ namespace zypp
 
   ///////////////////////////////////////////////////////////////////
   //
-  //   METHOD NAME : ResPool::~ResPool
-  //   METHOD TYPE : Dtor
-  //
-  ResPool::~ResPool()
-  {}
-
-  ///////////////////////////////////////////////////////////////////
-  //
   // Forward to impementation:
   //
   ///////////////////////////////////////////////////////////////////
 
+  ResPoolProxy ResPool::proxy() const
+  { return _pimpl->proxy( *this ); }
+
   bool ResPool::empty() const
   { return _pimpl->empty(); }
 
index 5a97243..fccd408 100644 (file)
 #include <iosfwd>
 
 #include "zypp/base/Deprecated.h"
+#include "zypp/base/Iterator.h"
 
 #include "zypp/pool/PoolTraits.h"
-#include "zypp/base/Iterator.h"
 #include "zypp/ResFilters.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
 { /////////////////////////////////////////////////////////////////
-  ///////////////////////////////////////////////////////////////////
-  namespace sat
-  { /////////////////////////////////////////////////////////////////
-    class Solvable;
-    /////////////////////////////////////////////////////////////////
-  } // namespace sat
-  ///////////////////////////////////////////////////////////////////
 
   class SerialNumber;
+  class ResPoolProxy;
 
   ///////////////////////////////////////////////////////////////////
   //
   //   CLASS NAME : ResPool
   //
-  /** Access to ResObject pool.
+  /** Global ResObject pool.
+   *
+   * Explicitly shared singleton.
    *
    * \note Filter iterators provided by ResPool are intended to
    * operate on internal index tables for faster access. If the
@@ -56,17 +52,16 @@ namespace zypp
     typedef pool::PoolTraits::const_iterator            const_iterator;
     typedef pool::PoolTraits::byName_iterator            byName_iterator;
     typedef pool::PoolTraits::byCapabilityIndex_iterator byCapabilityIndex_iterator;
-    typedef pool::PoolTraits::AdditionalCapabilities            AdditionalCapabilities;
+    typedef pool::PoolTraits::AdditionalCapabilities    AdditionalCapabilities;
     typedef pool::PoolTraits::repository_iterator        repository_iterator;
 
   public:
     /** Singleton ctor. */
-    //static ResPool instance();
+    static ResPool instance()
+    { return ResPool(); }
 
-    /** Default ctor: empty pool */
-    ResPool();
-    /** Dtor */
-    ~ResPool();
+    /** preliminary */
+    ResPoolProxy proxy() const;
 
   public:
     /** The pools serial number. Changing whenever the
@@ -211,17 +206,17 @@ namespace zypp
    AdditionalCapabilities & additionaProvide() const;
 
   private:
-    /** */
-    friend class ResPoolManager;
     /** Ctor */
     ResPool( pool::PoolTraits::Impl_constPtr impl_r );
+    /** Default ctor */
+    ResPool();
   private:
     /** Const access to implementation. */
     pool::PoolTraits::Impl_constPtr _pimpl;
   };
   ///////////////////////////////////////////////////////////////////
 
-  /** \todo rename class and eliminate typedef. */
+  /** \relates ResPool \todo remove deprecated typedef. */
   typedef ResPool ZYPP_DEPRECATED ResPool_Ref;
 
   ///////////////////////////////////////////////////////////////////
@@ -232,4 +227,7 @@ namespace zypp
   /////////////////////////////////////////////////////////////////
 } // namespace zypp
 ///////////////////////////////////////////////////////////////////
+
+#include "zypp/ResPoolProxy.h"
+
 #endif // ZYPP_RESPOOL_H
diff --git a/zypp/ResPoolManager.cc b/zypp/ResPoolManager.cc
deleted file mode 100644 (file)
index 09d3da0..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*---------------------------------------------------------------------\
-|                          ____ _   __ __ ___                          |
-|                         |__  / \ / / . \ . \                         |
-|                           / / \ V /|  _/  _/                         |
-|                          / /__ | | | | | |                           |
-|                         /_____||_| |_| |_|                           |
-|                                                                      |
-\---------------------------------------------------------------------*/
-/** \file      zypp/ResPoolManager.cc
- *
-*/
-#include <iostream>
-#include "zypp/base/Logger.h"
-
-#include "zypp/ResPoolManager.h"
-#include "zypp/pool/PoolImpl.h"
-
-using std::endl;
-
-///////////////////////////////////////////////////////////////////
-namespace zypp
-{ /////////////////////////////////////////////////////////////////
-
-  ///////////////////////////////////////////////////////////////////
-  //
-  //   METHOD NAME : ResPoolManager::ResPoolManager
-  //   METHOD TYPE : Ctor
-  //
-  ResPoolManager::ResPoolManager()
-  : _pimpl( new pool::PoolImpl )
-  {}
-
-  ///////////////////////////////////////////////////////////////////
-  //
-  //   METHOD NAME : ResPoolManager::~ResPoolManager
-  //   METHOD TYPE : Dtor
-  //
-  ResPoolManager::~ResPoolManager()
-  {}
-
-  ///////////////////////////////////////////////////////////////////
-  //
-  // Forward to impementation:
-  //
-  ///////////////////////////////////////////////////////////////////
-
-  void ResPoolManager::clear()
-  { _pimpl->clear(); }
-
-  /** \todo FIXIT */
-  ResPoolProxy ResPoolManager::proxy() const
-  { return _pimpl->proxy( accessor() ); }
-
-  /******************************************************************
-  **
-  **   FUNCTION NAME : operator<<
-  **   FUNCTION TYPE : std::ostream &
-  */
-  std::ostream & operator<<( std::ostream & str, const ResPoolManager & obj )
-  {
-    return str << *obj._pimpl;
-  }
-
-  /////////////////////////////////////////////////////////////////
-} // namespace zypp
-///////////////////////////////////////////////////////////////////
diff --git a/zypp/ResPoolManager.h b/zypp/ResPoolManager.h
deleted file mode 100644 (file)
index 2f08182..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*---------------------------------------------------------------------\
-|                          ____ _   __ __ ___                          |
-|                         |__  / \ / / . \ . \                         |
-|                           / / \ V /|  _/  _/                         |
-|                          / /__ | | | | | |                           |
-|                         /_____||_| |_| |_|                           |
-|                                                                      |
-\---------------------------------------------------------------------*/
-/** \file      zypp/ResPoolManager.h
- *
-*/
-#ifndef ZYPP_RESPOOLMANAGER_H
-#define ZYPP_RESPOOLMANAGER_H
-
-#include <iosfwd>
-
-#include "zypp/ResPool.h"
-#include "zypp/ResPoolProxy.h"
-#include "zypp/ResStore.h"
-
-///////////////////////////////////////////////////////////////////
-namespace zypp
-{ /////////////////////////////////////////////////////////////////
-
-  ///////////////////////////////////////////////////////////////////
-  //
-  //   CLASS NAME : ResPoolManager
-  //
-  /** Manage a ResObject pool. */
-  class ResPoolManager
-  {
-    friend std::ostream & operator<<( std::ostream & str, const ResPoolManager & obj );
-
-  public:
-    /** */
-    typedef pool::PoolTraits::Item           Item;
-    typedef pool::PoolTraits::size_type      size_type;
-    typedef pool::PoolTraits::iterator       iterator;
-    typedef pool::PoolTraits::const_iterator const_iterator;
-
-  public:
-    /** Default ctor */
-    ResPoolManager();
-    /** Dtor */
-    ~ResPoolManager();
-
-    ResPool accessor() const
-    { return ResPool( _pimpl.getPtr() ); }
-
-    /** \todo Speedup by using a data mamaber invaidated only
-     * whenever the pool content changes */
-    ResPoolProxy proxy() const;
-
-  public:
-    /**  */
-    void insert( ResObject::constPtr ptr_r, bool installed = false )
-    { inserter(installed)( ptr_r ); }
-
-    void insert( const ResStore & store_r, bool installed = false )
-    { insert( store_r.begin(), store_r.end(), installed ); }
-
-    /**  */
-    template <class _InputIterator>
-      void insert( _InputIterator first_r, _InputIterator last_r, bool installed = false )
-      { std::for_each( first_r, last_r, inserter(installed) ); }
-
-    /**  */
-    void erase( ResObject::constPtr ptr_r )
-    { deleter()( ptr_r ); }
-
-    /** unsafe
-    void erase( iterator first_r, iterator last_r )
-    { std::for_each( first_r, last_r, deleter() ); }
-    */
-
-    /**  */
-    void clear();
-
-  private:
-    /**  */
-    typedef pool::PoolTraits::ItemContainerT  ContainerT;
-    typedef pool::PoolTraits::Impl        Impl;
-    typedef pool::PoolTraits::Inserter    Inserter;
-    typedef pool::PoolTraits::Deleter     Deleter;
-
-  private:
-    /** Pointer to implementation */
-    RW_pointer<pool::PoolTraits::Impl> _pimpl;
-    /**  */
-    Inserter inserter( bool installed )
-    { return Inserter( *_pimpl, installed ); }
-    /**  */
-    Deleter deleter()
-    { return Deleter( *_pimpl ); }
-  };
-  ///////////////////////////////////////////////////////////////////
-
-  /** \relates ResPoolManager Stream output */
-  std::ostream & operator<<( std::ostream & str, const ResPoolManager & obj );
-
-  /////////////////////////////////////////////////////////////////
-} // namespace zypp
-///////////////////////////////////////////////////////////////////
-#endif // ZYPP_RESPOOLMANAGER_H
index 9ded6bf..ca52e5b 100644 (file)
@@ -28,38 +28,38 @@ namespace zypp
   /** Tem. friend of PoolItem */
   struct PoolItemSaver
   {
-    void saveState( ResPool_Ref pool_r )
+    void saveState( ResPool pool_r )
     {
       std::for_each( pool_r.begin(), pool_r.end(),
                      std::mem_fun_ref(&PoolItem::saveState) );
     }
 
-    void saveState( ResPool_Ref pool_r, const ResObject::Kind & kind_r )
+    void saveState( ResPool pool_r, const ResObject::Kind & kind_r )
     {
       std::for_each( pool_r.byKindBegin(kind_r), pool_r.byKindEnd(kind_r),
                      std::mem_fun_ref(&PoolItem::saveState) );
     }
 
-    void restoreState( ResPool_Ref pool_r )
+    void restoreState( ResPool pool_r )
     {
       std::for_each( pool_r.begin(), pool_r.end(),
                      std::mem_fun_ref(&PoolItem::restoreState) );
     }
 
-    void restoreState( ResPool_Ref pool_r, const ResObject::Kind & kind_r )
+    void restoreState( ResPool pool_r, const ResObject::Kind & kind_r )
     {
       std::for_each( pool_r.byKindBegin(kind_r), pool_r.byKindEnd(kind_r),
                      std::mem_fun_ref(&PoolItem::restoreState) );
     }
 
-    bool diffState( ResPool_Ref pool_r ) const
+    bool diffState( ResPool pool_r ) const
     {
       // return whether some PoolItem::sameState reported \c false.
       return( invokeOnEach( pool_r.begin(), pool_r.end(),
                             std::mem_fun_ref(&PoolItem::sameState) ) < 0 );
     }
 
-    bool diffState( ResPool_Ref pool_r, const ResObject::Kind & kind_r ) const
+    bool diffState( ResPool pool_r, const ResObject::Kind & kind_r ) const
     {
       // return whether some PoolItem::sameState reported \c false.
       return( invokeOnEach( pool_r.byKindBegin(kind_r), pool_r.byKindEnd(kind_r),
@@ -150,12 +150,12 @@ namespace zypp
   {
   public:
     Impl()
+    :_pool( ResPool::instance() )
     {}
 
-    Impl( ResPool_Ref pool_r )
+    Impl( ResPool pool_r )
     : _pool( pool_r )
     {
-
       SelPoolHelper collect;
       std::for_each( _pool.begin(), _pool.end(),
                      functor::functorRef<void,ResPool::Item>( collect ) );
@@ -207,7 +207,7 @@ namespace zypp
     { return PoolItemSaver().diffState( _pool, kind_r ); }
 
   private:
-    ResPool_Ref _pool;
+    ResPool _pool;
     mutable SelectablePool _selPool;
 
   public:
@@ -246,7 +246,7 @@ namespace zypp
   //   METHOD NAME : ResPoolProxy::ResPoolProxy
   //   METHOD TYPE : Ctor
   //
-  ResPoolProxy::ResPoolProxy( ResPool_Ref pool_r )
+  ResPoolProxy::ResPoolProxy( ResPool pool_r )
   : _pimpl( new Impl( pool_r ) )
   {}
 
index 4fa776a..2aa8218 100644 (file)
@@ -29,7 +29,7 @@ namespace zypp
   //   CLASS NAME : ResPoolProxy
   //
   /**
-   * \todo Make it a _Ref.
+   * \todo integrate it into ResPool
   */
   class ResPoolProxy
   {
@@ -52,7 +52,7 @@ namespace zypp
     /** Default ctor: no pool */
     ResPoolProxy();
     /** Ctor */
-    ResPoolProxy( ResPool_Ref pool_r );
+    ResPoolProxy( ResPool pool_r ) ZYPP_DEPRECATED;
     /** Dtor */
     ~ResPoolProxy();
 
index 6b721c4..290e4ed 100644 (file)
@@ -85,7 +85,7 @@ namespace zypp
   { return _pimpl->extraRequires();}
   const CapabilitySet Resolver::getConflict ()
   { return _pimpl->extraConflicts();}      
-  std::list<PoolItem_Ref> Resolver::problematicUpdateItems( void ) const
+  std::list<PoolItem> Resolver::problematicUpdateItems( void ) const
   { return _pimpl->problematicUpdateItems(); }
   bool Resolver::createSolverTestcase (const std::string & dumpPath)
   { solver::detail::Testcase testcase (dumpPath);
index 7aaa0c8..8898d62 100644 (file)
@@ -96,7 +96,7 @@ namespace zypp
      * Return the list of problematic update items
      * i.e. locked ones (due to foreign vendor)
      **/
-    std::list<PoolItem_Ref> problematicUpdateItems( void ) const;
+    std::list<PoolItem> problematicUpdateItems( void ) const;
 
     /**
      * Return the dependency problems found by the last call to
diff --git a/zypp/SilentCallbacks.h b/zypp/SilentCallbacks.h
deleted file mode 100644 (file)
index dc711e1..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*---------------------------------------------------------------------\
-|                          ____ _   __ __ ___                          |
-|                         |__  / \ / / . \ . \                         |
-|                           / / \ V /|  _/  _/                         |
-|                          / /__ | | | | | |                           |
-|                         /_____||_| |_| |_|                           |
-|                                                                      |
-\---------------------------------------------------------------------*/
-/** \file zypp/SilentCallbacks.h
- *
-*/
-#ifndef ZYPP_SILENTCALLBACKS_H
-#define ZYPP_SILENTCALLBACKS_H
-
-#include "zypp/ZYppCallbacks.h"
-
-///////////////////////////////////////////////////////////////////
-namespace zypp
-{ /////////////////////////////////////////////////////////////////
-  namespace media 
-  { 
-    // media change request callback
-    struct SilentMediaChange : public callback::ReceiveReport<MediaChangeReport>
-    {
-      virtual Action requestMedia(
-        const Source_Ref /*source*/
-       , unsigned 
-       , Error 
-       , const std::string&
-      ) { return MediaChangeReport::ABORT; }
-    };
-
-    /////////////////////////////////////////////////////////////////
-  } // namespace media
-  ///////////////////////////////////////////////////////////////////
-
-  /////////////////////////////////////////////////////////////////
-} // namespace zypp
-///////////////////////////////////////////////////////////////////
-
-#endif // ZYPP_SILENTCALLBACKS_H
index 9b30208..f8b242a 100644 (file)
@@ -51,7 +51,7 @@ namespace zypp
   public:
     typedef target::TargetImpl  Impl;
     typedef intrusive_ptr<Impl> Impl_Ptr;
-    typedef std::list<PoolItem_Ref> PoolItemList;
+    typedef std::list<PoolItem> PoolItemList;
 
   public:
 
index 3a9d952..3b8abe2 100644 (file)
@@ -10,7 +10,7 @@
  *
 */
 #include <iostream>
-//#include "zypp/base/Logger.h"
+#include "zypp/base/Logger.h"
 
 #include "zypp/ZYpp.h"
 #include "zypp/zypp_detail/ZYppImpl.h"
@@ -81,24 +81,9 @@ namespace zypp
   //
   ///////////////////////////////////////////////////////////////////
 
-  void ZYpp::addResolvables (const ResStore& store, bool installed)
-  {
-    _pimpl->addResolvables (store, installed);
-  }
-
-  void ZYpp::removeResolvables (const ResStore& store)
-  {
-    _pimpl->removeResolvables (store);
-  }
-
-  ///////////////////////////////////////////////////////////////////
-
   Target_Ptr ZYpp::target() const
   { return _pimpl->target(); }
 
-  void ZYpp::initTarget(const Pathname & root, bool commit_only )
-  { _pimpl->initTarget(root, commit_only); }
-
   void ZYpp::initializeTarget(const Pathname & root)
   { _pimpl->initializeTarget(root); }
 
index c4dcdfa..a1780ab 100644 (file)
@@ -61,8 +61,8 @@ namespace zypp
   public:
 
     /**
-     * Access to the main resolvable pool
-     * \ref zypp::ResPool
+     * Access to the global resolvable pool.
+     * Same as \ref zypp::ResPool::instance
      */
     ResPool pool() const;
 
@@ -72,10 +72,6 @@ namespace zypp
     */
     ResPoolProxy poolProxy() const;
 
-    void addResolvables (const ResStore& store, bool installed = false);
-
-    void removeResolvables (const ResStore& store);
-
     DiskUsageCounter::MountPointSet diskUsage();
 
     void setPartitions(const DiskUsageCounter::MountPointSet &mp);
@@ -96,12 +92,6 @@ namespace zypp
 
     /**
      * \throws Exception
-     * if commit_only == true, just init the target, dont populate store or pool
-     */
-    ZYPP_DEPRECATED void initTarget(const Pathname & root, bool commit_only = false);
-
-    /**
-     * \throws Exception
      */
     void finishTarget();
 
@@ -175,15 +165,15 @@ namespace zypp
     void setArchitecture( const Arch & arch );
 
   public:
-    
-   /** 
+
+   /**
     * \short Apply persistant locks to current pool.
     * Call this before solving
     *
     * \returns Number of items locked
     */
    int applyLocks();
-      
+
   protected:
     /** Dtor */
     virtual ~ZYpp();
index 3be61ea..bf28652 100644 (file)
@@ -35,7 +35,7 @@ namespace zypp
     : _result(0)
     {}
 
-    typedef std::list<PoolItem_Ref> PoolItemList;
+    typedef std::list<PoolItem> PoolItemList;
 
     /**
      * number of committed resolvables
index 251847c..3e4a105 100644 (file)
@@ -54,7 +54,7 @@ namespace zypp
       for ( GetResolvablesToInsDel::PoolItemList::const_iterator it = instlist_r.begin();
             it != instlist_r.end(); ++it )
         {
-          PoolItem_Ref item( *it );
+          PoolItem item( *it );
           obsoletes.insert( item->dep(Dep::OBSOLETES).begin(), item->dep(Dep::OBSOLETES).end() );
         }
       if ( obsoletes.size() == 0 )
@@ -66,7 +66,7 @@ namespace zypp
       for ( GetResolvablesToInsDel::PoolItemList::iterator it = deleteList_r.begin();
             it != deleteList_r.end(); ++it )
         {
-          PoolItem_Ref ipkg( *it );
+          PoolItem ipkg( *it );
           bool delayPkg = false;
           // ...check whether an obsoletes....
           for ( std::set<Capability>::iterator obs = obsoletes.begin();
@@ -102,7 +102,7 @@ namespace zypp
     //
     GetResolvablesToInsDel::GetResolvablesToInsDel( ResPool pool_r, Order order_r )
     {
-      typedef std::set<PoolItem_Ref> PoolItemSet;
+      typedef std::set<PoolItem> PoolItemSet;
 
       PoolItemList & dellist_r( _toDelete );
       PoolItemList & instlist_r( _toInstall );
index 7b110fc..ca19dc0 100644 (file)
@@ -36,7 +36,7 @@ namespace zypp
      */
     struct GetResolvablesToInsDel
     {
-      typedef std::list<PoolItem_Ref> PoolItemList;
+      typedef std::list<PoolItem> PoolItemList;
 
       /** Influences the sequence of sources and media proscessed.
        * If true prefer a better source, otherwise a better media.
index c4f0be9..31e3cf7 100644 (file)
@@ -16,9 +16,6 @@
 #include <map>
 
 #include "zypp/PoolItem.h"
-#include "zypp/Capability.h"
-#include "zypp/Dep.h"
-#include "zypp/ResStatus.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
index 669ce30..c4e7723 100644 (file)
@@ -55,7 +55,7 @@ namespace zypp
     bool Pool::reposEmpty() const
     { return myPool()->nrepos; }
 
-    unsigned Pool::reposSize() const
+    Pool::size_type Pool::reposSize() const
     { return myPool()->nrepos; }
 
     Pool::RepoIterator Pool::reposBegin() const
@@ -77,12 +77,12 @@ namespace zypp
       return true;
     }
 
-    unsigned Pool::solvablesSize() const
+    Pool::size_type Pool::solvablesSize() const
     {
-      // return myPool()->nsolvables;
+      // Do not return myPool()->nsolvables;
       // nsolvables is the array size including
       // invalid Solvables.
-      unsigned ret = 0;
+      size_type ret = 0;
       for_( it, reposBegin(), reposEnd() )
       {
         ret += it->solvablesSize();
index ec16e5c..d345834 100644 (file)
@@ -42,6 +42,7 @@ namespace zypp
       public:
         typedef detail::SolvableIterator SolvableIterator;
         typedef detail::RepoIterator     RepoIterator;
+        typedef detail::size_type        size_type;
 
       public:
         /** Singleton ctor. */
@@ -67,7 +68,7 @@ namespace zypp
         bool reposEmpty() const;
 
         /** Number of repos in \ref Pool. */
-        unsigned reposSize() const;
+        size_type reposSize() const;
 
         /** Iterator to the first \ref Repo. */
         RepoIterator reposBegin() const;
@@ -115,7 +116,7 @@ namespace zypp
         bool solvablesEmpty() const;
 
         /** Number of solvables in \ref Pool. */
-        unsigned solvablesSize() const;
+        size_type solvablesSize() const;
 
         /** Iterator to the first \ref Solvable. */
         SolvableIterator solvablesBegin() const;
index 6c68519..9d19360 100644 (file)
@@ -65,7 +65,7 @@ namespace zypp
       return _repo->nsolvables;
     }
 
-    unsigned Repo::solvablesSize() const
+    Repo::size_type Repo::solvablesSize() const
     {
       NO_REPO_RETURN( 0 );
       return _repo->nsolvables;
index 30616b5..6f674fa 100644 (file)
@@ -39,6 +39,7 @@ namespace zypp
     {
       public:
         typedef filter_iterator<detail::ByRepo, detail::SolvableIterator> SolvableIterator;
+        typedef detail::size_type size_type;
 
       public:
         /** Default ctor creates \ref norepo.*/
@@ -67,7 +68,7 @@ namespace zypp
         bool solvablesEmpty() const;
 
         /** Number of solvables in \ref Repo. */
-        unsigned solvablesSize() const;
+        size_type solvablesSize() const;
 
         /** Iterator to the first \ref Solvable. */
         SolvableIterator solvablesBegin() const;
index 6cf5b65..6548891 100644 (file)
@@ -102,7 +102,7 @@ SATResolver::pool (void) const
 
 
 void
-SATResolver::addPoolItemToInstall (PoolItem_Ref item)
+SATResolver::addPoolItemToInstall (PoolItem item)
 {
     bool found = false;
     for (PoolItemList::const_iterator iter = _items_to_remove.begin();
@@ -130,7 +130,7 @@ SATResolver::addPoolItemsToInstallFromList (PoolItemList & rl)
 
 
 void
-SATResolver::addPoolItemToRemove (PoolItem_Ref item)
+SATResolver::addPoolItemToRemove (PoolItem item)
 {
     bool found = false;
     for (PoolItemList::const_iterator iter = _items_to_install.begin();
@@ -157,7 +157,7 @@ SATResolver::addPoolItemsToRemoveFromList (PoolItemList & rl)
 }
 
 void
-SATResolver::addPoolItemToLock (PoolItem_Ref item)
+SATResolver::addPoolItemToLock (PoolItem item)
 {
     _items_to_lock.push_back (item);
     _items_to_lock.unique ();
@@ -170,7 +170,7 @@ SATResolver::addPoolItemToLock (PoolItem_Ref item)
 // if data != NULL, set as APPL_LOW (from establishPool())
 
 static void
-SATSolutionToPool (PoolItem_Ref item, const ResStatus & status, const ResStatus::TransactByValue causer)
+SATSolutionToPool (PoolItem item, const ResStatus & status, const ResStatus::TransactByValue causer)
 {
 #if 0
     if (triggeredSolution.find(item) != triggeredSolution.end()) {
@@ -287,7 +287,7 @@ struct SATCollectTransact : public resfilter::PoolItemFilterFunctor
        : resolver (r)
     { }
 
-    bool operator()( PoolItem_Ref item )               // only transacts() items go here
+    bool operator()( PoolItem item )           // only transacts() items go here
     {
        ResStatus status = item.status();
        _XDEBUG( "SATCollectTransact(" << item << ")" );
@@ -306,7 +306,7 @@ struct SATCollectTransact : public resfilter::PoolItemFilterFunctor
            resolver.addPoolItemToRemove(item);         // -> remove !
        }
        if (status.isIncomplete()) {                    // incomplete (re-install needed)
-           PoolItem_Ref reinstall = Helper::findReinstallItem (resolver.pool(), item);
+           PoolItem reinstall = Helper::findReinstallItem (resolver.pool(), item);
            if (reinstall) {
                MIL << "Reinstall " << reinstall << " for incomplete " << item << endl;
                resolver.addPoolItemToInstall(reinstall);       // -> install!
@@ -346,7 +346,7 @@ class CheckIfUpdate : public resfilter::PoolItemFilterFunctor
 
     // check this item will be installed
 
-    bool operator()( PoolItem_Ref item )
+    bool operator()( PoolItem item )
     {
        if (item.status().isToBeInstalled())
        {
@@ -390,7 +390,7 @@ SATResolver::resolvePool(const CapabilitySet & requires_caps,
                    functor::functorRef<bool,PoolItem>(info) );
 
     for (PoolItemList::const_iterator iter = _items_to_install.begin(); iter != _items_to_install.end(); iter++) {
-       PoolItem_Ref r = *iter;
+       PoolItem r = *iter;
 
        Id id = (*iter)->satSolvable().id();
        if (id == ID_NULL) {
@@ -461,7 +461,7 @@ SATResolver::resolvePool(const CapabilitySet & requires_caps,
       if (sat::Solvable(p).repo().get() == _solv->installed)
        continue;
 
-      PoolItem_Ref poolItem = _pool.find (sat::Solvable(p));
+      PoolItem poolItem = _pool.find (sat::Solvable(p));
       if (poolItem) {
          SATSolutionToPool (poolItem, ResStatus::toBeInstalled, ResStatus::SOLVER);
       } else {
@@ -475,7 +475,7 @@ SATResolver::resolvePool(const CapabilitySet & requires_caps,
       if (_solv->decisionmap[i] > 0)
        continue;
 
-      PoolItem_Ref poolItem = _pool.find (sat::Solvable(i));
+      PoolItem poolItem = _pool.find (sat::Solvable(i));
       if (poolItem) {
          // Check if this is an update
          CheckIfUpdate info;
@@ -524,7 +524,7 @@ struct FindPackage : public resfilter::ResObjectFilterFunctor
     {
     }
 
-    bool operator()( PoolItem_Ref p)
+    bool operator()( PoolItem p)
     {
        problemSolution->addSingleAction (p, action);
        return true;
@@ -618,7 +618,7 @@ SATResolver::problems ()
                        {
                            case SOLVER_INSTALL_SOLVABLE: {
                                s = pool->solvables + what;
-                               PoolItem_Ref poolItem = _pool.find (sat::Solvable(what));
+                               PoolItem poolItem = _pool.find (sat::Solvable(what));
                                if (poolItem) {
                                    if (_solv->installed && s->repo == _solv->installed) {
                                        problemSolution->addSingleAction (poolItem, REMOVE);
@@ -639,7 +639,7 @@ SATResolver::problems ()
                                break;
                            case SOLVER_ERASE_SOLVABLE: {
                                s = pool->solvables + what;
-                               PoolItem_Ref poolItem = _pool.find (sat::Solvable(what));
+                               PoolItem poolItem = _pool.find (sat::Solvable(what));
                                if (poolItem) {
                                    if (_solv->installed && s->repo == _solv->installed) {
                                        problemSolution->addSingleAction (poolItem, KEEP);
@@ -690,7 +690,7 @@ SATResolver::problems ()
                                Id p, *pp;
                                FOR_PROVIDES(p, pp, what);
                                {
-                                   PoolItem_Ref poolItem = _pool.find (sat::Solvable(p));
+                                   PoolItem poolItem = _pool.find (sat::Solvable(p));
                                    if (poolItem.status().isToBeInstalled()
                                        || poolItem.status().staysUninstalled())
                                        problemSolution->addSingleAction (poolItem, KEEP);
@@ -705,7 +705,7 @@ SATResolver::problems ()
                                Id p, *pp;
                                FOR_PROVIDES(p, pp, what);
                                {
-                                   PoolItem_Ref poolItem = _pool.find (sat::Solvable(p));
+                                   PoolItem poolItem = _pool.find (sat::Solvable(p));
                                    if (poolItem.status().isToBeUninstalled()
                                        || poolItem.status().staysInstalled())
                                        problemSolution->addSingleAction (poolItem, KEEP);
@@ -717,7 +717,7 @@ SATResolver::problems ()
                                break;
                            case SOLVER_INSTALL_SOLVABLE_UPDATE:
                                {
-                               PoolItem_Ref poolItem = _pool.find (sat::Solvable(what));
+                               PoolItem poolItem = _pool.find (sat::Solvable(what));
                                s = pool->solvables + what;
                                if (poolItem) {
                                    if (_solv->installed && s->repo == _solv->installed) {
@@ -744,12 +744,12 @@ SATResolver::problems ()
                        s = pool->solvables + p;
                        sd = rp ? pool->solvables + rp : 0;
 
-                       PoolItem_Ref itemFrom = _pool.find (sat::Solvable(p));
+                       PoolItem itemFrom = _pool.find (sat::Solvable(p));
                        if (rp)
                        {
                            int gotone = 0;
 
-                           PoolItem_Ref itemTo = _pool.find (sat::Solvable(rp));
+                           PoolItem itemTo = _pool.find (sat::Solvable(rp));
                            if (itemFrom && itemTo) {
                                problemSolution->addSingleAction (itemTo, INSTALL);
                                problemSolution->addSingleAction (itemFrom, REMOVE);
index ecacb0d..c127657 100644 (file)
@@ -102,12 +102,12 @@ class SATResolver : public base::ReferenceCounted, private base::NonCopyable {
     ResolverProblemList problems ();
     void applySolutions (const ProblemSolutionList &solutions);
 
-    void addPoolItemToInstall (PoolItem_Ref item);
+    void addPoolItemToInstall (PoolItem item);
     void addPoolItemsToInstallFromList (PoolItemList & rl);
 
-    void addPoolItemToLock (PoolItem_Ref item);
+    void addPoolItemToLock (PoolItem item);
 
-    void addPoolItemToRemove (PoolItem_Ref item);
+    void addPoolItemToRemove (PoolItem item);
     void addPoolItemsToRemoveFromList (PoolItemList & rl);
 
     bool fixsystem () const {return _fixsystem;}
index 9b7e0d7..ad3aebc 100644 (file)
@@ -81,12 +81,12 @@ namespace zypp
       inline bool isDepMarkerId( IdType id_r )
       { return( id_r == solvablePrereqMarker || id_r == solvableFileMarker ); }
 
-
       /** Id type to connect \ref Solvable and sat-solvable.
        * Indext into solvable array.
       */
       typedef unsigned SolvableIdType;
-      /** Id to denote \ref Solvable::nosolvable. */
+      typedef SolvableIdType size_type;
+     /** Id to denote \ref Solvable::nosolvable. */
       static const SolvableIdType noSolvableId( 0 );
 
       /** Id type to connect \ref Repo and sat-repo. */
diff --git a/zypp/solver/detail/ChangeLog b/zypp/solver/detail/ChangeLog
deleted file mode 100644 (file)
index f637131..0000000
+++ /dev/null
@@ -1,9076 +0,0 @@
-2005-06-22  Tambet Ingo  <tambet@ximian.com>
-
-       Backport changes from the stable branch:
-
-       2005-05-12  James Willcox  <james@ximian.com>
-
-       * rc-rollback.c: (file_changes_to_xml), (get_file_changes),
-       (rc_rollback_restore_files):
-
-       Store symlink targets, and restore them after rollback.
-
-       2005-04-27  James Willcox  <james@ximian.com>
-
-       * rc-rpmman.c: (rc_rpmman_find_system_headers_v4),
-       (rc_rpmman_query), (load_rpm_syms):
-       * rc-rpmman.h: add headerLink
-
-       Ref the headers in rc_rpmman_find_system_headers_v4, as rpm
-       unrefs them after each iteration.
-
-2005-06-22  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-rpmman.c: Update the dependency creation functions.
-       Add support to RPM 4.4.
-
-       * rc-resolvable-match.c (rc_resolvable_match_equal): Check the type
-       of the dependency in case it's set.
-       (rc_resolvable_match_test): Update the dependency creation functions.
-
-       * Makefile.am: Remove atom, precondition and solution from the build
-       for now. Add support for RPM 4.4.
-
-       * rc-resolvable-dep.c: Add type information RCResolvableDep.
-       (dep_new): ditto.
-       (dep_equal): Compare type as well.
-       (rc_resolvable_dep_new): ditto.
-       (rc_resolvable_dep_new_from_spec): Ditto.
-       (rc_resolvable_dep_get_type): Provide accessor for type.
-
-       * rc-debman-general.c (rc_debman_fill_depends): Update the
-       rc_resolvable_dep_new call to use the new API.
-
-       * rc-debman.c (rc_debman_query_file): Ditto.
-
-       * rc-rollback.c (resolvable_match_cb, get_action_from_xml_node): Ditto.
-
-       * rc-dep-or.c (rc_dep_or_new_provide): Ditto.
-
-       * rc-world.c (rc_world_get_resolvable_with_constraint): Ditto.
-       
-       * rc-extract-packages.c (fill_debian_package): Ditto.
-
-       * rc-xml.c (parse_dep_attrs) 
-       (rc_xml_node_to_resolvable_dep_internal): Ditto.
-
-2005-06-08  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-solution.c:
-       * rc-solution.h:
-       * rc-atom.c:
-       * rc-atom.h:
-       * rc-precondition.c:
-       * rc-precondition.h: Add.
-
-       * Makefile.am: Add new files to the build.
-
-2005-05-23  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-world-service.c (rc_world_service_serialize) 
-       (rc_world_service_unserialize): Implement.
-
-2005-05-19  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-world-local-dir.c (serialize_local_dir_cb) 
-       (rc_world_local_dir_serialize_fn, unserialize_local_dir_cb)
-       (rc_world_local_dir_unserialize_fn): Implement serialization.
-       (rc_world_local_dir_class_init): Register serialization functions to
-       vtable.
-
-       * rc-world.c (rc_world_sync): Don't sync if we're operating on
-       unserialized world.
-       (rc_world_sync_conditional): Ditto.
-       (rc_world_refresh): Ditto for refresh.
-       (rc_world_can_transact_resolvable): Ditto for transact.
-       (serialize_lock, rc_world_serialize, rc_world_to_file) 
-       (rc_world_unserialize, rc_world_from_file): Implement RCWorld
-       serialization/unserialization.
-
-       * rc-world-system.c (serialize_system_cb) 
-       (rc_world_system_serialize, unserialize_system_cb) 
-       (rc_world_system_unserialize): Implement serialization.
-       (rc_world_system_class_init): Register serialization functions to
-       vtable.
-
-       * rc-xml.c (rc_resolvable_dep_to_xml_node): Fix ResolvableSpec casting.
-
-       * rc-world-multi.c (serialize_multi_cb) 
-       (rc_world_multi_serialize_fn, rc_world_multi_unserialize_fn):
-       Implement serialization and unserialization.
-       (rc_world_multi_class_init): Register serialization functions
-       to vtable.
-
-2005-05-18  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-version-rpm.h: New file.
-
-       * rc-version-rpm.c: New file.
-
-       * rc-version-deb.h: New file.
-
-       * rc-version-deb.c: New file.
-
-       * rc-rpmman.c (read_patch_parents): Use the new versioning API.
-       Remove version parser and comparer from here.
-
-       * Makefile.am: Build rc-version-deb.[ch] and rc-version-rpm.[ch].
-
-       * rc-debman.c (query_all_read_line_cb): Use the new versioning API.
-       (rc_debman_version_compare): Remove from here.
-       (rc_debman_parse_version_wrapper): Remove.
-
-       * rc-version.h: Add version related packman capabilites here as
-       version properties. Update API declarations.
-
-       * rc-dep-or.c (rc_dep_string_to_or_dep_slist): Use the new versioning
-       API.
-
-       * rc-version.c: Remove the barely working, non extensible versioning
-       system, add a new and 100% better one.
-
-       * rc-extract-packages.c: Clean up some compiler warnings.
-       (fill_debian_package): Use the new version API.
-       (package_into_hash): Ditto.
-
-       * rc-packman.h: Remove versioning related capabilities.
-       Remove versioning related virtual functions from packman.
-
-       * rc-packman.c (rc_packman_version_compare): Remove. It's not only
-       packman specific anymore.
-       (rc_packman_parse_version): Ditto.
-
-       * libredcarpet.h: Add "rc-version-deb.h" and "rc-version-rpm.h"
-
-       * rc-debman-general.h: Remove versionfing function declarations.
-
-       * rc-resolvable-dep.c (rc_resolvable_dep_verify_relation): Use new
-       versioning api.
-
-       * rc-debman-general.c: Clean up, move version related functions out
-       of here.
-
-2005-05-06  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-rpmman.c: Use correct path for rpmroot. General cleanup.
-
-       * rc-util.c (rc_file_exists): Get rid of it, glib already has that.
-
-       * rc-packman.c (rc_packman_set_root_path) 
-       (rc_packman_get_root_path): Implement.
-
-       * rc-world-system.c (rc_world_system_assemble): Set packman's root
-       path.
-       (rc_world_system_new): Take uri argument.
-
-       * rc-resolvable.c (rc_resolvable_to_str): Use class function instead
-       of hard coded one.
-
-2005-04-10  James Willcox  <james@ximian.com>
-
-       * rc-world.c: (foreach_system_upgrade_cb):
-
-       Do not append a package of the same name and version to the list.
-       Avoids duplicate packages in the list of packages to update.
-
-2005-03-24  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_foreach_subworld): Make a private
-       referenced copy of subworlds before calling callback to avoid race
-       conditions.
-
-2005-03-17  Tambet Ingo  <tambet@ximian.com>
-
-       * distributions.xml: Fix sles-9 target.
-
-2005-03-04  James Willcox  <james@ximian.com>
-
-       * rc-package.c: (rc_package_get_install_only),
-       (rc_package_set_install_only):
-       * rc-package.h:
-
-       add rc_package_set_install_only
-
-2005-03-04  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package.c (rc_package_is_local): Implement.
-
-       * rc-package.h (rc_package_is_local): Declare.
-
-2005-02-23  James Willcox  <james@ximian.com>
-
-       * rc-verification.c: (rc_verification_cleanup), (rc_verify_gpg):
-       * rc-verification.h:
-
-       Only create the gpg directory once, and add a function for
-       removing it at shutdown time.  This should speed up verification
-       some.  Also, pass the GNUPGHOME env var to gpg and don't do any
-       'gpg --list-keys' stuff.
-
-2005-01-17  James Willcox  <james@ximian.com>
-                                                                                                            
-        * rc-rpmman.c: Up the supported rpm version, to support 4.3.3
-        * distributions.xml: Add rhel4 platforms
-
-2005-02-03  Peter Teichman  <peter@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_patch_parents): remove debugging printf
-
-2005-01-31  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package-spec.c (rc_package_spec_equal): Test archs too.
-       (rc_package_spec_to_str): Add arch to output string.
-
-2005-01-26  James Willcox  <james@ximian.com>
-
-       * rc-package.c: (rc_package_copy), (rc_package_get_id),
-       (rc_package_set_id):
-       * rc-package.h:
-
-       Add an 'id' to packages.
-
-2005-01-26  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package-spec.c (rc_package_spec_copy): Fix a typo.
-
-2005-01-21  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-rollback.c (rc_rollback_action_get_synth_package): Implement.
-       Well, actually mostly moved it here from rcd.
-
-2005-01-14  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_transact_real): Implement. Move
-       the real work out of (rc_world_multi_transact_fn).
-       (rc_world_multi_transact_fn): Change the order of transacting:
-       First, transact system world(s), then, if there were no errors
-       transact all other worlds. Fixes #70427.
-
-2005-01-10  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-rpmman.c (in_set):
-       (depends_fill_helper): Add back the white listing of file deps.
-
-2005-01-04  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-debman.c (query_all_read_line_cb): Fix the leftover from arch
-       moving.
-
-       Add the beginnings of patch RPM support.
-
-       * rc-xml.h (rc_package_spec_to_xml_node): Declare.
-
-       * rc-xml.c (rc_package_spec_to_xml_node): Implement.
-
-       * rc-rpmman.c (read_patch_parents): Implement.
-       (rc_rpmman_patch_parents): Implement.
-       (rc_rpmman_class_init): Connect patch_parents virtual function.
-       (rc_rpmman_init): Add RC_PACKMAN_CAP_PATCHES to capabilities.
-
-       * rc-packman.h: Add new packman capability, RC_PACKMAN_CAP_PATCHES.
-       Add new virtual function, rc_packman_real_patch_parents.
-
-       * rc-packman.c (rc_packman_patch_parents): Implement.
-
-       * rc-debman.c (rc_rpmman_debman_parents): Add a dummy virtual function,
-       debman doesn't support patches.
-       (rc_debman_class_init): Add virtual function for patch parents.
-
-2005-01-03  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package-spec.c (rc_package_spec_get_arch): Fix typo.
-
-       Move arch from RCPackage to RCPackageSpec.
-
-       * rc-xml.c (parser_package_end, rc_xml_node_to_package) 
-       (rc_package_to_xml_node): 
-
-       * rc-world-store.c (rc_world_store_add_package) 
-       (rc_world_store_add_package): 
-
-       * rc-rpmman.c (rc_rpmman_read_header): 
-
-       * rc-package.h: 
-
-       * rc-package.c (rc_package_new, rc_package_copy): 
-
-       * rc-package-spec.h: 
-
-       * rc-package-spec.c (rc_package_spec_new, rc_package_spec_init) 
-       (rc_package_spec_copy, rc_package_spec_get_epoch) 
-       (rc_package_spec_set_epoch): 
-
-       * rc-package-dep.c (dep_new): 
-
-       * rc-extract-packages.c (fill_debian_package): 
-
-2004-12-21  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_find_system_headers_v3): Checking for 0
-       once is quiet enough.
-
-2004-12-09  James Willcox  <james@ximian.com>
-
-       * rc-resolver-context.c: (context_package_collector),
-       (rc_resolver_context_get_installs),
-       (rc_resolver_context_get_uninstalls):
-
-       Filter out bogus packages from installs and uninstalls
-
-2004-12-09  James Willcox  <james@ximian.com>
-
-       * rc-subscription.c: (rc_subscription_save),
-       (rc_subscription_load), (rc_subscription_set_file):
-       * rc-subscription.h:
-
-       add rc_subscription_set_file() to allow us to change where it
-       will save/load subscriptions.
-
-2004-12-03  James Willcox  <james@ximian.com>
-                                                                                        
-        * distributions.xml: add suse-91-x86_64
-
-2004-12-03  James Willcox  <james@ximian.com>
-                                                                                        
-        * distributions.xml: add suse-92-i586 and suse-92-x86_64
-
-2004-12-03  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package-spec.h: 
-       * rc-package-spec.c (rc_package_spec_new): Remove arguments. This was
-       needed so that wrappers could have required default constructor.
-
-2004-12-01  Peter Teichman <peter@ximian.com>
-
-       * rc-package-dep.c: (rc_package_relation_from_string),
-       (rc_package_relation_to_string): change dependency
-       serialization to use letters (gt, gte, eq, etc) rather
-       than symbols (>, >=, =, etc)
-
-2004-12-01  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_get_file_deps): If we're not asked to filter
-       anything out, don't. No white listing, you get 'em all.
-
-       * rc-package.c (rc_package_get_latest_update): Do checks for NULL's
-       *before* accessing data.
-
-2004-11-30  James Willcox  <james@ximian.com>
-
-       * rc-resolver-context.c: (get_info_foreach_cb),
-       (rc_resolver_context_get_info): return a list of strings
-       * rc-resolver-context.h:
-       * rc-resolver-queue.c: (rc_resolver_queue_get_context): added
-       * rc-resolver-queue.h:
-
-2004-11-30  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-rollback.c (foreach_package_cb): Handle multiple installed
-       packages with same name (kernel package usually).
-       (rc_rollback_info_new): Ditto.
-
-       * rc-rpmman.c (rc_rpmman_find_system_headers_v3): Ignore matches with
-       zero offset. Fixes #70011.
-       (rc_rpmman_get_file_deps): Move file dependency fetching to it's own
-       function. Optimize the case where we don't want file deps.
-       Add "filter_file_deps" argument.
-
-       * rc-rpmman.h: Add "filter_file_deps" argument.
-
-       * rc-packman.h: Ditto.
-
-       * rc-packman.c (rc_packman_query_file) 
-       (rc_packman_query_file_list): Ditto.
-
-       * rc-debman.c (rc_debman_query_file): Ditto.
-
-       * rc-extract-packages.c: Use updated api.
-
-2004-11-19  James Willcox  <james@ximian.com>
-
-       * rc-package-spec.c: (rc_package_spec_new), (rc_package_spec_free): new
-       * rc-package-spec.h: added the above
-       * rc-package-update.c: (rc_package_update_copy),
-       (rc_package_update_free), (rc_package_update_slist_sort),
-       (rc_package_update_get_parent), (rc_package_update_set_parent):
-       * rc-package-update.h:
-       * rc-package.c: (rc_package_add_update),
-       (rc_package_get_latest_update), (rc_package_set_channel):
-
-       Added a 'parent' member to RCPackageUpdate, which is set if the update
-       is a patch rpm.  Also added logic to rc_package_add_update and
-       rc_package_get_latest_update for patch updates.  It tries to give you
-       a patch if it can, otherwise the full rpm (if it exists), otherwise
-       nothing.
-
-2004-11-16  James Willcox  <james@ximian.com>
-
-       * rc-distro.c: (sax_start_element), (sax_end_element):
-       * rc-distro.h: add rc_distro_get_role()
-       * rc-package-update.c: (rc_package_update_new): set the name on the spec
-
-2004-11-08  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package.c (rc_package_set_channel): Increment channel's reference
-       count, it gets decremented in finalize().
-
-2004-11-03  James Willcox  <james@ximian.com>
-                                                                                
-        * rc-rpmman.c: (rc_rpmman_is_database_changed), (yast_running),
-        (rc_rpmman_query_all):
-                                                                                
-        Don't read the rpm database while yast is running.
-
-2004-10-29  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package.c (rc_package_set_arch, rc_package_set_section) 
-       (rc_package_set_file_size, rc_package_set_installed_size) 
-       (rc_package_set_summary, rc_package_set_description): Add setters.
-       (rc_package_set_signature_filename): Fix memory leak.
-       (rc_package_get_requires, rc_package_set_requires) 
-       (rc_package_get_provides, rc_package_set_provides) 
-       (rc_package_get_conflicts, rc_package_set_conflicts) 
-       (rc_package_get_obsoletes, rc_package_set_obsoletes) 
-       (rc_package_get_children, rc_package_set_children) 
-       (rc_package_get_suggests, rc_package_set_suggests) 
-       (rc_package_get_recommends, rc_package_set_recommends):
-       Add setters, rewrite getters. Don't expose PackageDepArrays.
-
-       * rc-package-update.c (rc_package_update_set_importance) 
-       (rc_package_update_set_package_url) 
-       (rc_package_update_set_signature_url) 
-       (rc_package_update_set_md5sum, rc_package_update_set_description) 
-       (rc_package_update_set_license) 
-       (rc_package_update_set_package_size) 
-       (rc_package_update_set_installed_size) 
-       (rc_package_update_set_signature_size, rc_package_update_set_hid):
-       Add setters.
-
-       * rc-package-spec.c (rc_package_spec_set_name) 
-       (rc_package_spec_get_version, rc_package_spec_set_version) 
-       (rc_package_spec_get_release, rc_package_spec_set_release) 
-       (rc_package_spec_has_epoch, rc_package_spec_get_epoch) 
-       (rc_package_spec_set_epoch): Add getters and setters.
-
-       * rc-package-dep.c (rc_package_dep_array_to_slist): Implement.
-       (rc_package_dep_array_nth): Remove.
-
-2004-10-08  Peter Teichman  <peter@ximian.com>
-
-       * rc-distro.c: make the distro detect string comparison
-       case-insensitive
-
-2004-09-20  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package.h: Make some accessor functions to use 'const gchar*'
-       to unify the logic.
-
-       * rc-package.c: Ditto. Add g_return_if_fail checks to accessors.
-
-2004-09-17  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package-update.[ch]: Add accessor functions for all members.
-
-2004-09-10  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-resolver-info.h: Add argument names to virtual function
-       prototypes. This makes mono bindings' life easier.
-
-       * rc-resolver-context.h: Ditto.
-
-       * rc-package.h: Ditto.
-
-       * rc-package-match.h: Ditto.
-
-       * rc-package-dep.h: Ditto.
-
-       * rc-channel.h: Ditto.
-
-       * rc-package.c (rc_package_is_install_only): Add for bindings.
-       (rc_package_get_updates): Ditto.
-       (rc_package_get_suggests): Ditto.
-       (rc_package_get_recommends): Ditto.
-
-2004-09-02  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package-match.h: Use typedef'ed RCPackageMatch everywhere,
-       otherwise poor gapi-parser gets confused about it.
-
-2004-09-01  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-package.c (rc_package_get_file_size): Implement.
-       (rc_package_get_requires): Implement.
-       (rc_package_get_provides): Implement.
-       (rc_package_get_conflicts): Implement.
-       (rc_package_get_obsoletes): Implement.
-       (rc_package_get_children): Implement.
-
-       * rc-package-dep.c (rc_package_dep_get_spec): Implement.
-       (rc_package_dep_array_nth): Implement.
-
-2004-08-30  James Willcox  <james@ximian.com>
-
-       * distributions.xml: Add rhel-3es-x86_64
-
-2004-08-18  James Willcox  <james@ximian.com>
-
-       * rc-resolver-context.c: (get_info_foreach_cb),
-       (rc_resolver_context_get_info):
-       * rc-resolver-context.h:
-       * rc-resolver.c: (rc_resolver_get_best_context),
-       (rc_resolver_get_invalid_queues):
-       * rc-resolver.h:
-
-       Add some more API for mono bindings.
-
-2004-08-06  James Willcox  <james@ximian.com>
-
-      * distributions.xml:  Apparently there is also no i686 sles9.  Oops.
-
-2004-08-04  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-extract-packages.c (rc_extract_packages_from_directory): Implement
-       packageinfo.xml reading.
-
-2004-07-29  Tambet Ingo  <tambet@ximian.com>
-
-        * rc-rpmman.c (rc_rpmman_section_to_package_section): Suse uses fancy
-        package sections, map those correctly to RCPackageSection.
-
-2004-07-21  James Willcox  <james@ximian.com>
-
-       * Makefile.am:
-
-2004-07-20  James Willcox  <james@ximian.com>
-
-       * rc-channel.c: (rc_channel_get_type),
-       (rc_channel_get_channel_type):
-       * rc-channel.h:
-       * rc-world-service.c: (rc_world_service_set_assemble_function):
-       * rc-world-service.h:
-       * rc-world.c: (rc_world_set_refresh_function):
-       * rc-world.h:
-
-       Add some crackrock API for bindings to avoid writing glue.  Also
-       make RCChannel a boxed type.
-
-2004-07-20  James Willcox  <james@ximian.com>
-
-       * Makefile.am: generate a shared library instead of a static one
-
-2004-07-14  James Willcox  <james@ximian.com>
-
-       * rc-channel.c: (get_packages_foreach_fn),
-       (rc_channel_get_packages):
-       * rc-channel.h:
-       * rc-extract-packages.h:
-       * rc-package-spec.h:
-       * rc-package.c: (rc_package_get_type), (rc_package_unref),
-       (rc_package_set_filename), (rc_package_get_spec),
-       (rc_package_get_arch), (rc_package_get_section),
-       (rc_package_get_installed_size), (rc_package_get_summary),
-       (rc_package_get_description), (rc_package_get_signature_filename),
-       (rc_package_set_signature_filename):
-       * rc-package.h:
-       * rc-resolver-context.c: (rc_resolver_get_type),
-       (marked_package_collector),
-       (rc_resolver_context_get_marked_packages),
-       (rc_resolver_context_get_installs), (pair_package_collector),
-       (rc_resolver_context_get_upgrades),
-       (rc_resolver_context_foreach_uninstall),
-       (rc_resolver_context_get_uninstalls):
-       * rc-resolver-context.h:
-       * rc-resolver.c: (rc_resolver_fake_ref),
-       (rc_resolver_context_get_type), (rc_resolver_resolve_dependencies),
-       (rc_resolver_get_best_context):
-       * rc-resolver.h:
-       * rc-world-multi.c: (subworld_foreach_fn),
-       (rc_world_multi_get_subworlds):
-       * rc-world-multi.h:
-       * rc-world-service.c: (rc_world_service_get_url),
-       (rc_world_service_set_url), (rc_world_service_get_name),
-       (rc_world_service_set_name), (rc_world_service_get_id),
-       (rc_world_service_set_id), (rc_world_service_get_is_sticky),
-       (rc_world_service_set_is_sticky),
-       (rc_world_service_get_is_invisible),
-       (rc_world_service_set_is_invisible),
-       (rc_world_service_get_is_singleton),
-       (rc_world_service_set_is_singleton):
-       * rc-world-service.h:
-       * rc-world.c: (get_channel_foreach_fn), (rc_world_get_channels),
-       (get_locks_foreach_fn), (rc_world_get_locks),
-       (rc_world_foreach_upgrade), (get_upgrades_foreach_fn),
-       (rc_world_get_upgrades):
-       * rc-world.h:
-
-       Add a ton of API for mono bindings.
-
-2004-06-17  James Willcox  <james@ximian.com>
-
-       * rc-channel.h:
-       * rc-extract-channels.c: (rc_extract_channels_from_helix_buffer):
-       * rc-extract-packages.c: (rc_extract_yum_package):
-       * rc-extract-packages.h:
-       * rc-world-store.c: (package_dup_fn), (channel_dup_fn),
-       (rc_world_store_dup_fn):
-
-       Fix rc_world_dup(), and add a function for 'extracting' a yum
-       package (it basically just loads the rpm header).
-
-2004-06-17  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-debug.h: Make it #include'able from C++.
-
-2004-06-11  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-world-service.c (rc_world_service_register): Don't assume
-       GType is 32 bit integer. Fixes crash on startup on ia64 machines.
-       (rc_world_service_lookup): Ditto.
-
-2004-06-10  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-distro.h: Add declaration of rc_distro_get_current().
-
-       * rc-distro.c: Cache previously parsed RCDistro
-       (rc_distro_copy): Implement.
-       (rc_distro_set_current): Implement.
-       (rc_distro_get_current): Implement.
-
-       * rc-arch.h: Make it #include'able from C++
-
-       * rc-channel.h: ditto.
-
-       * rc-world.h: Ditto.
-
-       * rc-util.h: Ditto.
-
-       * rc-pending.h: Ditto.
-
-       * rc-package-spec.h: Ditto.
-
-       * rc-package-importance.h: Ditto.
-
-2004-06-09  James Willcox  <james@ximian.com>
-
-       * rc-arch.h:  Sigh, fix the build
-
-2004-06-09  James Willcox  <james@ximian.com>
-
-       * distributions.xml:
-       * rc-arch.c:
-
-       Support SuSE Linux Enterprise Server 9, and Novell Linux Desktop
-
-2004-06-04  James Willcox  <james@ximian.com>
-
-       * rc-rpmman.c: (rc_rpmman_read_header):
-
-       Correct a logic error
-
-2004-06-03  James Willcox  <james@ximian.com>
-
-       * rc-rpmman.c: (rc_rpmman_read_header):
-
-       Don't munge noarch packages
-
-2004-05-20  Vladimir Vukicevic  <vladimir@pobox.com>
-
-       * Makefile.am: Added 4.3 stub (rpm 4.3 .so links against the
-       right libs, so maybe we can dispense with the stub, but it's
-       easier to just keep it there)
-
-       * rc-rpmman.c bumped LATEST_SUPPORTED_RPM_VERSION to 40301.
-       (load_fake_syms): the hdrVec entries for 4.1-4.2.2 are valid for 4.3.1
-       (load_rpm_syms): the hdrVec entries for 4.1-4.2.2 are valid for 4.3.1
-       
-       * distributions.xml: added fc2
-
-2004-05-18  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-extract-channels.c (rc_extract_channels_from_helix_buffer):
-       Free 'id_str' when done, fixes a memory leak.
-
-2004-05-13  James Willcox  <james@ximian.com>
-
-       * rc-rpmman.c: (load_fake_syms), (load_rpm_syms):
-
-       Support RPM 4.2.2.
-
-2004-05-13  James Willcox  <james@ximian.com>
-
-       * distributions.xml: Add rhel-3ws-x86_64
-       * rc-arch.c:  Add compat stuff for x86)64
-       * rc-distro.c: (sax_end_element): Pick the best distro, not just the
-       first one we see that happens to be compatible.
-       * rc-rpmman.c: (rc_package_to_rpm_name), (rc_rpmman_read_header):
-       Munge the package names coming out of the rpm database to have
-       "-32bit" appended to the non-64bit packages on Red Hat opteron systems.
-
-2004-05-06  James Willcox  <james@ximian.com>
-
-       * distributions.xml:
-
-       Add SUSE 9.1 support
-
-2004-04-09  James Willcox  <james@ximian.com>
-
-       * rc-arch.c:
-       * rc-arch.h:
-
-       Add RC_ARCH_X86_64
-
-2004-04-08  James Willcox  <james@ximian.com>
-
-       * rc-arch.c:  flip the order of ix86 and i386 in the arch table.  This
-       was causing some lookup issues.
-
-2004-04-06  James Willcox  <james@ximian.com>
-
-       * rc-queue-item.c: (install_item_process), (require_process_cb),
-       (require_item_process), (unlink_check_cb), (uninstall_process_cb):
-       * rc-queue-item.h:
-       * rc-resolver-context.c: (requirement_met_cb),
-       (rc_resolver_context_requirement_is_met):
-       * rc-resolver-context.h:
-
-       Fix the resolver such that package set child deps are always
-       satisfied by the exact version required.
-
-2004-04-01  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-packman.c (rc_packman_finalize): Set the file extension to NULL.
-
-       * rc-rpmman.c (rc_rpmman_database_filename): RPM leaks the value
-       of rpmGetPath in most versions, so keep around a static pointer to
-       our built path and just return that if it's set so we don't leak
-       all the time.  Make the function return const. 
-
-2004-02-19  Joe Shaw  <joe@ximian.com>
-
-       * rc-arch.c (arch_table): Detect "ix86" as RC_ARCH_I386.  OpenPKG
-       uses that convention.  Patch from Christopher Chan
-       <cchan@spikesource.com>
-
-2004-02-04  Vladimir Vukicevic  <vladimir@pobox.com>
-
-       * rc-util.c: check if avail_in is 0 in loop in bunzip2_memory;
-       if it goes to 0, we have an incomplete stream (an error that
-       bzlib can't detect by itself)
-
-2004-01-20  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Change the RHEL 3 strings to detect both
-       "Taroon" and "Taroon Update 1"
-
-2003-11-13  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: We do a first-sufficient match, so we
-       need to look for s390x before s390.
-
-       * rc-world-service.c (rc_world_service_register,
-       rc_world_service_lookup): GTypes are unsigned ints, so use
-       the unsigned variants of the glib integer/pointer conversion
-       macros.
-
-       * rc-line-buf.c (rc_line_buf_cb): Make bytes_read a gsize from
-       a guint for 64-bit cleanliness.
-
-2003-11-12  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Add support for SLES 8 on s390 and s390x.
-
-       * rc-arch.[ch]: Add support for s390 and s390x.
-
-2003-11-12  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Add support for SLES 8 on ppc.
-
-       * rc-arch.[ch]: Add support for ppc64 and make it superior (but
-       backward compatible) to ppc.
-
-2003-11-11  Joe Shaw  <joe@ximian.com>
-
-       * rc-queue-item.c (install_item_process): When iterating through
-       our list of conflicts, if the conflicting package is the same as
-       ourself, don't create an uninstall queue item.
-
-2003-11-11  Joe Shaw  <joe@ximian.com>
-
-       * rc-extract-packages.c (rc_extract_package_from_undump_buffer):
-       Call the channel callback for the system channel too.
-
-       * rc-world-undump.c (rc_world_undump_class_init): Implement the
-       get_subscribed_fn and set_subscribed_fn virtual methods since we
-       don't want these saved to our subscriptions.xml file.
-       (rc_world_undump_get_subscription): Check to see if the channel is
-       in our GSList of subscribed channels.
-       (rc_world_undump_set_subscription): Add or remove the channel
-       to/from our list of subscribed channels.
-       (rc_world_undump_finalize): Unref the channels in our
-       subscriptions list.
-       (add_channel_cb): Don't set the subscription if the channel is a
-       system channel.
-
-       * rc-world-undump.h (RCWorldUndump): Add a GSList of RCChannels
-       for storing our subscriptions; we never want to save undumped
-       subscriptions to disk.
-
-2003-11-06  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Add support for Fedora Core 1 (fedora-1-i386).
-
-2003-11-03  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c (sax_parser_enable): Set ctxt->sax->initialized to 1
-       to avoid a crash against libxml 2.6.1.
-
-2003-10-30  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_find_file_v3): Any non-zero return from
-       rpmdbFindByFile is a failure, not just -1.  Fixes #50373.
-
-       * rc-world-store.c (rc_package_and_dep_verify_relation): Fix
-       backwards arguments, so that asking if "= 1.0" verifies against
-       "1.0-9" returns TRUE.
-
-2003-10-29  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_add_subworld): Revert not emitting
-       signals on subworld add while refreshing.
-       (rc_world_multi_remove_subworld): Ditto for removal.
-
-2003-10-28  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-store.c (rc_package_and_dep_verify_relation): Added.
-       Verifies both the dependency relationship between pad->dep and the
-       passed-in dep, but also the channel in pad->package and the
-       channel in the passed-in dep.
-       (rc_world_store_foreach_providing_fn): Change the call of
-       rc_package_dep_verify_Relation() to
-       rc_package_and_dep_verify_relation() so we can verify channels
-       too.
-
-       * rc-world.c (foreach_system_poackage_cb): Instead of calling
-       rc_world_get_best_upgrade() for rc_world_foreach_system_upgrade(),
-       iterate through them by hand and find a list of best upgrades,
-       because it's possible for packages which have exactly the same
-       version to be in more than one channel, and we need to return all
-       matches so that doing something like an update in a channel with
-       that package always works (instead of just picking one at
-       random).  Fixes #50202.
-
-2003-10-28  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Add support for Mandrake 9.2.
-
-2003-10-24  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Add support for RHEL 3 AS, ES, and WS and
-       SuSE 9.0.
-
-       * Makefile.am: Build two stubs for RPM 4.1: ones linked against
-       libpopt.so.1 (SuSE) and ones against libpopt.so.0 (everyone else).
-
-       * rc-rpmman.c (write_objects, rc_rpmman_init): Split the RPM 4.1
-       stubs in two.
-
-2003-10-21  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_depends_fill): Raise the debug level of
-       the UTF-8 filename warning from WARNING to INFO since it seems to
-       scare people and it's not that important.
-
-2003-10-20  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (load_fake_syms): Fix a typo on gnameToGid() in the
-       static linking case.
-
-2003-10-20  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_add_subworld): Emit signal only
-       if not refreshing.
-       (rc_world_multi_remove_subworld): Ditto.
-
-2003-10-16  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_is_database_changed): If the db_clean
-       flag is FALSE, always return TRUE from this function.
-       (open_database): Set the db_clean flag to TRUE on a successful
-       open and FALSE on a failed one.
-
-2003-10-15  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_foreach_system_upgrade): Create a unique
-       hash of packages, so if foo 1.0 and foo 2.0 are both installed,
-       we'll only try to get an upgrade for foo 2.0.
-
-2003-10-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-queue-item.c (install_item_process): When creating uninstall
-       items due to conflicts, call
-       rc_queue_item_uninstall_set_due_to_conflict().
-       (conflict_process_cb): Call
-       rc_queue_item_uninstall_set_due_to_obsolete() or
-       _due_to_conflict() depending on the info's actually_an_obsolete
-       flag.
-       (uninstall_item_process): If we're uninstalling due to conflict or
-       obsolete, don't display the missing requirement, since it doesn't
-       make any sense.
-       (uninstall_item_copy): Also copy the explicitly_requested,
-       due_to_conflict, due_to_obsolete, and unlink flags.
-       (rc_queue_item_uninstall_set_due_to_conflict,
-       rc_queue_item_uninstall_set_due_to_obsolete): Added these, just
-       sets the appropriate bits.
-
-       * rc-queue-item.h (RCQueueItem_Uninstall): Add a due_to_conflict
-       bit.
-
-       * rc-resolver-context.c (rc_resolver_context_new_child): Create
-       the status hash with NULL, NULL as the parameters so that packages
-       in the hash are compared by pointer value instead of their
-       RCPackageSpecs.  Comparing package specs isn't sufficient since it
-       is common for a package that is installed to have the same spec as
-       a package in a channel.  But since these two packages are not the
-       same package, their statuses could be different and we shouldn't
-       treat them as equal.  This was fixed in the more specific,
-       optimized case by Jon in his commit on 2003-06-17.
-       (rc_resolver_context_get_status): Remove a redundant spec
-       comparison; if the pointers are equal, we can assume that the
-       specs are also equal.
-
-2003-10-08  Joe Shaw  <joe@ximian.com>
-
-       * rpm-ugid.h: "Borrow" a header from RPM in the spirit of
-       rpm-signature.h and rpm-rpmlead.h so we can build statically on
-       Solaris.
-
-       * rc-rpmman.c: #include rpm-ugid.h
-
-2003-10-07  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman.c (rc_packman_transact): Remove rollback from here.
-       (rc_packman_get_rollback_enabled): Added.
-
-       * rc-rollback.c (RCRollbackInfo): Drop the packman element.
-       (file_changes_to_xml): Take a GError.  Get the packman with
-       rc_packman_get_global().
-       (add_tracked_package): Take a GError.  Don't call
-       file_changes_to_xml() if the package is synthetic.
-       (rc_rollback_info_new): Take an RCWorld instead of an RCPackman.
-       Also take a GError.  Use RCWorld functions to find installed
-       packages instead of RCPackman.
-
-       * rc-world-multi.c (rc_world_multi_transact_fn): Disable rollback
-       on the packman before calling rc_world_transact() on the subworlds
-       to prevent rollback recursion.
-
-       * rc-world.c (rc_sync_world): Nuke this and some other dead code.
-       (rc_world_transact): Set up rollback structures before running the
-       transaction, and save them as necessary afterward.
-
-2003-10-07  Joe Shaw  <joe@ximian.com>
-
-       * rc-queue-item.c (uninstall_item_process): If the system can't
-       provide a package set's child when we're trying to remove it,
-       don't assert.  It's entirely possible that the child was removed
-       using rpm -e.
-
-2003-10-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-system.c (rc_world_system_transact): Return FALSE if
-       the transaction fails in the packman.
-
-       * rc-distman.c (rc_distman_new): Fix the case where we try to
-       instantiate a packman but no packaging backends are chosen.
-
-2003-10-03  Joe Shaw  <joe@ximian.com>
-
-       * rc-extract-packages.c (rc_extract_packages_from_undump_buffer,
-       rc_extract_packages_from_undump_file): Take another callback for
-       each lock in an undumped world, and remove the #if 0 and FIXME for
-       dealing with locks saved to a dump.  For the system packages,
-       create a system packages channel and add the packages into it.  In
-       the general channel case, fix some overloading of local variables
-       and some misuse.
-
-       * rc-package-match.c (rc_package_match_from_xml_node): We don't
-       need to take an RCWorld anymore, so drop that argument.
-
-       * rc-world-undump.c (rc_world_undump_new): Check to make sure the
-       file exists and return NULL if it doesn't.
-       (add_lock_cb): Added, gets passed in as the callback to
-       rc_extract_packages_from_undump_file().
-
-       * rc-world.c (add_channel_packages_cb): Skip over system packages
-       when creating a dump, since those go into the "system_packages"
-       section.
-
-2003-10-03  Joe Shaw  <joe@ximian.com>
-
-       * rc-package.c (rc_package_unref): If the RC_DEBUG_PACKAGE_UNREF
-       environment variable is set, don't free the package elements, but
-       do decrement (and assert) on the refcount.  Helps debugging
-       ref-count related bugs.
-
-       * rc-queue-item.c (uninstall_item_copy): rc_package_ref the
-       package when we copy an uninstall queue item.
-
-2003-09-30  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-system.c (rc_world_system_finalize): Fix a
-       thinko... the signal is on the packman, not the system world.
-
-2003-09-30  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-system.c (rc_world_system_finalize): Disconnect from
-       the packman's database_changed signal when we are finalized.
-       (rc_world_system_init): Save the signal connection id to the
-       database_changed signal on the packman.
-
-2003-09-26  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-multi.c: Add subworld_added and subworld_removed
-       signals.
-
-2003-09-23  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (vercmp): Remove #ifdefs for STRICT_RPM_ORDER.
-       Ximian's packages are all fixed now and the order is defined in
-       newer RPM versions.  Patch from Peter Bowen (pzb@ximian.com).
-
-2003-09-23  Joe Shaw  <joe@ximian.com>
-
-       * rc-queue-item.c (install_item_process): We need to call
-       rc_world_foreach_conflicting_package() on everything that we
-       provide, not just our name.
-
-2003-09-23  Joe Shaw  <joe@ximian.com>
-
-       * rc-queue-item.c (require_process_cb): Ref the package before
-       putting it in the unique hash table.
-       (require_item_process): Call g_hash_table_new_full() and pass in
-       rc_package_unref() as the key destroy function.
-       (uninstall_item_destory): Unref the package.
-       (rc_queue_item_new_uninstall): Ref the package.
-
-       * rc-resolver-context.c (rc_resolver_context_unref): If
-       last_checked_package is set, unref it.
-       (rc_resolver_context_get_status): Unref the old
-       last_checked_package, ref the new one.
-
-       * rc-world-system.c (rc_world_system_foreach_providing): Set the
-       installed bit to TRUE and set the channel to the system channel.
-
-2003-09-22  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-local-dir.c (rc_world_local_dir_assemble_fn): Use else
-       ifs, since we can only match one token at a time.  Fix a thinko
-       where the alias was always being set to the directory's basename
-       and not the passed-in alias.
-
-       * rc-world-multi.c (rc_world_multi_add_subworld): Add some code to
-       check to see if any other services have the same name and then
-       differentiate them with a number.  Kind of ugly code, could
-       probably be virtualized at some point.  Also, always append to the
-       list of subworlds, not prepend, since it makes more sense and it's
-       not particularly long list.
-
-2003-09-19  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-multi.c (touch_all_sequence_numbers): Touches all four
-       world sequence numbers.
-       (rc_world_multi_add_subworld): After adding a subworld, touch all
-       the sequence numbers.
-       (rc_world_multi_remove_subworld): Ditto.
-
-2003-09-18  Joe Shaw  <joe@ximian.com>
-
-       * rc-subscription.c (rc_subscription_match): A NULL legacy ID is
-       okay, so handle it gracefully instead of crashing on strlen().
-
-       * rc-world-system.c (rc_world_system_load_packages):
-       rc_world_store_clear() calls rc_world_store_remove_packages(), so
-       we don't need to do both.  Just do the former, and do it after try
-       to query the system packages so we can fall back on that cached
-       data if we fail.
-
-       * rc-rpmman.c (rc_rpmman_depends_fill): Make sure the package
-       filename is valid UTF-8 before adding it as a provide.  Works
-       around some broken SuSE packages.
-
-2003-09-17  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman.c (rc_debman_find_file): Return an RCPackageSList.
-
-       * rc-packman.c (rc_packman_find_file): Return an
-       RCPackageSList... RPM can have files which are owned by multiple
-       packages (notably /etc/rc.d/init.d).
-
-       * rc-rpmman.c (rc_rpmman_section_to_package_section): Fix some
-       pointer arithmetic which is technically undefined in C.
-       (rc_rpmman_find_file_v4, rc_rpmman_find_file_v3): Fix these to
-       return a list of packages instead of just one.  Also set the
-       installed bit on these packages (they weren't set before), which
-       is technically correct.
-       (rc_rpmman_fine_file): Return an RCPackageSList.
-
-       * rc-world-system.c (rc_world_system_foreach_providing): If the
-       parent's function returns 0 and we're dealing with a file
-       dependency, ask the packman for a list of packages which provide
-       that dep.
-       (rc_world_system_class_init): Connect our implementation of
-       foreach_providing_fn.
-
-2003-09-16  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.c (RCChannel): Add a legacy_id field for migrating
-       old channel IDs to the new ones.
-       (rc_channel_unref): Free the legacy ID.
-       (rc_channel_{set|get}_legacy_id): Added.
-
-       * rc-extract-channels.c (rc_extract_channels_from_helix_buffer):
-       Set the channel ID to the "bid" field in the XML.  Fall back on
-       "id" if "bid" isn't present.  Set the legacy id to "id".
-
-       * rc-subscription.c (rc_subscription_match): When matching
-       old-style ids, check the channel's legacy ID.  When we rewrite the
-       subscription entry as a new-style one, change it to the channel
-       id.
-
-2003-09-15  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_refresh_fn): If the pending
-       isn't active after we call rc_world_refresh(), don't add it to the
-       pending list.  We'll just be mucking around with freed data and we
-       don't care about watching it if it doesn't work anymore anyway.
-
-       * rc-distro.c (rc_distro_parse_xml): Set up a push parser instead
-       of a doc parser so that we don't have to null-terminate our distro
-       data.
-
-       * rc-xml.c (rc_package_sax_context_parse_chunk): Remove some old
-       code which could cause problems in rather exotic cases.
-
-2003-09-11  Joe Shaw  <joe@ximian.com>
-
-       * rc-extract-packages.c (rc_extract_packages_from_directory): Add
-       a recursive flag. 
-
-       * rc-world-local-dir.c (rc_world_local_dir_assemble_fn): Check for
-       the "recursive" flag in the URI.
-       (rc_world_local_dir_populate): Pass the recursive flag into
-       rc_extract_packages_from_directory().
-
-2003-09-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-local-dir.c (rc_world_local_dir_assemble_fn): name and
-       alias aren't mutually exclusive, so don't use an else if.  Set the
-       service's unique ID to the path, not the alias so you can't mount
-       the same directory multiple times.
-
-2003-09-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_refresh_begin): New function which just
-       sets world->refresh_pending to TRUE.
-       (rc_world_refresh): Don't set refresh_pending to TRUE
-       before calling the refresh_fn.  If we don't have a refresh_fn,
-       call it immediately before calling rc_world_refresh_complete().
-       (rc_world_refresh_complete): Remove some dead #if 0ed code.
-
-       * rc-world-multi.c (RefreshInfo): Move multi_pending out of here
-       and into the main RCWorldMulti object.
-       (rc_world_multi_cut_over_to_new_subworlds): Unref and set the
-       multi_pending to NULL after we've cut over.
-       (refresh_info_free): Don't do it here.
-       (rc_world_multi_refresh_fn): Make the multi world more robust
-       against simultaneous refreshes.  If another refresh is already
-       running, just return the multi_pending as our own pending.  If we
-       don't have any subworlds, just call rc_world_refresh_begin() and
-       rc_world_refresh_complete() and return NULL.  Otherwise, start the
-       multi_pending immediately.
-
-       * rc-world-synthetic.c (rc_world_synthetic_refresh): Call
-       rc_world_refresh_begin() before loading the synthetic packages.
-
-       * rc-world-system.c (rc_world_system_refresh): Call
-       rc_world_refresh_begin() before loading the system packages.
-
-2003-09-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_cut_over_to_new_subworlds):
-       Return a gboolean indicating whether we've cut over or not.
-       (refresh_info_free): Disconnect the refreshed and update signals.
-       (refreshed_cb): Call rc_pending_finished() if we've cut over to
-       new subworlds and then just free the refresh info.  Simplifies
-       things a *lot* and makes refreshes block correctly.
-       (pending_complete_cb): Nuke this.  It added too much complexity
-       and didn't work right.
-       (rc_world_multi_refresh_fn): Don't initialize signal IDs to
-       -1... they're unsigned and 0 is an invalid ID.  Don't connect to
-       the "complete" signal anymore.
-
-       * rc-extract-packages.c (add_fake_history): Added.  Creates an
-       RCPackageUpdate entry for this package and adds it to the history.
-       (rc_extract_packages_from_directory): Call add_fake_history()
-       after initializing the package.
-
-2003-09-09  Joe Shaw  <joe@ximian.com>
-
-       * rc-util.c (rc_error_quark): Added.  Gets a quark for use with
-       GError.
-
-       * rc-world-local-dir.c (rc_world_local_dir_assemble_fn): Take a
-       GError argument and set it if the directory doesn't exist.
-
-       * rc-world-multi.c (rc_world_multi_mount_service): Take a GError
-       argument and set it if the service can't be mounted for whatever
-       reason.
-
-       * rc-world-service. (rc_world_service_mount): Take a GError
-       argument and set it if the URI can't be parsed or handled by any
-       service.
-
-       * rc-world-synthetic.c (rc_world_synthetic_assemble): Take a
-       GError argument and set it if the synthetic DB can't be loaded or
-       the URI is malformed.
-
-       * rc-world-system.c (rc_world_system_assemble): Take a GError
-       argument and set it if the system DB can't be loaded.
-
-2003-09-09  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-set.[ch]: Kill off this very, very old and
-       confusingly irrelevant code.
-
-       * rc-util.c (rc_gunzip_memory, rc_bunzip2_memory): Don't append a
-       nul byte to the end of decompressed data.
-       (rc_parse_xml_from_buffer): Call xmlParseMemory() on the whole
-       block of data, not len - 1.
-
-       * rc-xml.c (rc_package_sax_context_done): Don't tack on a nul byte
-       at the end of the block of data, just call xmlParseChunk() with
-       NULL data and a length of 0 to end the parsing.  Fixes #48299.
-
-2003-09-09  Frank Belew <frb@ximian.com>
-
-       * rc-util.c: include stdio.h for older bz2 headers
-
-2003-09-05  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-system.c (rc_world_system_init): Connect to the
-       packman's "database_changed" signal so we can detect when the
-       package database changes from underneath us and reload the system
-       packages.  Also hold a ref to the packman and release it in
-       finalize.
-
-2003-09-04  Joe Shaw  <joe@ximian.com>
-
-       * rc-pending.c (rc_pending_complete_handler): The pending debug
-       messages are getting chatty, so make aborted and failed output at
-       level WARNING and everything else up to INFO.
-
-       * rc-world-multi.c (pending_update_cb): Only call
-       rc_pending_update() if the pending is active.  Fixes some
-       g_warnings.
-       (pending_complete_cb): Ditto, for rc_pending_finished().
-       (rc_world_multi_refresh_fn): Reorganize this to reduce an
-       indentation level in the more common (and much longer) case.
-
-2003-08-28  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_refresh_fn): Begin the pending
-       after we create it instead of later, since we could hit the
-       main loop and get failed assertions.
-
-2003-08-28  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_mount_service): See if we have
-       mounted another service with the same id.
-
-2003-08-28  Tambet Ingo  <tambet@ximian.com>
-
-       * rc-world-multi.c (rc_world_multi_lookup_service_by_id):
-       Helper function to get RCWorldService by server_id.
-
-2003-08-27  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-synthetic.c (rc_world_synthetic_transact): Make a copy
-       of the package coming in and assign its channel to the synthetic
-       channel.  Unref it after we've added it to the world.
-
-2003-08-27  Joe Shaw  <joe@ximian.com>
-
-       * rc-pending.c (rc_pending_class_init): Fix a cut-and-paste error
-       that was pointing the message signal at the complete signal's
-       class structure offset.
-
-       * rc-world-synthetic.c (rc_world_synthetic_assemble):
-       Conditionally prepend the forward slash.
-
-       * rc-rollback.c: Use rc_debug() instead of g_warning() throughout.
-       (dump_file_changes, get_action_from_xml_node): Remove some
-       debugging output.
-
-       * rc-xml.c (parser_package_end, rc_xml_node_to_package,
-       rc_package_to_xml_node): Change "is_packageset" to "package_set"
-       to match server implementation and to more closely match the
-       structure definition.
-
-2003-08-26  Joe Shaw  <joe@ximian.com>
-
-       * rc-package.c: Remove the "hold" bit, it wasn't being used for
-       anything, and add a "package_set" bit, which tells us if we're
-       dealing with a package set or not.  (Just checking the children
-       isn't sufficient, since we could have an empty package set)
-       (rc_package_is_package_set): Update this to just check the bit,
-       instead of the children.
-
-       * rc-world.c (rc_world_package_is_locked): Remove a reference to
-       the hold bit.
-
-       * rc-xml.c (parser_package_end, rc_xml_node_to_package): Set the
-       package set bit when "is_packageset" is set in the XML.
-       (rc_package_to_xml_node): Serialize the package set bit.
-
-2003-08-26  Joe Shaw  <joe@ximian.com>
-
-       * rc-rollback.c (rc_rollback_info_new): Unref the list of packages
-       after the query.  Fixes a leak.
-
-2003-08-25  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman.c (rc_packman_transact): Don't do rollback if the
-       NO_ACT flag is set.
-
-2003-08-25  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman-private.h: Remove the repackage_dir field.
-
-       * rc-packman.c (rc_packman_finalize, rc_packman_init): Don't deal
-       with the repackage_dir field.
-       (rc_packman_set_repackage_dir, rc_packman_get_repackage_dir):
-       Delete these.
-
-       * rc-rpmman.c: Don't do any repackaging stuff anymore, we don't
-       need it.
-       (rc_rpmman_init): Always set the rollback capability.
-
-       * rc-util.c (rc_compress_memory): Remove this.  Use
-       rc_gzip_memory() or rc_bzip2_memory() directly.
-
-       * rc-world-synthetic.c (rc_world_synthetic_transact): Obey the
-       NO_ACT flag.
-
-       * rc-world.c (rc_world_guess_package_channel): We need to check
-       against the actual package, not the list of matching packages.
-
-2003-08-22  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_guess_package_channel): Skip over system
-       and hidden channels, reimplement.
-
-2003-08-21  Joe Shaw  <joe@ximian.com>
-
-       * rc-extract-channels.c (rc_extract_channels_from_helix_buffer):
-       g_strfreev() the distro target vector, not g_free().
-
-       * rc-world-multi.c (rc_world_multi_cut_over_to_new_subworlds):
-       Unref the subworld after it's been added to the multi world, this
-       fixes a HUUUUUUUUUGE memleak.
-       (refresh_info_free): Conditionally unref the multi world's
-       pending.
-       (rc_world_multi_refresh_fn): Fix the case where none of the
-       subworld's have a pending to return.
-
-       * rc-world-store.c (rc_world_store_finalize): Clear our locks.
-
-       * rc-world-system.c (rc_world_system_finalize): Added.  Unref the
-       system channel.
-
-       * rc-xml.c (sax_start_element): Free the text buffer whenever we
-       enter a tag, because we don't care about (or want) the old data.
-
-2003-08-20  Joe Shaw  <joe@ximian.com>
-
-       * Makefile.am: Fix a lot of srcdir/builddir issues.
-
-       * rc-rpmman.c: Add support for RPM 4.2.1
-
-2003-08-19  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c (rc_distro_parse_xml): Make the size a required
-       parameter, and decompress the data on the fly.
-
-       * rc-world.c (rc_set_world, rc_get_world): Be less strict about
-       having a global world set.
-
-       * rc-extract-packages.c (rc_extract_packages_from_directory): Call
-       g_dir_close() when we're finished.
-
-       * rc-world-local-dir.c (rc_world_local_dir_assemble_fn): Allow the
-       name and alias of the channel to be passed in as a query string to
-       the URI.
-       (rc_world_local_dir_populate): Freeze/thaw the local dir.
-       (rc_world_local_dir_sync_fn): Check to see if we're frozen before
-       repopulating.  This fixes a nasty infinite recursion between
-       populate and sync (since adding a package to a store causes a sync);
-
-2003-08-18  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-multi.c: Move the service mounts here from being
-       global.  Fixes a big leak.
-
-       * rc-world-service.c (rc_world_service_dup): Dup the service's
-       attributes.  Nuke the global mount stuff.
-
-       * rc-world-system.c (rc_world_system_assemble): Load the system
-       packages here.
-       (rc_world_system_init): Not here.  Fixes the double loading during
-       a refresh.
-
-2003-08-16  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.c (rc_channel_set_hidden): Added.
-
-       * rc-world-synthetic.c (rc_world_synthetic_init): Set the hidden
-       flag on the synthetic package channel.
-
-       * rc-world-system.c (rc_world_system_init): Ditto here for the
-       system package channel.
-
-       * rc-world.c (rc_world_remove_lock_impl): Fix a cut-and-paste bug
-       that was causing locks to be duplicated, not removed.
-
-2003-08-16  Joe Shaw  <joe@ximian.com>
-
-       * Land libredcarpet-multiserver-branch onto the trunk.  Adds
-       multiple worlds, which makes the implementation of package sets
-       and undumped worlds much cleaner and allows us to have multiple
-       servers.
-
-2003-06-27  Jose Mercado    <jose@ximian.com>
-
-       * distributions.xml: SLD's version is "1" not "1.0".
-
-2003-06-17  Jon Trowbridge  <jon@trowbridge.org>
-
-       * rc-resolver-context.c (rc_resolver_context_get_status): When we
-       check whether or not we can use the cached status, it isn't
-       sufficient to just compare the package specs: the last checked
-       status might be the in-channel package (for example), while the
-       current check might be for the system version of the package.  To
-       fix this, we compare the pointers as well as the specs.
-
-2003-06-15  Jon Trowbridge  <jon@trowbridge.org>
-
-       * rc-world.c: Use the global packman instead of our lame
-       virtualized version comparison function.
-
-       * rc-channel.h: For some reason, a bunch of the rc_channel
-       functions tooks const RCChannel pointers as args.  This was
-       a good thing to do in theory, but since we make no effort to
-       be const-correct anywhere else, I've removed the consts.
-
-       * rc-channel.c: Ditto.
-
-2003-06-12  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Change "SuSE Linux Enterprise Client" to
-       "SuSE Linux Desktop" and change the target.  Again.
-
-2003-06-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-util.c (rc_parse_xml_from_file): Only unmap the buffer if we
-       successfully mapped it.
-
-2003-06-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman.c (query_all_read_line_cb): Fix some undefined C
-       pointer magic.  Fixes #44114.
-
-2003-06-04  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-import.c (add_packages_from_hash_cb): Set the
-       package_url in the RCPackageUpdate to be a file URL pointed at the
-       file on disk.
-
-2003-06-03  Joe Shaw  <joe@ximian.com>
-
-       * rc-package.h: Add an "install_only" flag for kernel packages
-       which we want to do an RPM install (not upgrade) on.
-
-       * rc-rpmman.c (transaction_add_install_packages): Check the
-       install_only bit and set the bit on the corresponding RPM call.
-
-       * rc-xml.c (parser_package_end, rc_xml_node_to_package)): Check
-       for the presence of the install_only tag.
-       (rc_package_to_xml_node): Write out the install_only tag if the
-       bit is set.
-
-2003-05-30  Joe Shaw  <joe@ximian.com>
-
-       * rc-rollback.c (add_tracked_package): Make sure we save the
-       package epochs if they're present.
-       (package_match_cb): Fix up some broken matching... we care about
-       name matches only at the package level, not total dep relations.
-       (get_action_from_xml_node): Read the epoch from the XML file and
-       pass it into rc_package_dep_new().
-
-2003-05-29  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): Add RPMPROB_FILTER_REPLACEPKG
-       to the problem filter.  We'll need to be able to replace currently
-       installed packages with same version for rollback, and I can't
-       think of a particularly good reason for it to be off otherwise.
-
-2003-05-28  Joe Shaw  <joe@ximian.com>
-
-       * rc-rollback.c (file_changes_to_xml): We only want to copy the
-       file if it's a regular file.
-       (rc_rollback_restore_files): We only want to copy the file back if
-       it was a regular file (but we still want to chown and chmod it
-       regardless).
-
-       * rc-rollback.h: Add a previously missing prototype for
-       rc_rollback_restore_files().
-
-       * rc-util.c (rc_cp): Correctly handle zero-byte files.
-
-2003-05-27  Joe Shaw  <joe@ximian.com>
-
-       * rc-rollback.c (strip_whitespace_node_recursive): Added, removes
-       text nodes so that xmlSaveFormat() always saves a nicely-formatted
-       XML file (since whitespace is not significant in this file).
-       (rc_rollback_info_save): Call strip_whitespace_node_recursive() on
-       the root node.
-       (package_match_cb): Check to make sure the package matches the
-       RCPackageDep.
-       (get_file_changes): Skip over comments, text regions and any
-       non-"file" nodes.
-       (get_action_from_xml_node): Call rc_world_foreach_package()
-       instead of rc_world_foreach_package_by_name() because we don't
-       want any filtering of channel vs. installed packages to happen.
-       (rc_rollback_restore_files): Correctly handle files that have been
-       removed.
-
-       * xml-util.c (xml_get_node): Return NULL if nothing matches.
-
-2003-05-21  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Update the detection and arch for SLEC
-
-2003-05-15  Jose Mercado  <jose@ximian.com>
-
-       * distributions.xml: Added rhel-21es-i386 and rhel-21ws-i386.
-
-2003-05-12  Joe Shaw  <joe@ximian.com>
-
-       * libredcarpet.h: Add rc-rollback.h.
-
-       * rc-packman.h: Nuke the RC_PACKMAN_CAP_REPACKAGING define.
-
-2003-05-12  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-import.c (rc_world_add_channel_from_directory): Instead
-       of setting the channel's subscription flag (which no longer
-       exists) directly, set it in the world.
-
-       * rc-world.c: Added a subscriptions hash table to the RCWorld
-       struct.
-       (rc_world_set_subscription): Added.  Subscription info is now
-       stored in the world.
-       (rc_world_is_subscribed): Ditto.
-       (rc_world_free): Clean up our subscriptions hash.
-       (rc_world_new): Allocate our subscriptions hash.
-
-       * rc-channel.c (rc_channel_subscribed): Query the channel's world
-       to get the subscription status.  We do this since the channel
-       struct no longer carries that piece of state around.
-       (rc_channel_set_subscription): Change the channel's subscription
-       status in it's world.
-
-       * rc-channel-private.h: Removed the subscribed flag from the
-       channel struct.  From here on out, channel structs should be
-       stateless (well, except for their initial state of course) and
-       immutable.
-
-       * rc-distro.c (rc_distro_parse_xml): We don't need to try to parse
-       the buffer as both compressed and uncompressed, because if the
-       distro file is compressed it will be automagically uncompressed
-       when we map it.
-
-       * rc-util.c: I've rearranged some things in the file in an attempt
-       to group similar functions.
-       (rc_memory_looks_gzipped): Added.  Checks if a block of memory
-       begins with the gzip magic numbers.
-       (rc_buffer_map_file): If we map a file that appears to be
-       compressed, magically uncompress it.
-       (rc_buffer_unmap_file): If we are 'unmapping' a file that was
-       actually compressed, we don't actually unmap the memory; we gfree
-       it instead.
-       (rc_parse_xml_from_buffer): A wrapper around xmlParseMemory that
-       transparently handles compressed buffers.  This is a
-       slightly-nicer replacement for rc_uncompress_xml, which has been
-       removed.
-       (rc_parse_xml_from_file): Like rc_parse_xml_from_file, this is a
-       convenience function that transparently uncompresses a gzipped
-       file before applying the xml parser.
-
-2003-05-09  Jon Trowbridge  <trow@ximian.com>
-
-        * rc-resolver-info.c (rc_resolver_info_missing_req_new):
-        Constructor for a new type of info message, corresponding to a
-        report of a misisng requirement.
-        (rc_resolver_info_copy): Copy the missing req.
-        (rc_resolver_info_free): Free the missing req.
-        (rc_resolver_info_to_string): Stringify our missing req type.
-
-2003-05-08  Joe Shaw  <joe@ximian.com
-
-       Checkpoint the rollback code.
-
-       * Makefile.am: Add rc-rollback.[ch]
-
-       * rc-packman-private.h: s/transaction_tracing/rollback_enabled
-
-       * rc-packman.c: Move all the rollback stuff into rc-rollback.[ch].
-
-       * rc-rollback.c: Move the rollback code in here.  Tracks changes
-       to files on the filesystem, saves backups, and restores them.
-
-       * rc-util.c (rc_hash_values_to_list): Added.  Utility function to
-       convert the values of a GHashTable to a GSList.
-       (rc_hash_keys_to_list): Added.  Does keys.
-
-       * xml-util.c (xml_get_node): Added.  Gets an xmlNode * for a given
-       name.
-
-2003-08-08  Joe Shaw  <joe@ximian.com>
-
-       * rc-dep-or.c (rc_dep_or_dep_slist_to_string): Get rid of the weak
-       relation check.
-
-       * rc-package-dep.[ch]: Remove RC_RELATION_WEAK and cousins.
-       They're not used anywhere in libredcarpet anymore.
-
-2003-05-08  Joe Shaw  <joe@ximian.com>
-
-       * rc-arch.c: The _to_string() functiosn do a first-match, and we
-       want to prefer "noarch" to "all".
-
-2003-05-05  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-file.c (rc_package_file_free,
-       rc_package_file_slist_free): Added.
-
-       * rc-packman-private.h: Change track_changes to
-       transaction_tracking.
-
-       * rc-packman.c: Do the tracking in /var/lib/rcd/tracking.  Track
-       all transactions, not just changes to the individual files during
-       upgrades and removals.  Update the code to correctly handle errors
-       that occur doing the transaction itself.  And other minor fixes.
-
-2003-05-02  Joe Shaw  <joe@ximian.com>
-       
-       * rc-world.c (rc_world_add_package): Fix backwards arch score
-       comparison.  Fixes #42236.
-
-2003-05-02  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): For RPM < 4.1, check for -1
-       from rpmRunTransactions() which means that the transaction failed
-       but we don't have a problem set to show for it.
-
-2003-05-02  Joe Shaw  <joe@ximian.com>
-
-       * rc-verification.c (rc_verification_type_to_string): I got sick
-       of doing this all by hand everywhere, so I added this function.
-
-2003-05-01  Ian Peters  <itp@ximian.com>
-
-       * rc-util.c, rc-util.h: fix to use the correct mkdtemp, optimize
-       some behavior in our implementation of mkdtemp
-
-2003-04-30  Joe Shaw  <joe@ximian.com>
-
-       * make_stub.sh: Make this so it doesn't clobber files when run
-       with -j.
-
-       * rc-packman-private.h: Remove the "busy" flag, add a
-       "track_changes" flag.
-
-       * rc-packman.c (rc_packman_track_changes): Added.  Iterates
-       through the list of updates and removals and calls
-       rc_packman_track_change() on each.
-       (rc_packman_track_change): Pretty hairy function which iterates
-       the files in a package and checks to see if any have changed.  It
-       stores change info in an xmlNode and copies the modified file to a
-       safe location.
-       (rc_packman_transact): Remove the busy flag stuff, it wasn't
-       really being used.  Track file changes before running the
-       transaction.
-       (rc_packman_set_track_changes): Flag which turns on/off change
-       tracking.
-
-       * rc-util.c (rc_cp): Added.  Copies a file using mmap().
-
-2003-04-30  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Add support for Mandrake 9.1
-       (mandrake-91-i586) and SuSE 8.2 (suse-82-i586; yes, i586).  Fixes
-       #41870.
-
-       * rc-rpmman.c (rc_rpmman_init): Try RPM versions newest-first, so
-       we don't pull in rpm 4.0.4 from librpm404 on machines upgraded
-       from rh8.0 to 9.  Fixes #41838.
-
-2003-04-28  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-file.h: Nuke the "flags" and replace it with a
-       "ghost" boolean.
-
-       * rc-rpmman.c (HeaderInfo): Add an FD_t element for reading
-       headers out of package files.
-       (rc_rpmman_header_info_free): Free the file descriptor if it's
-       set.
-       (rc_rpmman_read_package_file): Added.   Reads a filename into a
-       HeaderInfo struct, and abstracts out a lot of duplicated code.
-       (transaction_add_install_packages): Use
-       rc_rpmman_read_package_file().
-       (rc_rpmman_query_file): Ditto.
-       (rc_rpmman_package_is_repackaged): Ditto.
-       (rc_rpmman_file_list): Add support for reading the file list out
-       of a package file on disk.  Flesh this out so we get the file
-       sizes, md5sums, UIDs and GIDs, the file modes and mtimes.
-       (load_fake_syms, load_rpm_syms): Add unameToUid() and gnameToGid()
-       to symbols we load from RPM.
-
-2003-04-28  Ian Peters  <itp@ximian.com>
-
-       * rc-world.c (struct _RCWorld): add a database_changed_id field to
-       keep the id of our handler
-       (rc_world_new): ref the RCPackman, and keep the handler id around
-       in database_changed_id
-       (rc_world_free): disconnect our handler, and unref our RCPackman
-
-2003-04-25  Joe Shaw  <joe@ximian.com>
-
-       * Makefile.am: Add rc-package-file.[ch].
-
-       * rc-package-file.[ch]: Added.  Represents a file in an RCPackage.
-       
-       * rc-packman.c: Add rc_packman_file_list(), which lists the files
-       in a package.  Added rc_packman_real_file_list virtual method.
-
-       * rc-debman.c (rc_debman_file_list): Added.  g_spawns dpkg -L and
-       attaches an RCLineBuf to it to get the list of files in a package.
-
-       * rc-rpmman.c (rc_rpmman_find_system_headers): Took a bunch of
-       similar code from a few functions within rc-rpmman.c and made this
-       function.  Given a package name (with optional version and
-       release) it will return a list of headers from the system database
-       which match it.
-       (transaction_add_remove_packages_v4): Use
-       rc_rpmman_find_system_headers()
-       (transaction_add_remove_packages_v3): Ditto.
-       (rc_rpmman_query_v4, rc_rpmman_query_v3): Removed, no longer
-       needed.
-       (rc_rpmman_query): We don't need to call version-specific query
-       functions anymore, this is largely just a wrapper around
-       rc_rpmman_find_system_headers() (which has its own
-       version-specific functions).
-       (rc_rpmman_file_list): Added.  Returns a list of files within a
-       package.
-
-2003-04-23  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_verify):
-       Create require items for each package set's children.  This
-       allows verify to re-assemble broken package sets.
-
-       * rc-package-dep.c (rc_package_dep_spew_cache): Added; this is a
-       debugging function meant to help find memory leaks.
-
-       * rc-world-dump.c (rc_world_undump): Fixed memory leak.
-
-       * rc-channel.c (rc_channel_unref): Fixed memory leak.
-
-       * rc-queue-item.c (uninstall_item_process): Fixed memory leak.
-
-2003-04-22  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (rc_queue_item_new_install): When comparing
-       the to-be-installed version with an already-installed version,
-       actually use rc_package_spec_equal instead of comparing the
-       pointers.
-
-2003-04-21  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (install_item_process): Do the right thing if we
-       are asked to 'install' and unlinked package.  Removed some dead
-       code.
-       (uninstall_item_process): If this is an unlink, try to determine
-       if the package is required by other installed software.  When
-       uninstalling a package, uninstall its parents.  Do a better job
-       unlinking a package set's children.
-       (uninstall_item_destroy): Unref dep_leading_to_uninstall.
-       (uninstall_item_copy): Ref dep_leading_to_uninstall.
-       (rc_queue_item_uninstall_set_dep): Ref dep_leading_to_uninstall.
-       (rc_queue_item_uninstall_set_unlink): When flagging an uninstall
-       as an unlink, reduce the priority.
-
-       * rc-resolver-context.c: Added handling for a new state,
-       RC_PACKAGE_STATUS_TO_BE_UNINSTALLED_DUE_TO_UNLINK.
-       (rc_package_status_to_string): Handle _UNINSTALLED_DUE_TO_UNLINK.
-       (rc_resolver_context_set_status): Ditto.
-       (rc_resolver_context_install_package): Ditto.
-       (rc_resolver_context_uninstall_package): Ditto.
-       (requirement_possible_cb): Ditto.
-       (rc_resolver_context_package_is_possible): Check that
-       children can be installed when trying to pre-determine if it
-       is possible to install a package.
-
-       * rc-resolver-info.c: Added a new 'child of' info type, which we
-       used when we pull in package sets.  This is analogous to the
-       'depends on' type for when we pull in requirements.
-
-       * rc-world.c: Add a 'children_by_name' GHashTable to the RCWorld
-       struct.
-       (rc_world_new): Allocate children_by_name.
-       (rc_world_free): Free children_by_name.
-       (rc_world_freeze): Freeze children_by_name.
-       (rc_world_thaw): Thaw children_by_name.
-       (rc_world_add_package): Store the package's child info in
-       children_by_name.
-       (rc_world_remove_package): Remove from children_by_name.
-       (rc_world_remove_packages): Remove from children_by_name.
-       (rc_world_foreach_parent_package): Added.  Find all parents of a
-       given dep.
-       (rc_world_spew): Spew child info.
-
-       * rc-xml.c (rc_xml_strip): Do the right thing with NULL strings.
-
-2003-04-18  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (rc_world_get_system_packages): Load the installed
-       synthetic packages along with the system packages.
-       (rc_world_set_synthetic_package_db): Added.  Sets the filename of
-       the synthetic package database.
-       (rc_world_load_synthetic_packages): Load the packages from the
-       synthetic package database into the world.
-       (rc_world_save_synthetic_packages): Write the installed synthetic
-       packages out to the synthetic package database.
-       (rc_world_get_single_provider): A convenience function -- find the
-       package that provides a dep, as long as there is exactly one
-       match.
-       (rc_world_transact): Added.  This is a wrapper around
-       rc_packman_transact that filters out and handles the installation
-       and removal of synthetic packages.
-
-       * rc-world-import.c (rc_world_add_packages_from_buffer): Handle
-       the case of adding packages to the system.
-       (refresh_channel_from_dir): If we find a file with the extension
-       '.synpkg' in the mounted directory, try to read package XML from
-       it.  If the file contains package XML describing a synthetic
-       package, create an RCPackage and add it to the channel.
-
-       * rc-queue-item.c (install_item_process): Treat child deps as
-       requires when installing.
-       (uninstall_item_process): Unlink any children when uninstalling.
-       (rc_queue_item_uninstall_set_unlink): Added.
-
-       * rc-xml.c: We are calling the subitems in a package set
-       the 'children'... I had been inconsistent on this before.
-       
-       * rc-package.c (rc_package_copy): Added.
-       (rc_package_is_package_set): We aren't a package set if the child
-       array exists but has length 0.
-       (rc_package_is_synthetic): Added.  Currently the only synthetic
-       packages we have are package sets.
-
-       * rc-package-update.c (rc_package_update_copy): This function
-       was mentioned in the header, but wasn't defined.  Go figure.
-       (rc_package_update_slist_copy): Ditto.
-
-2003-04-17  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-debman.c (query_all_read_line_cb): Initialize the provides
-       deps as RC_CHANNEL_ANY.
-       (rc_debman_query_file): Initialize the package's self-provide
-       as RC_CHANNEL_ANY.
-
-       * Lots of small changes throughout lots of files, implementing two
-         changes:
-         (1) An RCPackageDep can now specify a channel or a channel
-             wildcard.
-         (2) Channel IDs are now arbitrary strings, not unsigned
-             integers.
-
-2003-04-16  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package-set.h: Removed.  None of this code was being used by
-       anything
-
-       * rc-package-set.c: Ditto.
-
-       * rc-channel.c: Removed all references to rc-package-set.[ch] and
-       its contents.
-
-       * rc-channel.h: Ditto.
-
-       * rc-channel-private.h: Ditto.
-
-       * libredcarpet.h: Ditto.
-
-2003-04-15  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c (rc_package_sax_context_parse_chunk): Check to see if
-       the last character is a nul character and terminate XML processing
-       there.  This'll fix the harmless but annoying "extra content"
-       warnings when parsing channel data.
-       (rc_package_update_to_xml_node): Write out the temporary string,
-       not the integer-casted-to-a-string.
-
-2003-04-08  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c (rc_distro_parse_xml): Check to see if
-       RC_DISTRIBUTIONS_FILE is set when we're asked for our internal
-       distributions.xml representation and use it if so.
-
-2003-04-08  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-update.c (rc_package_update_copy): Nuke this.
-       (rc_package_update_slist_copy): Ditto.
-       (rc_package_update_free): Free the license string.
-
-       * rc-rpmman.h: Add a define for "fnpyKey" if our RPM is older than
-       4.0.4.
-
-       * rc-world.c (rc_world_migrate_channel): Added.  Migrates a
-       channel from one RCWorld to another.
-
-       * rc-xml.c (parser_update_end): Don't free/realloc the md5sum for
-       the package... must have been missed before.  Read the "license"
-       tag out of the packageinfo.xml file and feed it into the update's
-       license field.
-       (rc_xml_node_to_package_update): Ditto here, for the DOM parser.
-       (rc_package_update_to_xml_node): Serialize the HID and the license
-       string to XML for dumps and pkg_to_xml and the like.
-
-2003-04-08  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman-types.h: add a missing field to RCrpmProblemOlder
-
-       * rc-rpmman.h: rpmdbMatchIterator needs to be
-       rc_rpmdbMatchIterator
-
-2003-04-04  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.h: Missed a place where rpmdbMatchIterator should have
-       been changed to rc_rpmdbMatchIterator.
-
-2003-04-04  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Add support for SLEC 1 and Red Hat 9, from
-       Peter Teichman.
-
-2003-04-04  Ian Peters  <itp@ximian.com>
-
-       * rc-util.c (rc_rmdir): lstat not stat.  Also fixed Jose's
-       ChangeLog entry 3 below this.
-
-2003-04-03  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (rc_world_add_package): If a package is installed,
-       don't ever filter it out due to an incompatible arch.
-
-2003-04-03  Ian Peters  <itp@ximian.com>
-
-       * rc-util.c (rc_rmdir): remove symlinks, too, if we can
-
-2003-03-27  Jose Mercado <jose@ximian.com>
-       
-       * distributions.xml: Change detect string for SuSE 8.1 to
-       something more unique.
-
-2003-03-27  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_foreach_system_upgrade): Add a
-       subscribed_only flag so we can iterate across upgrades outside of
-       only subscribed channels.
-
-2003-03-25  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Change "Linux Mandrake" to "Mandrake Linux"
-       starting with version 8.1.
-
-2003-03-20  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman-types.h: Include the structure definitions for
-       rpmProblem in its three different versions, 3.0.x/4.0,
-       4.0.2-4.0.4, and 4.1/4.2.
-
-       * rc-rpmman.c (render_problems): Do all the type magic at runtime
-       based on the types we added in rc-rpmman-types.h.  Coerce the data
-       into the type we want and pass it off to the applicably typed
-       rpmProblemString function pointer.
-       (rc_rpmman_transact): Remove a chunk of code which basically
-       duplicated the render_problems() functionality poorly with a call
-       to the real thing.
-       (load_fake_syms, load_rpm_syms): Add an rpmProblemStringOlder()
-       method.
-
-       * rc-rpmman.h: Remove the conditional defines of
-       rpmProblemString() and rpmProblemStringOld() and add
-       rpmProblemStringOlder().
-
-2003-03-18  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Make the indenting of the new distros
-       consistent with the rest of the file.
-
-       * rc-util.[ch]: Remove a bunch of dead, unused code related to
-       various hash tables of lists or whatever.  Add rc_str_case_hash()
-       and rc_str_case_equal() for case-insensitive hash tables.
-
-2003-03-17  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): account for packages that are
-       obsoleted when computing the total number of transaction steps
-
-2003-03-13  Jose Mercado    <jose@ximian.com>
-
-       * distributions.xml: Added SLES8 and rhel 2.1AS support.
-
-2003-03-13  Joe Shaw  <joe@ximian.com>
-
-       * RPM 4.1/4.2 support.
-
-       * Makefile.am: Generate stubs for RPM 4.1 and 4.2's dynamic
-       libraries.
-
-       * rc-rpmman-types.h: Add a bunch of compatibility types so we can
-       build on any version of RPM.
-
-       * rc-rpmman.c: Define LATEST_SUPPORTED_RPM_VERSION and have
-       libredcarpet neither build nor run against a version newer than
-       this, both for safety and so people don't complain when it doesn't
-       build/run.  Add some compatibility defines and types for various
-       API and type changes.  ABI for rpmReadSignature() changed, so read
-       it into one of two function pointers of different signatures
-       depending on version.  Create an rpmts when opening the database,
-       since most things operate on that instead of a db now.  Add a ton
-       of #ifdefs and in-code version checks for the various API changes,
-       and so forth.  Boring stuff, really, read the patch to get the
-       gist of it.
-
-2003-03-13  Joe Shaw  <joe@ximian.com>
-       
-       * rc-debman.c, rc-verification.c: Change deprecated use of
-       __FUNCTION__ to G_GNUC_PRETTY_FUNCTION.
-
-2003-03-13  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver.c (rc_resolver_set_timeout): Added.  Sets the
-       maximum no. of seconds to be spent on any resolution.
-       (rc_resolver_resolve_dependencies): If a timeout has been set and
-       a resolution attempt has taken too long, set the 'timed_out' flag
-       and bail out.
-
-2003-03-12  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_read_header): Fix a cut-and-paste-o when
-       the summary is UTF-8 valid.
-
-2003-03-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_read_header): Check to make sure that the
-       summary and description are valid UTF-8 and do a conversion of
-       ISO-8859-1 -> UTF-8 if not.
-
-2003-03-04  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_depends_fill): Don't filter file
-       dependencies if the RC_PLEASE_DONT_FILTER_FILE_DEPS env variable
-       is set.
-
-2003-02-21  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_touch_channel_sequence_number): Fix a
-       cut-and-paste-o where we were signaling that the subscriptions
-       seqno had changed, not the channel seqno.
-
-2003-02-07  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman.c (query_all_read_line_cb): Set the arch to NOARCH by
-       default, read the "architecture" setting out of the
-       /var/lib/dpkg/status file if it's there.
-
-2003-02-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman-types.h, rc-rpmman.h: Change RPM includes to remove
-       the directory; our CFLAGS will be set to the actual include
-       directory for RPM.
-
-2003-02-04  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (rc_xml_node_to_package_dep_internal): Free some
-       leaked strings.
-
-       * rc-package-match.c (rc_package_match_set_dep): Ref the new dep
-       before unreffing the old dep, just in case we are in some weird
-       situation where they are equal.  It never hurts to be paranoid.
-       (rc_package_match_from_xml_node): Unref the dep we created from
-       the xml node after we call rc_package_match_set_dep.  This fixes a
-       small memory leak.
-
-       * rc-world.c (rc_world_get_system_packages): Unref the contents of
-       system_packages before freeing the slist.  If our system query
-       fails, free the slist.  (Probably fixes most of #37576)
-
-2003-01-24  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (require_item_process): If there are no
-       installable providers, give a slightly more detailed error
-       message.
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): Flag the
-       temporary 'Local Packages' channel as silent.
-
-       * rc-world.c (rc_world_add_channel_with_priorities): Added a
-       'is_silent' argument, which (duh) causes the new channel to be
-       flagged as silent.
-       (rc_world_add_channel): Rather than add a new arg to this
-       function, just always make the created channel non-silent.
-       (rc_world_remove_channel): Don't touch the sequence numbers if the
-       channel is silent.
-       (rc_world_add_package): Ditto.
-       (rc_world_remove_package): Ditto.
-       (rc_world_remove_packages): Ditto.
-
-       * rc-channel.c (rc_channel_get_silent): Added.  Test if a channel
-       is flagged as silent.
-       (rc_channel_set_subscription): If a channel is marked as 'silent',
-       don't change the world sequence number if its subscription status
-       changes.
-
-       * rc-channel-private.h: Added "silent" flag to the
-       RCChannel struct.
-
-2003-01-22  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-arch.c: Make "all" (which is what debian uses) a synonym for
-       "noarch".
-
-       * rc-world-import.c (rc_world_add_packages_from_xml): Removed
-       GHashTable *packages, which is no longer being used for anything.
-       (fill_debian_package): Set the architecture properly when
-       loading debian package files.
-
-2003-01-21  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (depends_fill_helper): We were being way too
-       aggressive with some memory management but it never seems to bite
-       us with RPM 4.  RPM 3, however, is a different matter.  Revert to
-       the previous behaviour, but use my own free_v() function instead
-       of g_strfreev() to fix the potential memory leak.
-
-2003-01-21  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (parser_package_end): Removed all of the arch-related
-       checks.  That all happens inside of rc_world_add_packages_from_xml
-       now.
-       (rc_package_sax_context_done): Since arch checks are being done by
-       the RCWorld, this is all much simpler.
-
-       * rc-world-import.c (rc_world_add_packages_from_xml): Removed all
-       arch-related checks.  That all happens inside of
-       rc_world_add_package now.
-
-       * rc-world.c (rc_world_add_package): Do all arch checks when a
-       package is added to the world, taking version numbers into
-       account.  Now a higher version number trumps a superior arch
-       score.  This function returns a gboolean instead of void: if
-       the package actually gets added it returns TRUE.  If not
-       (for example, if the arch is bad), return FALSE.
-
-2003-01-08  Joe Shaw  <joe@ximian.com>
-
-       * Makefile.am: Remove rc-pretty-name.[ch]
-
-       * rc-package.c (rc_package_compare_pretty_name): Added. Compares
-       the packages' pretty names, falling back to the regular names.
-       (rc_package_slist_sort_by_pretty_name): Changed to use
-       rc_package_compare_pretty_name(), which gets it from the RCPackage
-       structure instead of looking it up in a hash from the old
-       prettypackages.xml file.
-
-       * rc-package.h: Reorder some stuff, add pretty_name.
-
-       * rc-xml.c (parser_package_end): Parse the "pretty_name" out of
-       the XML in the <package> section.
-
-2002-12-18  Joe Shaw  <joe@ximian.com>
-
-       * rc-verification.c (rc_verify_gpg): When the $HOME environment
-       variable isn't set, gnupg will have a fit when trying to create
-       the $HOME/.gnupg directory and bail out.  So we create a temporary
-       directory in /tmp and create a temporary environment setting that
-       as $HOME and pass it into our g_spawn function calls.  Clean up
-       after we're done.
-
-2002-12-16  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c: Get rid of <command> tags and replace them with
-       <os_name> and <os_release>
-
-       * distributions.xml: Replace <command> tags with <os_name> and
-       <os_release> tags.
-
-2002-12-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-resolver-info.c (rc_resolver_info_to_string): Change
-       "replaces" to "replaced by"
-
-2002-12-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c: Pass in the address to a gboolean as the third
-       parameter to rpmReadPackageHeader() which tells us if we're
-       dealing with a source package.  If we are, abort out since we
-       don't handle source packages right now.
-
-2002-12-05  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-subscriptions.c (clear_sub_cb): When resetting our
-       subscriptions, maintain the current subscription state for
-       transient channels. (Fixes #35148)
-
-2002-12-05  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_add_channel_with_priorities): Added.
-       Allows the channel creator to set priorities for dependency
-       resolution.
-
-2002-12-03  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Change Woody to supported.
-
-       * rc-arch.c (rc_arch_from_string): Handle NULL argument.
-
-       * rc-xml.c (rc_xml_strip): Added.  Returns NULL if g_strstrip()
-       returns an empty string.
-       (parser_package_end, parser_update_end): Use rc_xml_strip()
-       instead of g_strstrip().
-
-2002-12-02  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c: Added a #define for RPMTAG_REMOVETID
-
-2002-11-22  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (rc_package_update_to_xml_node): Make sure that
-       update->package_url isn't NULL or empty before writing it out in
-       the XML.  (Probably fixes bug #34499.)
-
-2002-11-22  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_package_is_repackaged): Added.  Opens up
-       the package file and looks for the header to indicate that it's a
-       repackaged RPM.
-       (split_rpm): Remove the hack that we used before to guess that it
-       was a repackaged RPM as it won't work in 4.1.
-
-2002-11-21  Joe Shaw  <joe@ximian.com>
-
-       * rc-package.c (rc_package_copy, rc_package_slist_copy): Removed.
-       Everything should just use rc_package_ref().
-
-       * rc-debman.c (package_list_append): Change the one instance of
-       rc_package_copy() in libredcarpet to rc_package_ref().
-
-2002-11-21  Joe Shaw  <joe@ximian.com>
-
-       * packer.pl: Use binmode so perl 5.8.0 doesn't read in the data
-       as UTF-8.  Patch from Michael Doppler.
-
-2002-11-18  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c (rc_package_to_xml_node): Write the description out to
-       the description field, not the summary.
-
-2002-11-14  Joe Shaw  <joe@ximian.com>
-
-       * rc-dep-or.c (rc_dep_string_to_or_dep_slist): Return NULL if
-       there isn't a trailing parenthesis.
-
-2002-11-14  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman.c (rc_debman_is_database_changed): Destroy our cache
-       of packages when the db changes out from underneath us.
-       (unlock_database, rc_debman_init): Make the timeouts 5 seconds,
-       like the RPM backend.
-
-       * rc-rpmman.c (open_database): Fix an occasional glib warning.
-
-2002-11-14  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-dep.c (rc_package_dep_verify_relation): Go back to
-       evaluating the version and release separately as that wasn't quite
-       right, instead use the capability as to whether we should always
-       evaluate the release or not.
-
-       * rc-packman.h: Rename RC_PACKMAN_CAP_VERSION_AND_RELEASE to
-       RC_PACKMAN_CAP_ALWAYS_VERIFY_RELEASE.
-
-       * rc-debman.c (rc_debman_init): Ditto.
-
-2002-11-14  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman.h: Add a huge comment block describing what each of
-       the capabilities does.  Remove the SELF_CONFLICT capability since
-       it wasn't being used and it's handled for all backends by the
-       resolver.  Renamed LEGACY_EPOCH_HANDLING to IGNORE_ABSENT_EPOCHS
-       because it makes more sense to me.  Add a new VERSION_AND_RELEASE
-       capability which does Debian's relation logic on version+release
-       as one.
-
-       * rc-debman.c (rc_debman_init): Set capabilities to
-       VERSION_AND_RELEASE.
-
-       * rc-rpmman.c (rc_rpmman_init):
-       s/LEGACY_EPOCH_HANDLING/IGNORE_ABSENT_EPOCHS.
-
-       * rc-package-dep.c (rc_package_dep_verify_relation): If the
-       VERSION_AND_RELEASE capability is set, compare version and release
-       at once instead of separately.  Also
-       s/LEGACY_EPOCH_HANDLING/IGNORE_ABSENT_EPOCHS.
-
-       * rc-queue-item.c (conflict_process_cb): Add a comment about how
-       we ignore when we conflict with ourself.  Mention that some of the
-       obsolete handling should probably be a packman capability
-       
-2002-11-14  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman-general.c (rc_debman_fill_depends): Don't muck around
-       with the dep if it's NULL.
-
-       * rc-debman.c (query_all_read_line_cb, rc_debman_query_file):
-       Initialize the package's obsoletes array.
-
-       * rc-package-dep.c (rc_package_dep_array_from_slist): Allow the
-       argument to be NULL, and short circuit in the case where the list
-       is valid but empty.
-
-       * rc-util.c (count_gzip_header, rc_uncompress_memory,
-       rc_compress_memory, rc_uncompress_xml): Make the buffers const.
-
-       * rc-world-import.c (rc_world_add_channel_from_buffer,
-       rc_world_add_packages_from_buffer, rc_world_parse_helix,
-       rc_world_parse_debian, rc_world_parse_redhat): Make the buffers
-       const.
-       (rc_world_parse_debian): Rewrote the debian Packages file parser
-       to (a) be cleaner and (b) deal with entries that span multiple
-       lines.  It's a little bit slower than the old one, by about .4
-       seconds, and there's plenty of room to speed it up.  Make it
-       initialize the obsoletes package dep array, and remove a lot of
-       redundant code.
-
-       * rc-xml.c (rc_package_sax_context_parse_chunk): Make the buffer
-       const.
-
-2002-11-11  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (close_database): do nothing if the database isn't
-       open
-       (open_database): set the db_watcher id to 0 when we
-       g_source_remove it
-       (rc_rpmman_finalize): remove the db_watcher timeout when we
-       finalize the object to avoid crashing, d'oh
-
-2002-11-05  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-import.c (refresh_channel_from_dir): If there are
-       multiple packages w/ the same name in the directory, filter out
-       all but the one with the highest version number.  This fixes
-       half of bug #33323.
-
-       * rc-queue-item.c (require_item_process): Set a meaningful branch
-       label.  This is helpful when debugging dependency problems.
-       (branch_item_destroy): Free the branch label.
-       (branch_item_to_string): Include the branch label in the
-       stringification.
-       (rc_queue_item_branch_set_label): Added.  Attaches a label to a
-       branch item.  This label is not user-visible, unless they are
-       looking at debugging output.
-       (install_item_process): Added log info to the uninstall items we
-       construct to handle removals due to conflicts with the installed
-       package.  (Fixes bug #33312)
-
-2002-11-01  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-import.c (rc_world_add_channel_from_directory):
-       Increase the priority of mounted channels.
-
-2002-10-31  Joe Shaw  <joe@ximian.com>
-
-       * distributions.xml: Add Mandrake 9 and SuSE 8.1 as supported
-       distros.  Change Red Hat 8 to supported.  Add Debian Woody as
-       presupported.
-
-2002-10-23  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_database_filename): Added.  Returns the
-       filename of the RPM database, based on rpmman->rpmroot, the
-       %{_dbpath} macro, and which version of RPM is being run (v3 or
-       v4).
-       (rc_rpmman_is_database_changed, open_database): Use new function.
-       (open_database): Look for the __db.0xx files in the right location,
-       as well.
-
-       * rc-rpmman.h: Add rpmGetPath().
-
-2002-10-24  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-dump.c (rc_world_dump_to_xml): Write the world's locks
-       out in the dump XML.
-       (rc_world_undump_from_xml): Read the locks from the dump XML.
-
-       * rc-package-match.c (rc_package_match_from_xml_node): We need to
-       extract the RCPackageDep from the xml node, not from the node's
-       child.
-
-2002-10-23  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-import.c (rc_world_add_packages_from_xml): When pulling
-       in packages, don't do any filtering by architecture on system
-       packages.  This lets us reproduce broken systems with multiple
-       installs when undumping.
-
-2002-10-18  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: only include rpm-stubs.h in the non-static case
-       (rc_rpmman_query_file): if we've opened the file but it's not a
-       valid RPM file, we still have to close it before we return.
-       (write_object): only compile in the non-static case
-
-2002-10-17  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package-match.c (rc_package_match_new): Initialize the
-       ->importance field to RC_IMPORTANCE_INVALID.
-       (rc_package_match_equal): Added.
-       (rc_package_match_test): Handle the case of packages whose channel
-       is NULL.
-
-       * rc-world.c (rc_world_add_lock): Append to the list of locks.
-       This is less annoying, since newly-added locks show up at the end
-       of the list.
-
-2002-10-11  Joe Shaw  <joe@ximian.com>
-
-       * rc-md5.c (rc_md5_digest, rc_md5_digest_from_string): Plug a leak.
-
-       * rc-md5.c (rc_md5_string): Renamed to rc_md5_digest().
-       (rc_md5_from_string, rc_md5_digest_from_string): Added.
-
-       * rc-verification.c (rc_verify_md5_string): Change to
-       rc_md5_digest().
-
-2002-10-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.h (RCRpmman): rpmDefineMacro() actually takes a
-       MacroContext *.  Fixes the build against 3.0.6.
-
-2002-10-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman.[ch]: Change the "perform" gboolean on
-       rc_packman_transact() to be a bitfield.  Create the
-       RC_TRANSACT_FLAG_NO_ACT and RC_TRANSACT_FLAG_REPACKAGE flags.  Add
-       the RC_PACKMAN_CAP_REPACKAGING capability.
-       (rc_packman_{set|get}_repackage_dir): Added.
-
-       * rc-debman.c (do_unpack, rc_debman_transact): update for the
-       above flags change.
-
-       * rc-package-spec.c (rc_package_spec_slist_find_name): Make the
-       name argument const.
-
-       * rc-rpmman.c (rc_rpmman_transact): Update for the flags change.
-       If we're on RPM 4.0.4 or greater and the REPACKAGE flag is set,
-       define an RPM macro with the repackage directory.  If we can read
-       the signature header in the RPM, proceed as normal.  If we get an
-       RPMRC_BADSIZE return value and we're on 4.0.4, we're probably
-       trying to install a repackaged RPM (which are technically
-       invalid).
-       (load_fake_syms, load_rpm_syms): Get rpmDefineMacro out of the rpm
-       library.
-       (rc_rpmman_init): If we're on RPM 4.0.4, add the REPACKAGING
-       capability.
-
-2002-10-10  Jon Trowbridge  <trow@ximian.com>
-
-       * Makefile.am: Added rc-package-match.c and rc-package-match.h to
-       the build.
-
-       * libredcarpet.h: Added rc-package-match.h.
-
-       * rc-world-import.c (rc_world_add_channel_from_directory): Added.
-       Allows the contents of a directory full of packages to be added to
-       the world as a custom channel.
-
-       * rc-world-subscriptions.c (to_xml_cb): Don't write out
-       subscription XML for transient channels.
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): Set the
-       channel id and base id to zero when we create our local packages
-       channel.  (They will now get replaced by valid unused ids by
-       rc_world_add_channel.)
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_install):
-       Flag the initial install items as explicitly requested.
-       (rc_resolver_queue_add_package_to_remove): Flag the initial remove
-       items as explicitly requested.
-
-       * rc-queue-item.c (install_item_process): If this install was
-       explicitly requested and is an upgrade, flag the uninstall half of
-       the operation as also being explicitly requested.
-       (rc_queue_item_install_set_explicitly_requested): Added.
-       (require_process_cb): Don't consider the provider if it is locked.
-       (require_item_process): Pass the world via the info struct.  (We
-       need it when checking if packages are locked.)
-       (uninstall_item_process): Fail if we are trying to uninstall a
-       locked package and it hasn't been explicitly requested.
-       (rc_queue_item_uninstall_set_explicitly_requested): Added.
-
-       * rc-world.c (rc_world_free): Free our package locks.
-       (rc_world_add_channel): If the channel_id or base_id is zero,
-       generate a valid, unused id.  Flag TYPE_UNKNOWN channels as
-       transient.
-       (rc_world_add_lock): Added.
-       (rc_world_remove_lock): Added.
-       (rc_world_clear_locks): Added.
-       (rc_world_foreach_lock): Added.
-       (rc_world_package_is_locked): Added.
-       (rc_world_add_package): Treat "recommends" as requires.  This is
-       what Debian policy says we should do.
-       (rc_world_foreach_package_by_match): Added.
-       (foreach_upgrade_cb): Don't show locked packages when iterating
-       available upgrades.
-       (get_best_upgrade_cb): Don't consider locked packages when looking
-       for the best upgrade.
-       (system_upgrade_cb): Skip locked packages when look for system
-       upgrades.
-
-       * rc-package-match.h:
-       * rc-package-match.c: Added.
-
-       * rc-channel.c (rc_channel_has_refresh_magic): Added.
-       (rc_channel_use_refresh_magic): Added.
-       (rc_channel_get_transient): Added.
-
-       * rc-channel-private.h: Added refresh_magic hook and transient
-       flag to RCChannel struct.
-
-2002-10-01  Joe Shaw  <joe@ximian.com>
-
-       * rc-util.c (rc_rmdir): If S_ISSOCK is defined, remove any sockets
-       in the directory as well.
-
-2002-09-27  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (split_rpm): Don't free the buffer we get back from
-       headerGetEntry() for the md5 signature.  It causes a double free
-       and a crash on SuSE.
-
-2002-09-23  Ian Peters  <itp@ximian.com>
-
-       * rc-arch.c (rc_arch_get_system_arch): handle a wider range of
-       uname return values
-
-2002-09-20  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c (sax_end_element): Check to make sure the arch score
-       is greater than -1, not non-zero.  I guess Ian would have never
-       caught this bug with his crappy processor.
-
-2002-09-19  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-subscriptions.c (rc_world_export_subscriptions_to_xml):
-       When we're writing out our old subscriptions, if one is being
-       handled by the world, skip it.
-
-2002-09-18  Ian Peters  <itp@ximian.com>
-
-       * rc-verification.h: add RC_VERIFICATION_TYPE_SANITY
-
-       * rc-rpmman.c (rc_rpmman_verify): if we're unable to split the rpm
-       into header and payload, return a failed sanity verification, to
-       make life easier on joe
-
-2002-09-11  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-channel.c (rc_channel_set_subscription): If we changed the
-       state of the channel's subscription, call
-       rc_world_touch_sequence_number on the channel's world so that we
-       can detect the change.
-
-       * rc-world.c (rc_world_touch_sequence_number): Added.  Marks the
-       world as changed so that the sequence number will increment.
-
-2002-09-09  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: missing include
-
-2002-09-09  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c: Add some missing header includes.
-
-2002-09-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_verify): Fix a typo.  We want a bitwise
-       and, not a logical and.
-
-2002-09-04  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-channel.c (rc_channel_get_subs_file): Added an accessor for
-       the channel's subscribed file.
-       (rc_channel_get_unsubs_file): Add an accessor for the channel's
-       unsubscribed file.
-
-       * rc-package-spec.c (rc_package_spec_to_str): Produce nice-looking
-       output if the spec's version is empty. (Bug #29736)
-       (rc_package_spec_version_to_str): Be careful to not print a "-" in
-       the spec version string if it isn't needed.  (Also bug #29736)
-
-       * rc-resolver-context.c (rc_resolver_context_uninstall_package):
-       Make the "can't uninstall to-be-installed" error message a bit
-       more sane. (Also bug #29736)
-       
-2002-09-03  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (parser_package_end): We need to get the file_size and
-       installed_size from the most recent RCPackageUpdate and copy it
-       into the RCPackage.
-
-2002-08-29  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver.c (rc_resolver_free): Clean up our list of extra
-       initial queue items.
-       (verify_system_cb): Insertion-sort our list of packages.
-       (rc_resolver_verify_system): Walk across our list of installed
-       packages and look for cases where we have installed multiple
-       packages with the same name.  For each such case, construct a set
-       of group item for removing each of the packages but one.  Then
-       bundle all of the group items into a branch item and add it to our
-       list of extras.
-       (rc_resolver_resolve_dependencies): Add the contents of
-       initial_items to our newly-constructed queue.
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_item): Added.  This
-       is the sort of thing we should have an accessor for, even if it is
-       trivial.
-       (rc_resolver_queue_add_package_to_install): Use
-       rc_resolver_queue_add_item.
-       (rc_resolver_queue_add_package_to_remove): Ditto.
-       (rc_resolver_queue_add_package_to_verify): Ditto.
-       (rc_resolver_queue_add_extra_dependency): Ditto.
-       (rc_resolver_queue_add_extra_conflict): Ditto.
-
-       * rc-queue-item.h: Added RC_QUEUE_ITEM_TYPE_GROUP to
-       RCQueueItemType enum.  Added definition of RCQueueItem_Group
-       struct and prototypes for group functions.
-
-       * rc-queue-item.c (require_item_cmp): Added. A comparison function
-       for require items.
-       (rc_queue_item_new_require): Put require_item_cmp in the require
-       vtable.
-       (conflict_item_cmp): Added.  A comparison function for conflict
-       items.
-       (rc_queue_item_new_conflict): Put conflict_item_cmp in the require
-       vtable.
-       (group_item_process): Added.  Functionality for group items.
-       (group_item_destroy): Ditto.
-       (group_item_copy): Ditto.
-       (group_item_cmp): Ditto.
-       (group_item_to_string): Ditto.
-       (rc_queue_item_new_group): Ditto.
-       (rc_queue_item_group_add_item): Ditto.
-
-2002-08-28  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (install_item_process): If we are in
-       verification mode and it looks like our install is about to fail,
-       don't let it happen.  Instead, back out the install and remove
-       whatever packages caused us to need to install this thing in the
-       first place.  Set the is_soft mode on our install and upgrade
-       operation if we are in verification mode.
-       (require_item_process): If we are in verification mode, we always
-       need to try the uninstall branch.
-
-       * rc-resolver.c (rc_resolver_verify_system): Set the ->verifying
-       flag to TRUE.
-       (rc_resolver_resolve_dependencies): Initialize the ->verifying
-       flag on our initial queue's context.
-
-       * rc-resolver.h: Added 'verifying' flag to RCResolver struct.
-
-       * rc-resolver-context.c (rc_package_status_to_string): Added a
-       string for RC_PACKAGE_STATUS_TO_BE_INSTALLED_SOFT.
-       (rc_resolver_context_new_child): Initialize the ->verifying flag.
-       (rc_resolver_context_set_status): Use the
-       rc_package_status_is_to_be_installed macro.
-       (rc_resolver_context_install_package): Added an is_soft argument.
-       When it is set, the installed package's status is set to
-       RC_PACKAGE_STATUS_TO_BE_INSTALLED_SOFT instead of
-       RC_PACKAGE_STATUS_TO_BE_INSTALLED.  Changed to use the
-       rc_package_status_is_to_be_installed macro.  Removed a totally
-       useless elog message.
-       (rc_resolver_context_upgrade_package): Added an is_soft argument,
-       and changed to use the rc_package_status_is_to_be_installed macro.
-       (rc_resolver_context_uninstall_package): Terminate early if
-       rc_package_status_is_to_be_uninstalled succeeds.  The is probably
-       a pointless optimization, since I think we already filter for this
-       before calling the function... but I added in anyway, mostly for
-       symmetry with the other rc_resolver_context_*_package functions.
-       (rc_resolver_context_package_is_present): Use
-       rc_package_status_is_to_be_installed macro.
-       (install_pkg_cb): Ditto.
-       (upgrade_pkg_cb): Ditto.
-
-       * rc-resolver-context.h: Added
-       RC_PACKAGE_STATUS_TO_BE_INSTALLED_SOFT to RCPackageStatus enum.
-       Added rc_package_status_is_to_be_installed macro.  Added
-       'verifying' flag to RCResolverContext struct.
-
-2002-08-28  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: add libpopt.so to the shared stubs, as there are
-       undefined popt symbols in librpm.so.
-
-       * rc-package-spec.h: no more inline rc_package_spec_equal, no more
-       rc_package_spec_compare
-
-       * rc-package-spec.c: always define rc_package_spec_equal here.  No
-       more das_global_packman, yay!  No more rc_package_spec_compare,
-       either.
-
-       * rc-package.h, rc-package.c: removed unused functions
-       rc_package_slist_sort_by_spec,
-       rc_package_slist_sort_by_spec_reverse,
-       rc_pakcage_slist_find_duplicates, and
-       rc_packages_slist_remove_older_duplicates
-
-       * rc-package-dep.h, rc-package-dep.c
-       (rc_package_dep_verify_relation): there's no more
-       das_global_packman, pass a packman in instead
-
-       * rc-packman.h, rc-packman.c: no more rc_packman_set_packman or
-       rc_packman_set_packman
-
-       * rc-queue-item.c (install_item_cmp): use
-       rc_packman_version_compare instead of rc_package_spec_compare here
-       (uninstall_item_cmp): and here
-
-       * rc-resolver-queue.c (rc_resolver_queue_split_first_branch): and
-       here
-
-       * rc-world.c: add a global world for rc_get_world
-       (rc_world_register_packman): removed
-       (rc_set_world): added, set the world you get with rc_get_world
-       (rc_world_new): take and setup the packman here, because we don't
-       work very well without one
-       (struct ForeachUpgradeInfo): add a pointer to the world here
-       (foreach_upgrade_cb): use rc_packman_version_compare rather than
-       rc_package_spec_compare
-       (rc_world_foreach_upgrade): set the world
-       (struct BestUpgradeInfo): add a pointer to the world here
-       (get_best_upgrade_cb): use rc_packman_version_compare rather than
-       rc_package_spec_compare
-       (rc_world_get_best_upgrade): set the world
-       (rc_world_get_package_with_constraint):
-       rc_package_dep_verify_relation needs a packman
-       (rc_world_check_providing_package): here too
-       (rc_world_foreach_requiring_package): and here
-       (rc_world_foreach_conflicting_package): and here
-
-       * rc-world.h: remove rc_world_register_packman, add rc_set_world,
-       modify rc_world_new declaration
-
-       * rc-rpmman.c (rc_rpmman_transact): rc_package_dep_verify_relation
-       needs a packman
-       
-2002-08-28  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: reinstate the hack in lesser form -- interactive
-       debian packages cause the process to be killed, and an error set.
-
-2002-08-26  Joe Shaw  <joe@ximian.com>
-
-       * rc-util.c (rc_buffer_map_file): Fix a nasty file descriptor leak.
-
-       * rc-world-subscriptions.c
-       (rc_world_import_subscriptions_from_xml): Make the
-       can't-subscribe-to-channel-because-it-wasn't-in-the-XML error a
-       little more clear.
-
-2002-08-23  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman-general.c (rc_debman_parse_version): Make input a
-       const gchar *.
-
-       * rc-packman.c (rc_packman_parse_version): Added.  Calls the
-       backend's parse_version function.
-
-       * rc-packman.h: Added rc_packman_real_parse_version function
-       pointer.
-
-       * rc-debman.c (rc_debman_parse_version_wrapper): Wraps
-       rc_debman_parse_version(), sets has_epoch to TRUE always.
-
-       * rc-rpmman.c (rc_rpmman_parse_version): Call parse_version().
-
-       * rc-world.c (rc_world_sequence_number): Move to after the
-       definition of rc_world_sync() to fix some warnings.
-
-2002-08-22  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_sequence_number): Call rc_world_sync()
-       before we get our sequence number, so we can flip the changed flag
-       and increment it if the database changed underneath us.
-
-2002-08-22  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (branch_item_process): An optimization: Instead
-       of processing a 1-item branch into that item, simply execute the
-       item immediately.
-
-2002-08-20  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (require_item_process): Don't skip exploring the
-       uninstall branch in the case of codependent packages when our
-       requirement comes from a lost package.  This might not be the
-       right thing to do.
-
-       * rc-resolver-context.c (rc_resolver_context_spew): Added. Another
-       debug-spew function that prints out a list of the packages to be
-       installed, removed and upgraded.
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): Make sure that
-       our dummy local packages channel has a non-zero cid and bid.
-       (rc_resolver_resolve_dependencies): When in extremely_noisy mode,
-       print a final total of the number of queues in each category.
-
-2002-08-19  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (rc_channel_to_xml_node): Put the base-id in the XML.
-
-       * rc-world-import.c (rc_world_add_channels_from_xml): Handle the
-       base-id.
-       (rc_world_add_channel_from_buffer): Added an argument for the
-       base-id.
-
-       * rc-world-dump.c (rc_world_undump_from_xml): Get the base-id from
-       the channel XML.
-
-       * rc-world.c (rc_world_add_channel): Added an argument for
-       specifying a base-id.
-       (rc_world_get_channel_by_base_id): Added.
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_extra_dependency): Added.
-
-       * rc-resolver.c (rc_resolver_free): Clean up our extra conflicts.
-       (rc_resolver_add_extra_conflict): Added.
-       (rc_resolver_resolve_dependencies): Specify a fake base-id for our
-       temporary local packages channel.
-       (rc_resolver_resolve_dependencies): Iterate over our extra
-       conflicts, adding them to the queue.
-
-       * rc-resolver-info.c (rc_resolver_info_conflicts_with_new): Handle
-       a NULL conflicts_with.
-       (rc_resolver_info_obsoletes_new): Handle a NULL obsoletes.
-
-       * rc-queue-item.c (conflict_process_cb): Respond gracefully when
-       conflicting_package is NULL.
-       (conflict_item_process): Ditto.
-       (conflict_item_to_string): Ditto.
-       (rc_queue_item_new_conflict): Ditto.
-
-       * rc-channel.c (rc_channel_get_base_id): Added accessor.
-
-       * rc-channel-private.h: Added base_id field to RCChannel struct.
-
-       * rc-resolver.c (rc_resolver_free): Clean up after our deferred
-       branch list.
-       (rc_resolver_resolve_dependencies): Added deferred branching
-       support.  If we exhaust the pending queues without finding a
-       solution, try deferred queues until we find a solution (or run out
-       of deferred queues, of course).
-
-       * rc-resolver-queue.c (rc_resolver_queue_process_once): Added an
-       optimization that makes a pass over our new queue item and throws
-       out any branches that are supersets of other branches.
-       (rc_resolver_queue_split_first_branch): Added deferred branching.
-       This is an optimization where we will try to recognize branches
-       that are less likely to lead to high-scoring solutions; the
-       deferred branches are explored only if we are unable to produce a
-       valid resolution using the favored branches.
-       
-       * rc-queue-item.c (rc_queue_item_cmp): Added.  A comparison
-       function for queue items, so that we can sort them into a
-       canonical ordering.
-       (install_item_cmp): Implements cmp for install items.
-       (rc_queue_item_new_install): Store the cmp function in our vtable.
-       (branch_item_cmp): Implements cmp for branch items.
-       (rc_queue_item_new_branch): Store the cmp function in our vtable.
-       (uninstall_item_cmp): Implements cmp for uninstall items.
-       (rc_queue_item_new_uninstall): Store the cmp function in our
-       vtable.
-       (rc_queue_item_branch_contains): Added.  Checks if one branch item
-       is a proper subset of the other.
-       (rc_queue_item_branch_add_item): Insertion-sort the added branch
-       items instead of just prepending.
-
-       * rc-channel.c (rc_channel_get_path): Added accessor.
-       (rc_channel_get_icon_file): Added accessor.
-
-2002-08-17  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (rc_world_sequence_number): Added.  If the sequence
-       number increases, that means that the RCWorld has changed.
-       (rc_world_new): Initialize seqno-related variables.
-       (rc_world_add_channel): Set 'changed' flag so that the sequence
-       number will get incremented.
-       (rc_world_remove_channel): Ditto.
-       (rc_world_add_package): Ditto.
-       (rc_world_remove_package): Ditto.
-       (rc_world_remove_packages): Ditto.
-
-2002-08-16  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (rc_xml_node_to_package_dep_internal): Wow... the way
-       this code tried to extract the epoch from the dep tag was _really_
-       broken.  Fixed.
-
-       * rc-queue-item.c (require_item_process): When there are no
-       providers for the requirement, cause the resolution attempt to
-       fail if we can't come up with either something to uninstall or an
-       upgrade branch to explore.
-       
-2002-08-15  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-compare.c (churn_factor): Use the
-       rc_resolver_context_*_count fns instead of directly accessing the
-       struct elements.
-
-       * rc-queue-item.c (install_item_process): Use
-       rc_package_status_is_to_be_uninstalled macro.
-       (require_process_cb): Ditto.
-
-       * rc-resolver-context.c (rc_resolver_context_new_child): No need
-       to copy install_count, etc. to the child context.
-       (rc_resolver_context_set_status): Use
-       rc_package_status_is_to_be_uninstalled macro.
-       (rc_resolver_context_install_package): Use
-       rc_package_status_is_to_be_uninstalled macro.  Don't try to count
-       installs as we go.
-       (rc_resolver_context_upgrade_package): Ditto.
-       (rc_resolver_context_uninstall_package): Ditto.
-       (uninstall_pkg_cb): Use rc_package_status_is_to_be_uninstalled
-       macro.
-       (rc_resolver_context_install_count): Added.
-       (rc_resolver_context_uninstall_count): Added.
-       (rc_resolver_context_upgrade_count): Added.
-       (requirement_possible_cb): Use
-       rc_package_status_is_to_be_uninstalled macro.
-
-       * rc-resolver-context.h: Removed install_count, upgrade_count and
-       uninstall_count from RCResolverContext.  Added
-       rc_package_status_is_to_be_uninstalled macro.
-
-2002-08-14  Ian Peters  <itp@ximian.com>
-
-       * rc-util.h (rc_is_program_in_path): removed
-
-       * rc-util.c (rc_is_program_in_path): removed
-
-       * rc-verification.c (rc_verify_gpg): use g_find_program_in_path
-       instead of rc_is_program_in_path
-
-2002-08-14  Ian Peters  <itp@ximian.com>
-
-       * rc-world.c (rc_package_and_dep_new_package): removed
-       (rc_world_add_package): every package doesn't implicitly provide
-       itself, it explicitly provides itself, which means we don't have
-       to do this.
-
-2002-08-14  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (rc_debman_class_init): remove some very old
-       commented out code
-       (rc_debman_init): remove RC_PACKMAN_CAP_VIRTUAL_CONFLICTS from our
-       capabilities list, since it doesn't exist anymore
-
-       * rc-packman.h: remove RC_PACKMAN_CAP_VIRTUAL_CONFLICTS
-
-       * rc-resolver-context.h (struct _RCResolverContext): get rid of
-       the allow_conflicts_with_virtual_provides field
-
-       * rc-resolver-context.c (rc_resolver_context_new_child): no more
-       allow_conflicts_with_virtual_provides
-
-       * rc-resolver.h (struct _RCResolver): bye bye
-       allow_conflicts_with_virtual_provides
-       (rc_resolver_allow_virtual_conflicts): removed
-
-       * rc-resolver.c (rc_resolver_new): adios
-       allow_conflicts_with_virtual_provides
-       (rc_resolver_allow_virtual_conflicts): removed
-       (rc_resolver_resolve_dependencies): l8r
-       allow_conflicts_with_virtual_provides
-
-       * rc-queue-item.c (conflict_process_cb): altered the virtual
-       provide / conflict logic to match what we now believe is the
-       actual rpm behavior.  Conflicts apply to any provide, regardless
-       of whether it's "virtual" or not.  An obsolete only applies to the
-       package itself, not just a provide -- so check to make sure that a
-       provide spec matches the package spec that provides it before we
-       process the "obsolete" conflict.
-
-       * rc-package-spec.h: no more RCWorld needed, get rid of the
-       RCPackageSpecType enum
-       (struct _RCPackageSpec): no more type field
-       (rc_package_spec_get_type): removed
-
-       * rc-package-spec.c (rc_package_spec_init): no more type field
-       (rc_package_spec_copy): no more type field
-       (struct SpecTypeInfo): removed
-       (spec_type_cb): removed
-       (rc_package_spec_get_type): removed
-
-       * rc-world.c (rc_package_and_dep_new_package): no more type field
-       in RCPackageSpecs
-
-2002-08-10  Ian Peters  <itp@ximian.com>
-
-       * rc-util.h: if HAVE_MKDTEMP is defined, then rc_mkdtemp is just
-       mkdtemp, otherwise we need to declare our own.
-
-       * rc-util.c (rc_mkdtemp): our very own implementation of mkdtemp,
-       since we need to build on platforms that don't offer this function
-
-       * rc-rpmman.c (write_objects): call rc_mkdtemp, not mkdtemp
-
-2002-08-09  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (split_rpm): change the way we handle errors in this
-       function to plug a few small potential memory and fd leaks
-
-2002-08-09  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (open_database): fix a small memory leak and a
-       leaked file descriptor on failed database opens
-
-2002-08-09  Ian Peters  <itp@ximian.com>
-
-       * rc-package-spec.h (struct _RCPackageSpec): removed the name
-       field in favor of the nameq, a GQuark.  Note to the reader: every
-       place in this entry that I say GQuark fixup, I mean: did the right
-       thing, whether that means directly comparing two GQuarks for
-       equality, g_quark_[to|from|try]_string, etc
-       (rc_package_spec_equal): no need for a strcmp, just compare the
-       two quarks
-
-       * rc-package-spec.c (rc_package_spec_init): really obvious name ->
-       nameq changes, I'm not going to enumerate them
-
-       * rc-package-dep.c: Our global_deps table is now keyed on the name
-       quark, not the name, so some of the hash table logic in _unref,
-       _new, and _new_from_spec is dramatically simpler, since we don't
-       have allocated keys.
-       (rc_package_dep_verify_relation): GQuark fixup
-
-       * rc-dep-or.h (rc_dep_string_to_or_dep_slist): take a const gchar
-       *, not gchar *
-
-       * rc-dep-or.c (rc_dep_or_dep_slist_to_string): GQuark fixup
-
-       * rc-package.c (rc_package_slist_sort_by_name): GQuark fixup
-       (rc_package_slist_find_duplicates): GQuark fixup
-
-       * rc-packman.c (rc_packman_transact): GQuark fixup
-       (rc_packman_generic_version_compare): GQuark fixup
-
-       * rc-rpmman.c (rc_package_to_rpm_name): GQuark fixup
-       (rc_rpmman_transact): GQuark fixup
-       (rc_rpmman_read_header): GQuark fixup
-       (rc_rpmman_depends_fill): GQuark fixup
-       (rc_rpmman_version_compare): GQuark fixup
-
-       * rc-debman.c (hash_destroy_pair): the key is a GQuark
-       (hash_destroy): my hash should be NULL, NULL now
-       (package_accept): GQuark fixup
-       (query_all_read_line_cb): GQuark fixup
-       (rc_debman_query_all_real): GQuark fixup
-       (rc_debman_query): GQuark fixup
-       (rc_debman_init): my hash is NULL, NULL now
-
-       * rc-queue-item.c (codependent_packages): GQuark fixup
-
-       * rc-resolver-context.c (uninstall_pkg_cb): GQuark fixup.  Also,
-       my hash is keyed on GQuarks now.
-       (rc_resolver_context_foreach_uninstall): make my hash NULL, NULL
-       now to be keyed on GQuarks
-       (dup_name_check_cb): GQuark fixup
-
-       * rc-resolver-info.c (rc_resolver_info_packages_to_string): GQuark
-       fixup
-       (rc_resolver_info_mentions): GQuark fixup
-
-       * rc-world-info.c (add_package_to_world): key is a GQuark
-       (rc_world_add_packages_from_xml): my little
-       temporary hash table is keyed on GQuarks now, etc
-       (debian_packages_helper): GQuark fixup
-
-       * rc-world.c (struct _SListAnchor): key is a GQuark
-       (hashed_slist_new): my hash table is direct, not str
-       (hashed_slist_add): key is a GQuark, GINT_TO_POINTER wrap the
-       quark when playing with the hash
-       (hashed_slist_get): key is a GQuark, GINT_TO_POINTER wrap the
-       quark...
-       (hashed_slist_foreach_cb): GINT_TO_POINTER
-       (foreach_remove_func): don't free the key, it's not allocated
-       anymore
-       (rc_world_add_package): hashed_slist_add gets a GQuark
-       (rc_world_find_installed_version): hashed_slist_get needs a GQuark
-       (rc_world_get_package): hashed_slist_get needs a GQuark
-       (rc_world_guess_package_channel): hashed_slist_get needs a GQuark
-       (rc_world_foreach_package_by_name): hashed_slist_get needs a
-       GQuark
-       (rc_world_foreach_upgrade): GQuark fixup
-       (rc_world_foreach_providing_package): GQuark fixup,
-       hashed_slist_get needs a GQuark
-       (rc_world_check_providing_package): GQuark fixup, hashed_slist_get
-       needs a GQuark
-       (rc_world_foreach_requiring_package): hashed_slist_get needs a
-       GQuark
-       (rc_world_foreach_conflicting_package): hashed_slist_get needs a
-       GQuark
-
-       * rc-xml.c (struct _RCPackageSAXContext): our hash table is by
-       GQuark
-       (parser_history_start): GQuark fixup
-       (parser_package_end): GQuark fixup, hash table changes
-       (package_slist_build): key is a GQuark
-       (rc_package_sax_context_new): hash table is NULL, NULL
-       (rc_xml_node_to_package): GQuark fixup
-       (rc_xml_node_to_package_update): GQuark fixup
-       (rc_package_to_xml_node): GQuark fixup
-       (rc_package_dep_to_xml_node): GQuark fixup
-
-2002-08-09  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-context.c (rc_resolver_context_upgrade_package):
-       Added an extra argument for the to-be-upgraded RCPackage.  If that
-       package's status is TO_BE_UNINSTALLED, decrement the
-       uninstall_count to keep the accounting straight: the removal will
-       be accounted for when we increment upgrade_count.
-
-       * rc-queue-item.c (install_item_process): Pass the to-be-upgraded
-       package into rc_resolver_context_upgrade_package.
-
-2002-08-08  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-context.c (spew_cb): Changed to use
-       rc_resolver_info_to_string instead of the _to_str version.
-       
-       * rc-resolver-info.c (rc_resolver_info_type_to_string): Renamed
-       from _to_str.
-       (rc_resolver_info_type_from_string): Renamed from _from_str.
-       (rc_resolver_info_to_string): Renamed from _to_str.  Changed to
-       call _to_string version of other functions.
-
-2002-08-08  Ian Peters  <itp@ximian.com>
-
-       * distributions.xml: fix a typo in the version of TurboLinux 7.0
-
-       * rc-package-dep.c, rc-package-dep.h: massively cleaned up and
-       refactored.  RCPackageDep is now an opaque struct, for the most
-       part... modulo the opening exposed by the RCPackageSpec.
-       Functions are cleaned up, dead code removed, and lots of the stuff
-       from last night has been commented.
-
-       * rc-debman.c (query_all_read_line_cb): whoops, don't post-munge
-       the pre bit of the RCPackageDeps in the pre-depends: section,
-       we've already taken care of it
-
-       * rc-dep-or.c (rc_dep_or_dep_slist_to_string): opaque
-       RCPackageDeps
-       (rc_dep_string_to_or_dep_slist): ditto
-
-       * rc-queue-item.c (dep_slist_to_string): opaque RCPackageDeps
-       (require_item_process): ditto
-       (require_item_to_string): ditto
-       (conflict_item_process) ditto
-       (conflict_item_to_string): ditto
-       (uninstall_item_process): ditto
-
-       * rc-resolver.c (rc_resolver_add_extra_dependency):
-       rc_package_dep_copy is just an rc_package_dep_ref
-
-       * rc-world.c (rc_package_and_dep_new_package): opaque
-       RCPackageDeps
-       (rc_world_add_package): ditto
-       (rc_world_foreach_providing_package): ditto
-       (rc_world_check_providing_package): ditto
-       (rc_world_foreach_requiring_package): ditto
-       (rc_world_foreach_conflicting_package): ditto
-       (foreach_provides_by_name_cb): ditto
-       (foreach_requires_by_name_cb): ditto
-       (foreach_conflicts_by_name_cb): ditto
-
-       * rc-xml.c (parse_dep_attrs): opaque RCPackageDeps
-       (parser_package_end): ditto
-       (rc_xml_node_to_package): ditto
-       (rc_xml_node_to_package_dep_internal): ditto
-       (rc_package_dep_to_xml_node): ditto
-
-2002-08-08  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-info.c (rc_resolver_info_type_to_str): Added.
-       (rc_resolver_info_type_from_str): Added.
-
-2002-08-08  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (query_all_read_line_cb): add the extra parameter to
-       all of the rc_debman_fill_depends calls
-
-2002-08-08  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package-dep.h: By making the refs field in RCPackageDep a
-       20-bit int and shrinking relation to 8 bits, we can save 4 bytes
-       per object.  Not a huge savings, but it doesn't hurt.
-
-       * rc-xml.c (parser_package_start): Got rid of some unnecessary mem
-       allocs and string copies.
-       (parse_dep_attrs): Got rid of some unnecessary mem allocs and
-       string copies.
-       (parser_package_end): Got rid of some unnecessary mem allocs and
-       string copies.
-       (parser_update_end): Got rid of some unnecessary mem allocs and
-       string copies.  
-       In all, these changes reduce the number of memallocs done by
-       rcd on startup on a RH73 system by about 15%.
-
-2002-08-07  Ian Peters  <itp@ximian.com>
-
-       * rc-package-dep.c, rc-package-dep.h: RCPackageDep is now a ref
-       counted structure.  It really should be an opaque struct, too, but
-       that'll come.  rc_package_dep_new now tries to return a pointer to
-       an existing RCPackageDep struct rather than creating a new one.
-       (struct _RCPackageDepArray): data now has to be an array of
-       RCPackageDep *
-       (struct _RCPackageDep): add a ref count
-       (rc_package_dep_ref): added
-       (rc_package_dep_unref): added
-       (rc_package_dep_new): now takes a pre and is_or parameter
-       (rc_package_dep_new_from_spec): ditto
-       (rc_package_dep_free): removed
-       (rc_package_dep_slist_remove_duplicates): removed
-       (rc_package_dep_array_from_slist): updated to new
-       RCPackageDepArray
-       (rc_package_dep_array_free): ditto
-       (rc_package_dep_array_copy): ditto
-
-       * rc-debman-general.c, rc-debman-general.h
-       (rc_debman_fill_depends): take a pre parameter, pass it along to
-       rc_package_dep_new
-
-       * rc-debman.c (query_all_read_line_cb): add FALSE, FALSE to
-       rc_package_dep_new when we self-provide
-       (rc_debman_query_all): ditto
-
-       * rc-dep-or.c: this file really needs some loving and rewriting.
-       yikes.
-       (rc_dep_or_new_provide): add FALSE, TRUE to rc_package_dep_new
-       (rc_dep_string_to_or_dep_slist): we can't assemble the dep bit by
-       bit; accumulate the elements and create the RCPackageDep at the
-       end
-
-       * rc-queue-item.c (install_item_process): change the way we
-       iterate over RCPackageDepArrays, again.  Add FALSE, FALSE to the
-       end of rc_package_dep_new_from_spec.
-       s/rc_package_dep_free/rc_package_dep_unref.
-
-       * rc-resolver-context.c (rc_resolver_context_package_is_possible):
-       change the way we iterate over RCPackageDepArrays
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_verify):
-       change the way we ... etc
-
-       * rc-rpmman.c (rc_rpmman_transact): change the ... blah blah.  add
-       FALSE, FALSE to the end of rc_package_dep_new, and of course,
-       _unref instead of _free.
-       (depends_fill_helper): FALSE, FALSE to rc_package_dep_new in a few
-       places
-       (rc_rpmman_depends_fill): FALSE, FALSE yadda yadda
-
-       * rc-world-import.c (debian_packages_helper): add FALSE to every
-       call to rc_debman_fill_depends except for our pre-requires, which
-       get TRUE.  Also, for our self-provide, add FALSE, FALSE to
-       _dep_new_from_spec.
-
-       * rc-world.c (struct _RCPackageAndDep): kill the own_dep field
-       (rc_package_and_dep_new_package): add FALSE, FALSE to
-       _dep_new_from_spec, remove the own_dep
-       (rc_package_and_dep_new_pair): remove the own_dep stuff, and ref
-       the dep we're passed
-       (rc_package_and_dep_free): always unref our dep, no own_dep
-       (rc_world_add_package): change the way we iterate over
-       RCPackageDepArrays
-       (rc_world_get_package_with_constraint): add FALSE, FALSE to
-       rc_package_dep_new_from_spec, and unref, don't free, the dep when
-       we're done
-
-       * rc-xml.c (dep_attrs): we're no longer given a dep to fill out,
-       but a dep pointer that we're to allocate and return.  We have to
-       create it at the end, so we accumulate all of the members and
-       create it at the end.
-       (parser_dep_start): don't create our own dep, get one from
-       dep_attrs
-       (rc_xml_node_to_package): change the way we iterate over
-       RCPackageDepArrays
-       (rc_xml_node_to_package_dep_internal): don't create a dep and then
-       fill it out, accumulate the members we need and then create it
-       (rc_package_to_xml_node): change the way we iterate over
-       RCPackageDepArrays
-
-2002-08-07  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-dump.c: s/xmlGetProp/xml_get_prop/.
-
-       * rc-world-subscriptions.c
-       (rc_world_import_subscriptions_from_xml):
-       s/xmlGetProp/xml_get_prop/.
-
-       * rc-world-dump.c (rc_world_undump_from_xml): Fixed memory leak.
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): At the
-       beginning of the resolution, create a temporary channel for the
-       local packages that we are installing.  This allows the RCWorld to
-       see the local packages, and we can take their provides into
-       account when resolving.  When the resolution is finished, 
-       we destroy the channel.
-       
-2002-08-07  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c (sax_end_element): If RC_DISTRO_TARGET is set, use
-       it instead of whatever it should be.  It ain't pretty, but it
-       works.
-
-2002-08-07  Ian Peters  <itp@ximian.com>
-
-       * rc-verification.c (rc_verify_gpg): refactored to use g_spawn
-       instead of handling it myself.  Other miscellaneous cleanups, too.
-
-2002-08-07  Ian Peters  <itp@ximian.com>
-
-       * rc-distro.c (child_setup_func): added, dup2 stderr to stdout.
-       (distro_check_command_eval): use g_spawn_async_with_pipes instead
-       or pipe/fork/exec ourselves
-
-2002-08-06  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: libredcarpet, not 2.0
-
-2002-08-06  Ian Peters  <itp@ximian.com>
-
-       * rc-package-dep.c (rc_package_dep_array_from_slist): just because
-       we don't have to rc_package_dep_free the dep doesn't mean we don't
-       have to g_free it
-
-2002-08-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-verification.c: Declare keyring static.
-
-2002-08-06  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: kill the private namespace stuff, build the shared
-       objects into header files, and all the automake crap to handle
-       conditionally built sources
-
-       * packer.pl: handle disallowed characters in the array name
-
-       * rc-debman-private.h: include a helper_object name in the
-       RCDebmanPrivate struct
-
-       * rc-debman.c: include dpkg-helper.h, write out the object file on
-       _init, clean it up on _finalize, use it when we fork
-
-       * rc-packman.h, rc-packman.c: remove the rc_libdir stuff
-
-       * rc-rpmman.c: include rpm-stubs.h, write out the object files on
-       _init, clean them up when we're done dlopening some
-
-       * rc-verification.c: if keyring is NULL, just return UNDEF out of
-       rc_verify_gpg
-
-2002-08-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c (sax_warning): Always print out SAX warnings.
-       (sax_error): Always print out SAX errors.
-       (sax_handler): Call sax_error() for error and fatalError
-       conditions.
-
-2002-08-05  Joe Shaw  <joe@ximian.com>
-
-       * rc-resolver-info.c (rc_resolver_info_merge): Need to ref the
-       package when we're merging infos, as well.
-
-2002-08-05  Ian Peters  <itp@ximian.com>
-
-       * rc-queue-item.c (require_item_process): if you never increment
-       the iterator, the loop never exits
-
-2002-08-05  Ian Peters  <itp@ximian.com>
-
-       * rc-package-dep.c (rc_package_dep_array_from_slist): don't
-       _dep_copy and _dep_free, just memcpy the dep, since we were just
-       going to free it anyway
-
-2002-08-05  Ian Peters  <itp@ximian.com>
-
-       * rc-package-dep.h, rc-package-dep.c: added an RCPackageDepArray
-       type, and rc_package_dep_array_from_slist,
-       rc_package_dep_array_free, rc_package_dep_array_copy methods.
-       Storing deps as arrays rather than lists should save a good chunk
-       of memory.  Note that _from_slist takes an RCPackageDepSList **,
-       and uses the RCPackageDep *'s directly, g_slist_frees the list,
-       and sets it to NULL.
-
-       * rc-package.h (struct _RCPackage): no more RCPackageDepSLists
-       here; long live the RCPackageDepArray
-
-       * rc-package.c (rc_package_copy):
-       s/rc_package_dep_slist_copy/rc_package_dep_array_copy
-       (rc_package_free):
-       s/rc_package_dep_slist_free/rc_package_dep_array_free
-
-       * rc-debman.c (struct DebmanQueryInfo): include buffers to
-       assemble temporary RCPackageDepSLists
-       (query_all_read_line_cb): add deps to these temporary lists, not
-       to the package itself.
-       (rc_debman_query_all_real): convert the temporary dep lists to
-       arrays inside the package
-       (rc_debman_query_file): ditto
-
-       * rc-debug-misc.c (rc_package_dump): #if 0'd it out, nothing uses
-       it now and i didn't want to fix it for dep arrays.  I'll go on a
-       dead code hunting spree soon.
-
-       * rc-rpmman.c (rc_rpmman_transact): change the way we iterate over
-       the obsoletes, since they're now an array
-       (rc_rpmman_depends_fill): assemble all of the deps in local lists,
-       instead of the package, and then convert them into arrays in the
-       package at the end.
-
-       * rc-queue-item.c (install_item_process): change the way we
-       iterate over deps, they're now arrays
-       (uninstall_item_process): ditto
-
-       * rc-resolver-context.c (rc_resolver_context_package_is_possible):
-       more dependency iteration changes
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_verify):
-       see a pattern here?
-
-       * rc-world-import.c (debian_packages_helper): assemble
-       dependencies in local lists, convert them all to arrays inside the
-       package at the end.
-
-       * rc-world.c (rc_world_add_package): more dependency iteration
-       changes
-
-       * rc-xml.c (struct _RCPackageSAXContext): add all 6 dependency
-       lists
-       (parser_toplevel_start): set all 6 lists to NULL
-       (parser_package_start): add deps to the context lists, not the
-       context package
-       (parser_dep_start): ditto
-       (parser_package_end): iterate over the provides list in the
-       context.  convert the context lists to arrays in the context
-       package
-       (struct DepTable): added, for the DOM parser.  Has 6
-       RCPackageDepSLists.
-       (extract_dep_info): takes a DepTable, not an RCPackage, and
-       assembles the dep lists in the dep_table.
-       (rc_xml_node_to_package): fill in the deps into a DepTable.
-       convert those lists into arrays inside the package at the end.
-       when looking for our version, walk the provides array.
-       (rc_package_to_xml_node): change the way we iterate all of the
-       deps, since they're arrays now.
-
-2002-08-05  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): joe was right a few days ago,
-       real_remove_packages doesn't need to be a deep copy or free
-
-2002-08-05  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: get rid of the rc-marshal.[ch] stamp stuff, and add
-       them to libredcarpettmp_a_SOURCES
-
-2002-08-05  Joe Shaw  <joe@ximian.com>
-
-       * rc-package.c (rc_package_is_installed): If local_package is set,
-       always return FALSE.
-
-       * rc-package.h: Add a local_package bit
-
-       * rc-packman.c (rc_packman_query_file): Set the local_package bit.
-
-       * rc-resolver-context.c (rc_resolver_context_install_package,
-       rc_resolver_context_upgrade_package): If the local_package bit is
-       set, set the priority to 0.
-
-       * rc-resolver-info.c: Ref and unref RCPackages throughout.
-
-2002-08-04  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-dump.c (rc_world_undump_from_xml): Extract the
-       priorities from the XML and put them in our channel.
-
-       * rc-xml.c (rc_channel_to_xml_node): Store priorities in the XML.
-
-2002-08-03  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: list distributions-xml.h in
-       libredcarpettmp_a_SOURCES, as well as BUILT_SOURCES
-
-2002-08-03  Ian Peters  <itp@ximian.com>
-
-       * distributions.xml: added.  XML file describing every
-       distribution we recognize, and whether it's supported or not.
-
-       * packer.pl: added.  perl script to generate a C character array
-       from a file.
-
-       * Makefile.am: add distributions-xml.h to BUILT_SOURCES, packer.pl
-       to EXTRA_DIST, build distributions-xml.h out of distributions.xml
-       using packer.pl, and add distributions-xml.h to clean-local.
-
-       * .cvsignore: added distributions-xml.h
-
-       * rc-distro.[ch]: added.  Now parses distribution information out
-       of a supplied XML file -- or, if no XML file is supplied, uses a
-       gzipped backup copy as a fallback (the distribution-xml.h stuff
-       from above).  distributions.xml in CVS should be kept up to date,
-       and is used for things like the tools, etc, that have no need to
-       download their own copies, but long term, the client and daemon
-       should be downloading copies of these files.  Also has a new,
-       simpler public interface.
-
-       * rc-distman.c (rc_distman_new): no rc_figure_distro anymore,
-       simply use rc_distro_get_package_type directly
-
-       * rc-world-import.c (rc_world_add_channels_from_xml): no
-       rc_figure_distro, simply use rc_distro_get_target instead
-
-2002-08-02  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-queue.c (rc_resolver_queue_process_once): Fixed
-       memory leak.
-
-       * rc-world-dump.c (rc_world_undump_from_xml): Fixed memory leak.
-
-2002-08-01  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (close_database): Reset the lock_fd to 0 after
-       closing it, so we don't go around closing other file descriptors
-       all willy nilly.
-
-2002-08-01  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_query_file): only open the database if
-       it's not already open, yo.
-
-2002-08-01  Joe Shaw  <joe@ximian.com>
-
-       * rc-world-subscriptions.c
-       (rc_world_import_subscriptions_from_xml): Keep around a list of
-       subscriptions which do not match any valid channel for this
-       session.
-       (rc_world_export_subscriptions_to_xml): Write out the unmatched
-       subscriptions, so we don't lose them anymore.
-
-2002-08-01  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_query_file): open the database read-only
-       before attempting to query the file.  This shouldn't be at all
-       necessary, but it fixes the rather bizarre hang some people were
-       getting, due to an unitialized variable in rpmlib.
-
-2002-08-01  Ian Peters  <itp@ximian.com>
-
-       * rc-world.h: rc_world_get_best_upgrade now takes a
-       subscribed_only flag to control what channels to look in
-
-       * rc-world.c (struct BestUpgradeInfo): added
-       (get_best_upgrade_cb): user_data is not a BestUpgradeInfo, of
-       which best_upgrade is an element.  Check the subscribed_only flag
-       in the info struct to filter upgrades from unsubscribed channels.
-       (rc_world_get_best_upgrade): create a BestUpgradeInfo struct,
-       initialize it with the subscribed_only flag, and pass it to the
-       cb, rather than just the best_upgrade.
-
-       * rc-package.h: rc_package_get_best_upgrade now takes a
-       subscribed_only flag
-
-       * rc-package.c: pass the subscribed_only flag to
-       rc_world_get_best_upgrade
-
-2002-07-31  Ian Peters  <itp@ximian.com>
-
-       * rc-arch.c, rc-arch.h: added
-
-       * Makefile.am: rc-arch.[ch] added as part of the build
-
-       * rc-distro.h, rc-distro.c: remove the old arch stuff, use the new
-       arch stuff, remove the NO_GLIB stuff
-
-       * rc-package.h, rc-package.c: RCPackage now has an arch field that
-       must be initialized and copied appropriately
-
-       * rc-rpmman.c (rc_rpmman_read_header): check RPMTAG_ARCH and set
-       it in the package
-
-       * rc-xml.c (RCPackageSAXContext): keep the packages in a hash
-       instead of a list, and keep the arch compat list here
-       (parser_package_end): make sure the parsed package has an arch --
-       if one was missing in the xml, set it (as a hack) to the system
-       arch.  make sure the package is compatible with the system before
-       adding it to the hash.  if that package is already present in the
-       hash, make sure ours is a better arch before adding it to the
-       hash, and removing the other.  parse an arch field out of the
-       package, if present.
-       (package_slist_build): added.  builds an slist as a hash cb func.
-       (rc_package_sax_context_done): convert the ctx hash into a list,
-       destroy the hash, return the list.  also free the arch compat list
-       here.
-       (rc_package_sax_context_new): create the package hash and the arch
-       compat list here
-       (rc_xml_node_to_package): parse an arch field, if present.  fake
-       one if necessary, as above
-       (rc_package_to_xml_node): add the arch field to the xmlNode
-
-       * rc-world-import.c (add_package_to_world): added.  hash cb func.
-       (rc_world_add_packages_to_xml): rather than just adding packages
-       one by one to the world, create a hash, just like in the SAX
-       parser, with the same logic to pick the best package/arch pair.
-
-2002-07-31  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c: Don't output the SAX parser spew normally.  Only do it
-       if the RC_SPEW_XML env var is set.
-
-2002-07-31  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c (parser_package_start): Add a comment about the deps
-       tag being ignored in the SAX parser.
-       (extract_dep_info): Extract parsing of the various dependency
-       fields, like requires, provides, etc. into here.
-       (rc_xml_node_to_package): If we get a deps tag, call
-       extract_dep_info() on our children, and set a flag.  If the flag
-       isn't set, extract our deps like we used to.
-
-2002-07-30  Ian Peters  <itp@ximian.com>
-
-       * rc-channel.c, rc-debman-general.c, rc-line-buf.c,
-       rc-verification.c: get rid of some RC_[ENTRY/EXIT]
-
-       * rc-xml.c (sanitize_string): s/gint/guint to make this comparison
-       meaningful
-
-       * rc-world-dump.c (rc_world_dump_to_xml): get rid of unused info
-       variable
-
-       * rc-debug.h, rc-debug.c: overhauled a little more.  If
-       RC_DEBUG_VERBOSE is defined, all rc_debug calls will also print
-       file, function, and line information
-
-2002-07-30  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.c, rc-packman.h, rc-rpmman.c, rc-debman.c:
-       s/_check_database/_is_database_changed, because it was bugging me
-       just that much
-
-       * rc-world.c (struct _RCWorld): remove the did_sync_with_this_lock
-       field
-       (rc_world_sync): changed the logic around quite a bit to only sync
-       at appropriate times; keep the world dirty if
-       rc_world_get_system_packages fails
-       (database_unlocked_cb): removed
-       (rc_world_register_packman): removed reference to
-       database_unlocked_cb
-       (rc_world_get_system_packages): rather than retrying a failed
-       query, return a gboolean to indicate status of the query
-
-       * rc-world.h: change prototype for rc_world_get_system_packages
-
-2002-07-30  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_verify): Initialize signature_filename
-       and payload_filename to NULL.
-
-2002-07-30  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (close_database): s/close/rc_close
-       (open_database): try to get a shared lock on the rpm database
-       prior to opening it, to avoid the rpm database locking bug
-       discovered yesterday
-
-2002-07-30  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-context.c
-       (rc_resolver_context_propagate_importance): #ifdef-ed away.
-       (mark_important_info): Added.  A new implementation of importance
-       propagation, with somewhat simpler rules.  This should do a better
-       job of picking out which info items actually matter.
-       (rc_resolver_context_foreach_info): Call mark_important_info on
-       our list.
-
-       * rc-resolver-info.c (rc_resolver_info_is_about): Added.  A
-       convenience method for testing if an info item is about a
-       particular package.
-
-       * rc-world-dump.c (rc_world_dump_to_xml): Added an argument
-       allowing extra XML to be passed in and prepended to the world
-       dump.
-       (rc_world_dump): Ditto.
-
-2002-07-30  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (depends_fill_helper): plug a small memory leak
-       (thanks, valgrind!)
-
-2002-07-29  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (rc_package_to_xml_node): Strip 8-bit characters out of
-       the package summary and description that we put into the XML.
-       This is a brute-force solution to make sure we don't end up with
-       something that libxml2 will reject due to invalid UTF-8.
-
-2002-07-27  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (rc_xml_node_to_package): Support the epoch, version
-       and release tags outside of the history section.  We need to do
-       this to ensure that system packages are properly versioned.
-       (rc_package_to_xml_node): Produce XML that rc_xml_node_to_package
-       can process.  This fixes bugs with dump/undump.
-
-2002-07-27  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.c (rc_packman_real_check_database): g_assert the
-       right function, d'oh
-
-2002-07-26  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-dump.c (add_channel_packages_cb): Removed
-       debug spew.
-
-       * rc-world.c (rc_world_sync): Added.  Basically just rescans the
-       package db for the system packages, but contains some extra logic
-       to avoid checking/scanning the database more than is absolutely
-       necessary.
-       (rc_world_conditional_sync): Conditions an rc_world_sync on a
-       channel.  If we are performing a query that is filtered on a
-       channel or channels rather than the system packages, there is no
-       need to sync at that point -- it won't change the results of the
-       actual query.
-       (database_changed_cb): Just call rc_world_sync.
-       (rc_world_register_packman): Listen for the "database_unlocked"
-       signal, use it to reset the "did_sync_with_this_lock" flag that
-       allows us to avoid syncs in some cases.
-       (rc_world_find_installed_version): Added a sync.
-       (rc_world_get_package): Added a conditional sync.
-       (rc_world_get_package_with_constraint): Added a comment explaining
-       why we don't need to sync here.
-       (rc_world_guess_package_channel): Added a comment explaining why
-       we don't need to sync here.
-       (rc_world_foreach_package): Added a conditional sync.
-       (rc_world_foreach_package_by_name): Added a conditional sync.
-       (rc_world_foreach_upgrade): Added a conditional sync.
-       (rc_world_get_best_upgrade): Added a comment explaining why we
-       don't need to sync here.
-       (rc_world_foreach_system_upgrade): Added a comment explaining why
-       we don't need to sync here.
-       (rc_world_foreach_providing_package): Added a conditional sync.
-       (rc_world_check_providing_package): Added a conditional sync.
-       (rc_world_foreach_requiring_package): Added a conditional sync.
-       (rc_world_foreach_conflicting_package): Added a conditional sync.
-       (rc_world_spew): Added a sync.
-
-       * rc-rpmman.c (rc_rpmman_class_init): Actually initialize
-       rc_packman_real_check_database.
-       
-       * rc-packman.c: Added DATABASE_LOCKED and DATABASE_UNLOCKED to the
-       signals enum.
-       (rc_packman_class_init): Define the "database_locked" and
-       "database_unlocked" signals.
-       (rc_packman_init): Initialize the lock_count to 0.
-       (rc_packman_is_locked): Added.
-       (rc_packman_lock): Tweaked to allow lock to be called multiple
-       times, with successive calls only incrementing the lock count (and
-       always succeeding).  Emit "database_locked" on the first call to
-       rc_packman_lock.
-       (rc_packman_unlock): Allow unlock to be called multiple times, and
-       do nothing if the db isn't actually locked.  On the final call
-       to rc_packman_unlock that actually unlocks the db, emit the
-       "database_unlocked" signal.
-
-       * rc-packman-private.h: Added a lock_count field to the
-       RCPackmanPrivate struct.
-
-2002-07-26  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (open_database): turns out rpm database locking is
-       broken; to make sure things work correctly, after opening the
-       database in O_RDWR, we need to use fcntl to lock the database by
-       hand.  Fun.
-       (close_database): close the db fd to release the lock
-
-       * rc-rpmman.h: add a lock_fd to the Rpmman struct
-
-2002-07-26  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman.c (verify_status): Make sure we unlock the database in
-       the successful case as well.
-
-2002-07-26  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.c, rc-packman.h (rc_packman_check_database): added
-
-       * rc-rpmman.c: expose check_database for manual checking, keep the
-       timeout with signal emmission as well
-
-       * rc-debman.c: ditto
-
-2002-07-26  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_register_packman): Connect to the packman's
-       database_changed signal.
-       (database_changed_cb): Added.  Rescans the system packages.
-
-2002-07-26  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c, rc-debman.c (check_database): pass a bool to
-       determine whether to emit the database_changed signal at all.
-       This is always set to FALSE except in the timeout function
-
-2002-07-26  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (open_database): rescan the db mtime before
-       reenabling the db watch timeout
-
-       * rc-debman.c (lock_database): ditto
-
-2002-07-26  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.c, rc-packman.h: Add _lock and _unlock methods.  Add
-       a database_changed signal.
-
-       * rc-rpmman.c, rc-rpmman.h: Remove the global lock, make each
-       function specifically ask for the minimum lock it requires.  Add
-       _lock and _unlock methods.  Add a timeout to watch for database
-       changes and emit database_changed when it does.
-
-       * rc-debman.c, rc-debman-private.h: pretty much same as above, but
-       I'm less confident about this code.  It's not really my fault,
-       though, because the locking in debian really sucks.  So, let's
-       call it alpha quality.  *shrug*
-
-2002-07-25  Ian Peters  <itp@ximian.com>
-
-       * rc-package.c (rc_package_slist_copy): actually copy.  duh.
-
-2002-07-25  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c (RCPackageSAXContext): Add an obsoletes list.
-       (parser_package_start): If the tag is named "conflicts", check to
-       see if there is an obsoletes attribute and set the dep list to be
-       the temporary obsoletes list.  This handles the
-       <conflicts obsoletes="1">...</conflicts> case.
-       (parse_dep_attrs): Change to return a gboolean on whether or not
-       the dep is actually an obsolete.  This handles the
-       <conflicts><dep blah blah obsoletes="1"/></conflits> case.
-       (parser_dep_start): If parse_dep_attrs() returns TRUE, add it to
-       the temporary obsoletes list.  Otherwise, tack it onto the current
-       dep list (should only ever be conflicts).
-       (parser_package_end): Concatenate the actual obsolete list (from
-       <obsoletes></obsoletes>) with the one in the temporary list.
-
-2002-07-25  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): fix a small memory leak caught
-       by Jon
-
-2002-07-25  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (conflict_process_cb): If this is actually an
-       obsolete, log an obsoletes info item instead of a conflicts-with
-       info item.
-
-       * rc-resolver-info.c (rc_resolver_info_obsoletes_new): Added.
-       (rc_resolver_info_to_str): Added handling of _TYPE_OBSOLETES.
-
-       * rc-resolver-info.h: Added RC_RESOLVER_INFO_TYPE_OBSOLETES to
-       RCResolverInfoType enum.
-
-2002-07-25  Ian Peters  <itp@ximian.com>
-
-       * rc-package.h, rc-package.c (rc_package_slist_copy): added
-
-       * rc-rpmman.c (rc_rpmman_transact): massively fixed.  Now only
-       runs one transaction, instead of two.  Filters out packages from
-       the remove list that are obsoleted by packages in the install
-       list, which gets rid of the entire problem we had that caused us
-       to use two transactions in the first place.
-
-2002-07-25  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: whoops, fix _transact in the case where the
-       to-be-installed package is not an upgrade
-
-2002-07-25  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.h, rc-packman.c: rc_packman_transact takes a final
-       gboolean, if set to TRUE, the transaction is actually run, if
-       FALSE, equivalent to settting RC_JUST_KIDDING.
-
-       * rc-rpmman.c, rc-debman.c: update to new _transact.
-
-2002-07-25  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-debman.c (query_all_read_line_cb): The epoch is now a
-       bitfield, so we can't take the address of it.
-
-       * rc-xml.c (rc_channel_to_xml_node): Added.
-
-       * rc-channel.h: Removed the prototype for rc_xml_node_to_channel,
-       which doesn't actually exist.
-
-       * rc-package-dep.h: Make the relation a 28-bit bitfield,
-       shaving a few bytes off of our struct.
-
-       * rc-package-spec.h: Make the epoch a 29-bit bitfield, shaving
-       a few bytes off of our struct.
-
-       * rc-dep-or.c (rc_dep_string_to_or_dep_slist): The epoch is now a
-       bitfield, so we can't take the address of it.
-
-       * rc-world-import.c (debian_packages_helper): The epoch is now
-       a bitfield, so we can't take the address of it.
-
-       * rc-world.c: (rc_world_dump): Moved to rc-world-dump.c, renamed
-       rc_world_dump_to_xml.
-
-       * rc-world-dump.c (rc_world_dump_to_xml): Added.  Basically a
-       slightly revised version of the rc_world_dump function that used
-       to be in rc-world.c.
-       (rc_world_dump): Added.  A convenience routine that writes the xml
-       to a buffer.
-       (rc_world_undump_from_xml): Added.  Reassembles the dump
-       information into the world.
-       (rc_world_undump): Added.  A convenience routine that reads the
-       xml from a buffer.
-
-       * libredcarpet.h: Added #include "rc-world-dump.h"
-
-2002-07-25  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.c, rc-packman.h: rc_packman_query now returns an
-       RCPackageSList
-
-       * rc-rpmman.c: rc_rpmman_query, rc_rpmman_query_v3, and
-       rc_rpmman_query_v4 now all return an RCPackageSList.  Streamlined
-       rc_rpmman_read_header to now take an RCPackage, got rid of
-       rc_rpmman_check_match, and fixed rc_rpmman_transact to use _query
-       properly.
-
-       * rc-debman.c: rc_debman_query now returns an RCPackageSList.
-       rc_debman_find_file updated to use _query properly.
-
-2002-07-24  Peter Bowen  <pzb@ximian.com>
-
-       * rc-xml.c (rc_package_to_xml_node): Put the dependencies in a 
-       deps tag.  This allows the addition of additional dependency types
-       without changes to the parser used in the server code.
-
-2002-07-23  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-import.c (rc_world_add_channels_from_xml): Look for a
-       channel alias in the XML and use it, if possible.
-       (rc_world_add_channel_from_buffer): Added a new argument to
-       specify the channel's alias.  Also, now returns a boolean
-       indicating if adding the packages was successful or not.
-       
-       * rc-world.c (rc_world_add_channel): Added a new argument to
-       specify the channel's alias.
-       (rc_world_get_channel_by_alias): Added.
-
-       * rc-channel.c (rc_channel_get_alias): Added.  An accessor for the
-       alias field.
-
-       * rc-channel-private.h: Added "alias" field to the RCChannel
-       struct.
-
-       * rc-queue-item.c (install_item_process): Generate a "needed by"
-       info item whenever we can.  For some weird reason we were
-       explicitly not creating the proper info items in the case of
-       upgrades.
-
-2002-07-22  Joe Shaw  <joe@ximian.com>
-
-       * rc-debug.c (rc_debug): Changed the signature of the RCDebugFn
-       callback to pass in the level of the current message.
-
-2002-07-21  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-context.c (rc_resolver_context_uninstall_package):
-       Fix a totally harmless logical glitch.
-
-       * rc-queue-item.c (require_item_process): Gracefully handle the case 
-       of ->requiring_package being NULL.  This happens when a requirement
-       is added as an extra dependency.
-       
-
-2002-07-15  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-context.c (rc_resolver_context_foreach_info): Filter
-       by package and priority before we merge info items, not
-       afterwards.  Since merging is a relatively expensive operation,
-       operating on a much shorter list can result in a substantial
-       improvement in performance when dealing with complex resolutions
-       (i.e. removing glibc).
-
-2002-07-12  Frank Belew  <frb@ximian.com>
-
-       * Makefile.am: add libredcarpet_a_SOURCES to fix make dist
-
-2002-07-12  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman.c (rc_packman_query_file): Make sure we're returned a
-       valid package (and not NULL) before we try to set things in it.
-
-2002-07-12  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): Fix a cast
-       that was causing a compiler warning.
-
-2002-07-11  Joe Shaw  <joe@ximian.com>
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): When we are
-       building the initial queue, add the extra dependencies to the
-       queue.
-
-2002-07-11  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_extra_dependency): A
-       corresponding "extra dependency" function, which just creates
-       a RCQueueItem_Require item for the given RCPackageDep and adds
-       it to the item queue.
-
-       * rc-resolver.c (rc_resolver_add_extra_dependency): Add an "extra
-       dependency", which is just a RCPackageDep which we want to have
-       satisfied.
-       (rc_resolver_free): Clean up our list of extra dependencies.
-
-       * rc-xml.c (rc_package_to_xml_node): Add the file_size and
-       installed_size to the XML.
-
-       * rc-packman.c (rc_packman_query_file): Stat the file and set
-       the file_size of the RCPackage, but only if the implementation
-       of query_file didn't do so already.
-
-2002-07-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c (rc_package_to_xml_node): Add back in writing out the
-       epoch, version, and release to the XML file.
-
-2002-07-10  Joe Shaw  <joe@ximian.com>
-
-       * rc-util.c (rc_compress_memory): Added.  Returns a zlib
-       compressed byte array, like rc_uncompress_memory().
-
-2002-07-09  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (add_channel_xml_cb): Include the channel name and ID
-       when listing the channel packages.
-
-2002-07-09  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_dump): First pass at a function which will
-       XMLify the RCWorld.  Currently dumps subscriptions, system
-       packages, and packages in each channel, so output is huuuuuuuuge.
-
-       * rc-world-import.c: Fix a couple of g_error()s which should be
-       g_warning()s.
-
-2002-07-04  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c: Added "own_dep" flag to the RCPackageAndDep struct.
-       (rc_package_and_dep_new_package): Set own_dep to TRUE, since we
-       create the RCPackageDep ourselves.
-       (rc_package_and_dep_new_pair): Just use the passed-in RCPackageDep
-       pointer and set own_dep to FALSE.  We used to copy the object, but
-       that ended up consuming a lot of memory unnecessarily.
-       (rc_package_and_dep_free): Only free the RCPackageDep if own_dep
-       is TRUE.
-
-       * rc-distro.c (rc_figure_distro): Fixed a small memory leak.
-
-       * rc-world-import.c (rc_world_add_channels_from_xml): Fixed a
-       small memory leak.
-
-2002-07-02  Joe Shaw  <joe@ximian.com>
-
-       * rc-line-buf.c (rc_line_buf_class_init): Set the parameter type
-       to INT from ENUM, since the latter wasn't working.
-
-       * rc-rpmman.c (split_rpm): Don't free uninitialized memory.  Doh.
-
-2002-07-01  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (rc_world_guess_package_channel): Added.  Guesses
-       which channel a package came from.      
-
-2002-06-14  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman.h: Add a RC_PACKMAN_STEP_PREPARE
-
-       * rc-rpmman.c (transact_cb): Set the step to be
-       RC_PACKMAN_STEP_PREPARE instead of RC_PACKMAN_STEP_CONFIGURE,
-       since that's more accurate as to what it's actually doing.
-
-2002-06-14  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (split_rpm): Use g_file_open_tmp () instead of
-       mkstemp () things like TMPDIR are obeyed.
-       (rc_rpmman_verify): Don't need to bother passing in templates to
-       split_rpm ().
-
-2002-06-13  Joe Shaw  <joe@ximian.com>
-
-       * rc-util.c (rc_rmdir): Argument should be const.
-
-2002-06-12  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (GTKFLUSH): Reenable this macro so we can get decent
-       responsiveness from the RPM transaction callbacks.
-
-2002-06-12  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c (parser_update_end): Get the description tag.  Must
-       have missed it before.
-
-2002-06-12  Joe Shaw  <joe@ximian.com>
-
-       * rc-xml.c (parser_update_end): Assign the installed size to the
-       correct struct element.
-
-2002-06-11  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package.c (rc_package_get_latest_update): Just return NULL if
-       package->history is NULL, rather than complaining via
-       g_return_val_if_fail.
-
-2002-06-07  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_foreach_channel): Protect against removing
-       a channel from inside a foreach function.
-
-2002-06-06  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (mark_status_read_line_cb): remove an unused
-       variable
-
-       * rc-rpmman.c (transact_cb): handle two more enum cases to kill a
-       warning
-
-2002-06-06  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: no more RC_RPM4, now check #if RPM_VERSION >= 40000
-
-2002-06-05  Ian Peters  <itp@ximian.com>
-
-       * rc-package-spec.c (rc_package_spec_version_to_str): man solaris
-       sucks
-
-2002-06-05  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (parse_version): added, guts of parse_versions
-       (parse_versions): just calls parse_version now
-
-2002-06-05  Ian Peters  <itp@ximian.com>
-
-       * rc-verification.h: add RC_VERIFICATION_TYPE_ALL, add bit values
-       to RC_VERIFICATION_TYPE_*
-
-       * rc-packman.h, rc-packman.c: rc_packman_real_verify
-       takes a type argument
-
-       * rc-rpmman.c (rc_rpmman_verify): only run the requested
-       verifications as per the type parameter
-
-       * rc-debman.c (rc_debman_verify): only run the requested
-       verifications as per the type parameter
-
-2002-06-05  Ian Peters  <itp@ximian.com>
-
-       * rc-package-spec.c (rc_package_spec_version_to_str): fix a stupid
-       solaris crash, because solaris sucks
-
-2002-06-04  Ian Peters  <itp@ximian.com>
-
-       * rc-world-import.c (debian_packages_helper): this package update,
-       like all of them in debian, has an epoch
-       * rc-xml.c (parse_dep_attrs): set has_epoch when we find an epoch
-       (rc_xml_node_to_package): has_epoch isn't always 1, it depends on
-       the update spec
-       (rc_xml_node_to_package_dep_internal): don't blindly check for an
-       epoch with a default value, check if there is one instead, and set
-       has_epoch appropriately
-
-2002-06-04  Ian Peters  <itp@ximian.com>
-
-       * rc-package-spec.h (struct _RCPackageSpec): add a has_epoch
-       bitfield
-       (rc_package_spec_init): take a has_epoch parameter
-       (rc_package_spec_equal): take the has_epoch flag into account
-
-       * rc-package-spec.c (rc_package_spec_init): has_epoch parameter
-       (rc_package_spec_copy): has_epoch parameter
-       (rc_package_spec_to_str, rc_package_spec_to_str_static,
-       rc_package_spec_version_to_str,
-       rc_package_spec_version_to_str_static): rewritten to not suck
-       (rc_package_spec_equal): take the has_epoch flag into account
-
-       * rc-package-dep.h (rc_package_dep_new): take a has_epoch flag
-
-       * rc-package-dep.c (rc_package_dep_new): has_epoch flag, pass it
-       to rc_package_spec_init
-       (rc_package_dep_new_from_spec): pass the has_epoch from the spec
-       to rc_package_dep_new
-       (rc_package_dep_verify_relation): reformat flow, make
-       modifications as appropriate for the has_epoch flag according to
-       comments in the code from pzb
-
-       * rc-debman-general.c (rc_debman_fill_depends): rc_package_dep_new
-       takes has_epoch now
-
-       * rc-dep-or.c (rc_dep_or_new_provide): rc_package_dep_new never
-       has an epoch here
-
-       * rc-world-import.c (rc_world_parse_debian): all debian packages
-       have epochs
-
-       * rc-debman.c (query_all_read_line_cb): all debian packages have
-       epochs
-
-       * rc-rpmman.c (rc_rpmman_read_header): take a has_epoch parameter,
-       and use it wisely
-       (parse_versions): take a has_epochs parameter, use it right
-       (depends_fill_helper): parse_versions needs has_epochs, pass that
-       into rc_package_dep_new
-       (rc_rpmman_depends_fill): when we provide ourselves, note whether
-       we have an epoch or not.  when we provide or require files, they
-       never have epochs
-       (rc_rpmman_check_match): take has_epoch into account
-       (rc_rpmman_query_file, rc_rpmman_query_all_v4,
-       rc_rpmman_query_all_v3, rc_rpmman_find_file_v4,
-       rc_rpmman_find_file_v3): take has_epoch into account
-       (rc_rpmman_version_compare): take has_epoch into account as per
-       pzb's comments in the code
-
-       * rc-xml.c: only write out epochs if has_epoch is set, set
-       has_epoch when we find an epoch in the xml -- if there's no epoch
-       in the xml, has_epoch remains 0
-
-2002-06-04  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c, rc-debman.h: compiles again against glib 2.0
-
-2002-06-03  Joe Shaw  <joe@ximian.com>
-
-       * rc-package.c (rc_package_slist_ref): Added.
-       (rc_package_slist_unref): Don't free the list after unreffing it.
-
-       * rc-rpmman.c (rc_rpmman_query_all_v3):
-       * rc-world-import.c (rc_world_parse_helix): Free the list after
-       unreffing it here.
-
-2002-06-03  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (install_item_process): Fix the relation tag on
-       the RCPackageDep we build to find conflicting packages.  This
-       fixes a bug with versioned conflicts.
-
-       * rc-debug.c (rc_debug): Make the format string arg const.
-
-2002-05-30  Joe Shaw  <joe@ximian.com>
-
-       * rc-world.c (rc_world_get_packman): Get the packman associated
-       with the RCWorld.
-       (rc_world_get_system_packages): rc_packman_get_reason() returns a
-       const gchar *, so declare reason const and don't free it afterward.
-
-2002-05-29  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-subscriptions.c: Added.  Functions for
-       importing/exporting the RCWorld's subscription data to/from XML.
-
-       * rc-world-import.c (rc_world_add_packages_from_buffer): Added.  We
-       want to make maximum use of our cool SAX parser.
-
-       * rc-channel.c (rc_channel_get_last_update): Added.
-
-2002-05-28  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world-import.c (rc_world_add_channels_from_xml): Added.
-       Processes the red-carpet channel XML file, filtering out channels
-       that don't match our distro.
-
-       * rc-util.c (rc_uncompress_xml): Added.  Uncompresses & xml-parses
-       a block of memory.
-
-       * rc-debug.c (rc_debug_set_display_handler): Added the ability to
-       set a displayed message handler.
-       (rc_debug): If a displayed message handler is set, use it.
-
-       * rc-channel.c: Removed rc_chanel_parse_xml, Worldifiying it and
-       moving it to rc-world-import.c.
-
-       * rc-world.c (rc_world_add_channel): Added debug spew.
-
-2002-05-23  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver.c: (rc_resolver_add_subscribed_channel) Removed.
-       (rc_resolver_resolve_dependencies): Don't worry about propogating
-       any lists of subscribed channels.
-
-       * rc-resolver-context.c
-       (rc_resolver_context_get_channel_priority): Get the subscription
-       status directly from the channel.
-
-       * rc-channel.c (rc_channel_subscribed): Added.
-       (rc_channel_set_subscription): Added.
-
-       * rc-channel-private.h: Added subscribed flag (and made two other
-       gbooleans into single-bit entries.)
-
-       * rc-world.c (rc_world_register_packman): The beginnings of
-       our RCWorld/RCPackman integration...
-       (rc_world_get_system_packages): Use the packman to find all of
-       the packages installed on the system and store them in the world.
-
-2002-05-23  Joe Shaw  <joe@ximian.com>
-
-       * rc-util.c (rc_buffer_map_file): Added, mmap()s a file into an
-       easy-to-use structure!
-       (rc_buffer_unmap_file): Unmaps an RCBuffer.
-
-2002-05-23  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-packman.h: Don't include rc-packman-private.h; actually make
-       it private instead.
-
-       * Makefile.am: Fixed to install libredcarpet and its headers like
-       any other library.
-
-       * rc-package.c (rc_package_get_best_upgrade): Added.
-
-2002-05-10  Jon Trowbridge  <trow@ximian.com>
-
-        * rc-queue-item.c (install_item_process): When installing,
-        uninstall any packages that explicitly conflicts with us.
-
-        * rc-world.c (rc_world_new): Initialize ->conflict_by_name.
-        (rc_world_freeze): Freeze ->conflict_by_name.
-        (rc_world_thaw): Thaw ->conflict_by_name.
-        (rc_world_add_package): Populate ->conflict_by_name.
-        (rc_world_foreach_conflicting_package): Added.  Iterate over
-        conflicts.
-
-       * rc-xml.c (rc_package_to_xml_node): Properly write out obsoletes.
-
-2002-05-09  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package.c (rc_package_unref): Unref our channel.
-
-       * rc-xml.c (parser_toplevel_start): Ref our channel.
-       (rc_xml_node_to_package): Ref our channel.
-
-       * rc-world-import.c (rc_world_add_channel_from_buffer): Renamed
-       from rc_world_parse_channel, and better integrated with the new
-       "the world constructs and contains all channels".
-       (rc_world_parse_debian): Ref our channel.
-
-       * rc-world.c (rc_world_free): Set the channel's world pointer to
-       NULL before we unref it.
-       (rc_world_add_channel): Store the world pointer inside the
-       channel.
-       (rc_world_remove_channel): Set the channel's world pointer to
-       NULL before we unref it.
-
-       * rc-channel.c (rc_channel_ref): Added.
-       (rc_channel_unref): Added.
-       (rc_channel_foreach_package): Added.  Use the channel's
-       RCWorld (which we now carry around inside of the struct)
-       to iterate over the channel's packages.
-       (rc_channel_package_count): Added.
-
-       * rc-channel-private.h: Store the associated
-       RCWorld * in the channel's struct.
-
-       * rc-channel-private.c (rc_channel_new): Set refs to 1 initially.
-       (rc_channel_free): Removed.
-
-2002-05-08  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-dep.c, rc-package-dep.h (rc_package_dep_new): The
-       string arguments should really be const.
-
-       * rc-package-spec.c, rc-package-spec.h (rc_package_spec_init): Ditto.
-
-2002-05-07  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c: Include rc-channel-private.h.
-
-       * rc-world-import.c: Include rc-channel-private.h.
-
-       * rc-world.c: Moved the RCWorld struct definition into the .c file
-       to make it opaque.
-       (rc_world_free): Free our channels.
-       (rc_world_add_channel): Added.  Creates a new channel and stores
-       it in the RCWorld.
-       (rc_world_remove_channel): Added.
-       (rc_world_foreach_channel): Added.
-       (rc_world_get_channel_by_name): Added.
-       (rc_world_get_channel_by_id): Added.
-       (rc_world_foreach_system_upgrade): Used to be called
-       rc_world_foreach_system_package_with_upgrade, but that was just
-       too long.
-       
-       * rc-package.c (rc_package_to_str): Use rc_channel_get_name
-       accessor function.
-
-       * rc-channel.c: Moved rc_channel_new and rc_channel_free to
-       rc-channel-private.c.
-       (rc_channel_get_id): Added.
-       (rc_channel_get_name): Added.
-       (rc_channel_get_description): Added.
-       (rc_channel_get_type): Added.
-       (rc_channel_slist_free): Removed.
-
-       * rc-channel-private.c (rc_channel_new): Moved from rc-channel.c.
-       (rc_channel_free): Moved from rc-channel.c.
-
-       * rc-channel-private.h: Moved the RCChannel struct into a private
-       header to make it opaque.
-
-2002-05-06  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c: (hashed_slist_*): Added a set of functions for
-       dealing with hashtables of slists.  This gets rid of our
-       extensive use of g_slist_append... now all list additions
-       are done via prepends.
-       (remove_packages_generic): Removed.
-       (remove_package_structs_generic): Removed.
-       (rc_world_new): Use hashed slists.
-       (rc_world_free): Use hashed slists.
-       (rc_world_add_package): Use hashed slists.
-       (remove_package_cb): Use hashed slists.
-       (remove_package_struct_cb): Use hashed slists.
-       (rc_world_remove_package): Use hashed slists.
-       (remove_package_by_channel_cb): Use hashed slists.
-       (remove_package_struct_by_channel_cb): Use hashed slists.
-       (rc_world_remove_packages): Use hashed slists.
-       (rc_world_find_installed_version): Use hashed slists.
-       (rc_world_get_package): Use hashed slists.
-       (rc_world_foreach_package): Use hashed slists.
-       (rc_world_foreach_package_by_name): Use hashed slists.
-       (rc_world_foreach_providing_package): Use hashed slists.
-       (rc_world_check_providing_package): Use hashed slists.
-       (rc_world_foreach_requiring_package): Use hashed slists.
-
-       * rc-resolver-info.c (rc_resolver_info_misc_add_action): Added.
-       (rc_resolver_info_misc_add_trigger): Added.  These two functions
-       are related to improved error reporting in the dependency code.
-
-       * libredcarpet.h: include rc-xml.h.
-
-2002-05-02  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-xml.c (sax_end_document): Set ctx->text_buffer to NULL so
-       that we won't double-free it.
-
-       * rc-xml.c (sax_end_document): Just to be sure, free
-       ->text_buffer.
-       (parser_package_end): Set our package variables using a
-       g_strstripped version of ->text_buffer.
-       (parser_update_end): Set of update variables using a g_strstripped
-       version of ->text_buffer.
-       (sax_end_element): Clear ->text_buffer when we hit channel or
-       subchannel elements.
-       (sax_characters): If we get multiple sax_characters calls in a
-       row, concatenate the characters into text_buffer instead of
-       leaking/dropping the previous characters.
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): Don't leak the
-       split resolver queue.
-
-       * rc-xml.c (parser_package_end): strdup the version and release
-       when copying the update spec info to the package spec, thus
-       avoiding a segfault when the package is unrefed.
-       (parser_update_end): Use the rc_package_add_update instead of
-       directly accessing the package's ->history.
-       (rc_package_sax_context_done): s/rc_package_free/rc_package_unref/
-       (rc_xml_node_to_package): Use rc_package_add_update.
-       (rc_xml_node_to_package): strdup the version and release when
-       copying the update spec info to the package spec.
-
-       * rc-world.c (rc_package_and_dep_new_package): Added as a
-       convenience function.
-       (rc_package_and_dep_new_pair): Added as a convenience function.
-       (rc_package_and_dep_free): Added as a convenience function.
-       (rc_world_free): Actually try to free all of our resources when we
-       free the world.  Previously we've just leaked with gusto.
-       (rc_world_add_package): Use our rc_package_and_dep_* convenience
-       functions.
-       (remove_package_structs_generic): Use our rc_package_and_dep_*
-       convenience functions.  Since we no longer have RCPackageAndSpec
-       structs, this code now is slightly less generic, and thus easier
-       to understand.
-
-       * rc-world-import.c (rc_world_add_packages_from_xml): Unref
-       package after adding it to the world.
-       (rc_world_parse_helix): Unref package after adding it to the
-       world.
-       (rc_world_parse_debian): Unref package after adding it to the
-       world.
-       (debian_packages_helper): Call rc_package_add_update instead
-       of directly manipulating the package's ->history.
-
-       * rc-package.c (rc_package_new): Add leak-checking code.
-       (rc_package_unref): Add leak-checking code.
-       (rc_package_spew_leaks): Added.  If leak-checking is enabled,
-       dump a list of all leaked packages.
-       (rc_package_add_update): Added.
-
-       * rc-package-update.c (rc_package_update_free): Don't cast the
-       update to a spec, just pass a pointer to that element of the
-       structure.
-
-2002-05-01  Joe Shaw  <joe@ximian.com>
-
-       * Makefile.am: Add rc-xml.[ch].
-
-       * rc-package-dep.[ch], rc-package-update.[ch], rc-package.[ch]:
-       Move the DOM XML routines out of these files.
-
-       * rc-xml.c: New file, contains the DOM routines above and a new
-       SAX parser for packageinfo files.
-
-       * rc-util.c (rc_string_to_guint32_with_default): Added.
-
-       * rc-world-import.c (rc_world_parse_helix): Conditionalize whether
-       the SAX or DOM parser is used depending on the RC_OLD_XML
-       environment variable.
-
-2002-05-01  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-packman.c (rc_packman_query_file_list): Use rc_package_unref.
-
-       * rc-rpmman.c (rc_rpmman_query_all_v3): Use
-       rc_package_slist_unref.
-       (rc_rpmman_transact): Use rc_package_unref instead of _free.
-
-       * rc-world-import.c (rc_world_parse_debian): Use rc_package_new
-       to create an RCPackage, not g_new0.
-
-       * rc-world.c (rc_world_add_package): Ref our packages when added.
-       (remove_packages_generic): Unref our packages when removed.
-
-       * rc-package.c (rc_package_new): Set initial refcount to 1.
-       (rc_package_ref): Added.
-       (rc_package_unref): Added.
-       (rc_package_free): Removed.
-       (rc_package_slist_unref): Created from rc_package_slist_free.
-
-2002-04-30  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c (rc_figure_distro): The semantics of the
-       g_strsplit() function changed in glib2.  Update.
-
-       * *.[ch]: Update libxml header includes, check the xmlNode's types
-       to ensure that we only get XML_NODE_ELEMENTs and not
-       XML_NODE_TEXTs which break the fragile DOM parsing.
-       
-2002-04-30  Jon Trowbridge  <trow@ximian.com>
-
-       * Ported to glib2.
-
-2002-04-24  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (require_item_process): Attach the requiring
-       package to the "There are no installable providers..." log entry.
-       (require_item_process): Attach both packages foo and bar to the
-       "Upgrade to foo to avoid removing bar..." log entry.
-       (conflict_process_cb): Attach packages to the "A conflict over foo
-       (bar) requires..." log entry, and flag it as an error.  Attach
-       packages to the "Marking foo as uninstallable due to conflicts..."
-       log entry.
-       * rc-resolver-context.c (rc_resolver_context_install_package):
-       "Can't install foo since it is already marked as needing to be
-       uninstalled" and "Can't install foo, since a package of the same
-       name..."  are error conditions, so add them to the log via
-       _add_error_str.
-       (rc_resolver_context_uninstall_package): "Can't uninstall the
-       to-be-installed..." is an error condition, log it via
-       _add_error_str.
-       (rc_resolver_context_invalidate): Removed.
-       (rc_resolver_context_add_info): Set the propagated_importance flag
-       to FALSE.  If the info item that we are adding is flag as an
-       error, invalidate the context.  This replaces the need for
-       explicit calls to rc_resolver_context_invalidate.
-       (rc_resolver_context_add_error_str): Added.  A convenience routine
-       for logging errors.
-       (rc_resolver_context_propagate_importance): Repeatedly walk across
-       the log items, flagging as important any items that are mentioned
-       in an "important" or "error" info item.  We repeat this process
-       until no new items are flagged.  The point of this is, in the case
-       of an error, to try to distinguish a subset of the entire log and
-       allow us to highlight the "important" log entries.
-       (rc_resolver_context_foreach_info): Call _propagate_importance
-       before iterating.
-       (spew_cb): Preceed "important" items with "[!!!!!]" and "error"
-       items with "[ERROR]" when spewing.
-
-       * rc-resolver-info.c (rc_resolver_info_add_related_package):
-       Added.  Pushes a package onto the package_list.
-       (rc_resolver_info_is_error): Added.  Accessor for is_error flag.
-       (rc_resolver_info_flag_as_error): Added.  Sets is_error to TRUE.
-       (rc_resolver_info_is_important): Added.  Returns is_error ||
-       is_important.  After all, errors are inherently important. :)
-       (rc_resolver_info_flag_as_important): Added.  Sets is_important to
-       TRUE.
-       (rc_resolver_info_copy): Copy is_error and is_important flags.
-
-       * rc-resolver-info.h: Add is_error and is_important
-       flags to the RCResolverInfo struct.
-
-2002-04-18  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (rc_queue_item_branch_is_empty): Added.
-       (require_item_process): If none of the potential upgrades are
-       actually installable, we have no choice but to just go ahead and
-       remove the package in question.
-
-2002-04-16  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package.c (rc_package_to_xml_node): Restored.
-
-       * rc-package-update.c (rc_package_update_to_xml_node): Restored.
-
-       * rc-package-dep.c (rc_package_dep_or_slist_to_xml_node): Restored.
-       (rc_package_dep_to_xml_node): Restored.
-
-2002-04-16  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package.c (rc_xml_node_to_package): Treat a conflicts section
-       in the XML as obsoletes if the 'obsoletes' property is set.
-
-2002-04-12  Peter Bowen  <pzb@ximian.com>
-
-       * rc-distro.c: YDL2.2, MDK8.2, SuSE 8.0, RHL7.3, and Debian 3.0 support
-
-       * rc-rpmman.c (vercmp): use STRICT_RPM_VERCMP define to decide sort
-                               order for alpha and numeric chars and whether
-                               we string "mdk" from the end of strings
-
-2002-04-11  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (install_item_process): Check to make sure that
-       a package with the same version number isn't already installed.
-       If it is, do nothing.  (Previously this case got treated like an
-       upgrade, and we would try to add and remove the same package,
-       which is not cool.)
-
-2002-04-09  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package.c (rc_xml_node_to_package): Check if the "obsoletes"
-       property is set in a RCPackageDep in the conflict section.  If so,
-       treat it like an obsolete.
-
-       * rc-world.c: Moved rc_world_add_packages_from_xml and
-       rc_world_add_packages_from_slist to rc-world-import.c.  Added some
-       gtk-doc docs.
-
-       * rc-world-import.c (rc_world_add_packages_from_xml): Moved here
-       from rc-world.c.
-       (rc_world_add_packages_from_slist): Moved here from rc-world.c.
-
-2002-03-29  Peter Bowen  <pzb@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_version_compare): always use epochs in
-       version comparisions
-
-2002-03-27  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (install_item_process): Add support for
-       _DUE_TO_OBSOLETE.  If the conflict item is generated from an
-       obsolete, flag it as such.
-       (require_process_cb): Add support for _DUE_TO_OBSOLETE.
-       (conflict_process_cb): If the conflict comes from an obsolete,
-       flag the uninstall items as such.  Add support for
-       _DUE_TO_OBSOLETE.
-       (conflict_item_process): If the conflict item comes from an
-       obsolete, set a flag in the ConflictProcessInfo struct.
-       (uninstall_item_process): Pass a flag to
-       rc_resolver_context_uninstall_package which indicates whether or
-       not the uninstall is due to an obsolete.
-
-       * rc-resolver-context.c (rc_package_status_to_string): Add support
-       for _DUE_TO_OBSOLETE.
-       (rc_resolver_context_set_status): Add support for
-       _DUE_TO_OBSOLETE.
-       (rc_resolver_context_install_package): Add support for
-       _DUE_TO_OBSOLETE.
-       (rc_resolver_context_upgrade_package): Add support for
-       _DUE_TO_OBSOLETE.
-       (rc_resolver_context_uninstall_package): Added an argument to
-       indicate whether or not this uninstall is due to an obsolete.
-       Change the status accordingly.
-       (rc_resolver_context_package_is_absent): Add support for
-       _DUE_TO_OBSOLETE.
-       (uninstall_pkg_cb): Add support for _DUE_TO_OBSOLETE.
-       (requirement_possible_cb): Add support for _DUE_TO_OBSOLETE.
-
-       * rc-resolver-context.h: Added new element to RCPackageSpec enum:
-       RC_PACKAGE_STATUS_TO_BE_UNINSTALLED_DUE_TO_OBSOLETE.
-
-       * rc-package.h: Added a list of obsoletes to the RCPackage struct.
-
-       * rc-package.c (rc_package_copy): Copy the list of obsoletes.
-       (rc_package_free): Free the list of obsoletes.
-       (rc_xml_node_to_package): Read obsoletes in from XML.
-
-       * rc-rpmman.c (rc_rpmman_depends_fill): Store obsoletes in a
-       separate list, instead of just treating them as conflicts.
-
-       * rc-queue-item.c (install_item_process): Generate conflict items
-       from a package's obsoletes.
-
-2002-03-26  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (rc_world_add_packages_from_xml): Added.
-       (rc_world_get_package): Fixed input variable checks.
-       (rc_world_get_package_with_constraint): Added.  Replaces the
-       similarly-named function from rc-package-info.c.
-
-       * rc-verification.c: #include <stdlib.h> to get rid of
-       compiler warnings. 
-       (rc_verify_gpg): Removed unused local variable.
-
-       * rc-resolver.c: Each RCResolver now carries around an RCWorld,
-       which is to be used for all package queries related to that
-       resolution.
-       (rc_resolver_set_world): Added.
-       (rc_resolver_get_world): Added.  Use the global RCWorld as a
-       fallback.
-       (rc_resolver_verify_system): Use our local RCWorld.
-       (rc_resolver_resolve_dependencies): Initialize our root context
-       with our local world.
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_install):
-       Initialize the install item using the RCResolverContext's RCWorld.
-       (rc_resolver_queue_add_package_to_remove): Ditto with the
-       uninstall item.
-       (rc_resolver_queue_add_package_to_verify): Ditto with the require
-       and conflict items.
-
-       * rc-resolver-context.c: Each RCResolverContext now carries around
-       an RCWorld, which it uses for all package queries.
-
-       * rc-queue-item.c: Each RCQueueItem now carries around an RCWorld,
-       which it uses for all package queries.  This change leads to a
-       bunch of small changes throughout the API and in the code.
-
-       * rc-package.c (rc_xml_node_to_package): If a package doesn't have
-       any history, we try to guess the version number information by
-       looking for a provide with the same name as the package.
-
-       * rc-package-spec.c (rc_package_spec_get_type): Added an
-       RCWorld argument.
-
-       * rc-package-info.c (rc_channel_parse): Took all of this code
-       and...
-
-       * rc-world-import.c (rc_world_parse_channel): ...moved it
-       here, along with some renaming.
-
-       * rc-dep-or.c: Removed rc_dep_or_process_system_and_channels and
-       associated helper functions.
-
-       * rc-channel.c: Removed inclusion of "rc-package-info.h".
-       Removed rc_xml_node_process and rc_xml_node_to_channel.
-
-2002-03-22  Peter Bowen  <pzb@ximian.com>
-
-       * rc-rpmman.c (vercmp): add comments, remove #if 0 code,
-                               small amount of refactoring
-       (rc_rpmman_version_compare): bring code inline with rpmlib
-
-2002-03-20  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: minor fix to how we parse EVRs
-
-2002-03-20  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (rc_world_foreach_requiring_package): The order of
-       the arguments to rc_package_dep_verify_relation matters, or
-       so I'm told...
-
-       * rc-world.c (rc_world_get_best_upgrade): Added.  Returns the best
-       upgrade for a package, or NULL if none is available.  Right now
-       this function just returns the package of the same name with the
-       highest version number, but it would be nice to do something a bit
-       more nuanced later.
-       (rc_world_foreach_system_package_with_upgrade): Added.  Iterates
-       across the installed system packages, invoking the callback for
-       each one that has an upgrade.
-
-2002-03-19  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (rc_world_get_package): Added.  Looks up a
-       package by channel and name.
-
-2002-03-18  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-info.c (rc_resolver_info_merge): Fix logic bug
-       that was causing non-duplicate _TYPE_MISC info messages to be
-       incorrectly "merged".
-
-2002-03-18  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: minor build fixes for static linking, ie solaris
-
-2002-03-14  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.h: added rpmExpandNumeric
-
-       * rc-rpmman.c: if we're using a new enough version of RPM, and
-       there are stale concurrent db files in /var/lib/rpm, and we're not
-       supposed to be using concurrent access shit, clean up after the
-       library.
-
-2002-03-14  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): reverse the order we run
-       removes and installs in, to work around some previously unknown
-       behaviour with rpm obsoletes.  Also, make one error fatal instead
-       of abort, so that the client will exit correctly.
-
-2002-03-12  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (foreach_package_cb): Doh!  We weren't using the
-       iter variable.
-
-2002-03-12  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman-private.h: Move RC_PACKMAN_CAP_* out of here, move
-       rc_packman_set_capabilities() into here.
-
-       * rc-packman.h: Move RC_PACKMAN_CAP_* into here, move
-       rc_packman_set_capabilities() out of here.
-
-2002-03-12  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package-info.c (rc_channel_parse_debian): Store packages
-       in RCWorld only, not in the channel.
-       (pkginfo_find_package_with_constraint): Find the package in
-       the RCWorld, not in the channel.
-
-       * rc-dep-or.c (package_process_helper_fn): Changed to work with
-       rc_world_foreach_package_by_name instead of g_hash_table_foreach.
-       (rc_dep_or_process_system_and_channels): Use
-       rc_world_foreach_package.
-
-       * rc-channel.c (rc_channel_new): Removed initialization of
-       ->packages, ->dep_table, ->dep_name_table.
-       (rc_channel_free): Removed clean-up of ->packages, ->dep_table,
-       ->dep_name_table.
-       (rc_xml_node_process): Only store the loaded package in RCWorld,
-       not in the channel.
-
-       * rc-world.c (foreach_package_cb): Doh!  We weren't using the
-       iter variable.
-
-2002-03-12  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman-private.h: Move RC_PACKMAN_CAP_* out of here, move
-       rc_packman_set_capabilities() into here.
-
-       * rc-packman.h: Move RC_PACKMAN_CAP_* into here, move
-       rc_packman_set_capabilities() out of here.
-
-2002-03-12  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (channel_match): Added.  A small function to do our
-       channel compares for us, properly handling
-       RC_WORLD_SYSTEM_PACKAGES, RC_WORLD_ANY_CHANNEL and our new
-       RC_WORLD_ANY_NON_SYSTEM.
-       (remove_packages_generic): Use channel_match.
-       (remove_package_structs_generic): Use channel_match.
-       (foreach_package_cb): Use channel_match.
-       (rc_world_foreach_package_by_name): Use channel_match.
-       (rc_world_foreach_providing_package): Use channel_match.
-       (rc_world_check_providing_package): Use channel_match.
-       (rc_world_foreach_requiring_package): Use channel_match.
-
-2002-03-11  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.c (rc_channel_priority_parse): Step through the
-       priority_str so we don't infinitely loop.
-
-2002-03-10  Peter Bowen  <pzb@ximian.com>
-
-       * rc-package-dep.c: (rc_package_dep_verify_relation): Fix dumb typo 
-                               that was causing a segfault.  Also initialize 
-                               compare_ret at function start.
-
-2002-03-10  Peter Bowen  <pzb@ximian.com>
-
-       * rc-debman.c: (rc_debman_init): set capabilities instead of rpmish
-       * rc-package-dep.c: remove rpmish
-                           (rc_package_dep_verify_relation): rewrite to 
-                               support paking two RCPackageDeps
-                           (rc_package_dep_verify_package_relation): removed
-                           (rc_package_dep_equal): removed
-                           (rc_package_dep_slist_is_item_subset): removed
-                           (rc_package_dep_is_subset): removed
-                           (rc_package_dep_is_subset_real): removed
-                           (rc_package_dep_invert): removed
-                           (rc_package_dep_slist_invert): removed
-                           (rc_package_dep_weaken): removed
-                           (rc_package_dep_slist_weaken): removed
-                           (rc_package_dep_is_fully_weak): removed
-                           (rc_package_dep_slist_is_fully_weak): removed
-                           (rc_package_dep_slist_has_dep): removed
-                           (rc_package_dep_system_is_rpmish): removed
-       * rc-package-dep.h: removed prototypes for removed functions
-       * rc-package-update.h: include rc-util.h
-       * rc-packman-private.h: add RC_PACKMAN_CAP_* defines and add
-                               capabilities to _RCPackmanPrivate struct
-       * rc-packman.c: (rc_packman_init): initial capabilities field
-                       (rc_packman_set_capabilities): new
-                       (rc_packman_get_capabilities): new
-       * rc-packman.h: add rc_packman_{get,set}_capabilities prototypes
-       * rc-rpmman.c: (rc_rpmman_init): set capabilities instead of rpmish
-
-2002-03-09  Ian Peters  <itp@ximian.com>
-
-       * rc-deps.c, rc-deps.h, rc-deps-util.c, rc-deps-util.h,
-       rc-deps-private.h: removed
-
-       * rc-dep-or.c: added
-
-       * rc-dep-or.h: added
-
-       * Makefile.am: remove and add the above files from the build
-
-       * libredcarpet.h: remove rc-deps.h
-
-       * rc-debman-general.c: s/rc-deps-util.h/rc-dep-or.h/
-
-       * rc-debman.c: remove rc-deps.h
-
-       * rc-debug-misc.h: remove rc-deps.h
-
-       * rc-package-dep.h (rc_package_dep_verify_relation): take a second
-       RCPackageDep, not an RCPackageSpec
-
-       * rc-package-dep.c: s/rc-deps-util.h/rc-dep-or.h
-       (rc_package_dep_slist_verify_relation): removed
-       (rc_package_dep_verify_relation): take a second RCPackageDep, not
-       an RCPackageSpec
-       (rc_package_dep_verify_package_relation): update for new
-       rc_package_dep_verify_relation, no need to check the package by
-       hand, since it provides itself
-
-       * rc-package-info.c (pkginfo_find_package_with_constraint): update
-       to handle new rc_package_dep_verify_relation -- this one is
-       special, because we don't have an RCPackageDep here, so we make
-       one
-
-       * rc-package-spec.c: minor das_global_packman changes
-
-       * rc-packman.h, rc-packman.c (rc_packman_set_packman): added
-
-       * rc-queue-item.c (uninstall_item_process): new
-       rc_package_dep_verify_relation behaviour
-
-       * rc-world.h (rc_world_foreach_requiring_package): take an
-       RCPackageDep, not an RCPackageSpec
-
-       * rc-world.c: s/rc-deps-util.h/rc-dep-or.h/
-       (rc_world_foreach_providing_package): pass pad->dep, not
-       pad->dep->spec, to rc_package_dep_verify_relation
-       (rc_world_foreach_requiring_package): take a dep not a spec
-
-2002-03-09  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (remove_package_structs_generic): Uh, don't go
-       into an infinite loop if we decide not to remove a specific
-       package struct.  Double-doh!
-
-       * rc-queue-item.c (require_process_cb): Screen out "impossible"
-       installs from the list.  This could save us a lot of fruitless
-       branchless in some cases.
-
-       * rc-world.c (remove_packages_generic): Don't test for a non-NULL
-       channel parameter when removing by channel, since a NULL value is
-       perfectly legal (and denotes a system package).  Doh!
-       (remove_package_structs_generic): Ditto.  These two changes together
-       fix Ximian #21344.
-
-2002-03-08  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (require_item_process): Don't search our
-       "uninstall" branch if it looks like the upgrade will install
-       cleanly.  Filter out uninstallable upgrades.  (Fixes case #39)
-
-       * rc-resolver-context.c
-       (rc_resolver_context_requirement_is_possible): Added.
-
-       * rc-world.c (rc_world_add_package): Track provides as
-       RCPackageDeps, not RCPackageSpecs.
-       (rc_world_foreach_providing_package): Provides are now
-       RCPackageDeps.
-       (rc_world_check_providing_package): Provides are now
-       RCPackageDeps.  Added "filter_dups_of_installed" flag.  Fixed
-       idiotic bug of the century: we were looking at the first list
-       element repeatedly, instead of actually iterating.  Doh!
-
-2002-03-08  Ian Peters  <itp@ximian.com>
-
-       * rc-deps-util.c (free_package_hash_helper): not needed
-       (rc_dep_or_process_system_and_channels): i knew there had to be a
-       function to destroy our unique hash tables, just couldn't find it;
-       now uses rc_hash_table_slist_free
-
-2002-03-07  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (rc_debman_init): the extension was only being set
-       after the abort for non-root, leading to a crash for normal users.
-
-       * rc-deps-util.c (rc_dep_or_new): we were leaking the depstr when
-       we found an identical or_dep in the hash table.
-       (free_package_hash_helper): added
-       (rc_dep_or_process_system_and_channels): free the hash table and
-       shallow free the element slists, using free_package_hash_helper
-
-       * rc-package.c (rc_package_to_str_static): the local variable
-       wasn't flagged as static, so it was never freed.  whoops!
-
-       * rc-rpmman.c (load_fake_syms): whoops, the hdrVec stuff is
-       conditional at compile, not runtime, in the static case.
-
-       * rc-world.c (rc_world_check_providing_package): plug a huge
-       memory leak, the hash table constructed in this function was only
-       freed if our search was a failure and we returned FALSE.  Our
-       search succeeds quite a bit, is the thing.
-
-2002-03-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): Free the correct transaction
-       set; cut-and-paste error.
-
-2002-03-05  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: renamed configuring to installing in the
-       InstallState struct
-       (transact_cb): since we're doing installs and removes in separate
-       transactions, some of the hairy logic here gets a lot cleaner.
-       still have to count to get configures and removes right,
-       though... :(
-       (render_problems): added.  takes an rpmProblemSet, and adds it,
-       formatted, to the RCPackman error string.
-       (rc_rpmman_transact): massive rewriting.  now assembles an
-       install/remove transaction set, tests it, but then constructs two
-       more, an install only and remove only, to actually run them
-       separately.  please test heavily.
-
-2002-03-05  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.c (rc_xml_node_to_channel): Move the priority stuff
-       from here (basically parsing packageinfo.xml.gz) to...
-       (rc_channel_parse_xml): ... here (parsing channels.xml.gz).  Man,
-       these function names are confusing.
-
-2002-03-05  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.h: Add concept of priority to queue items.      
-
-       * rc-queue-item.c (package_slist_to_string): Added back.
-       (install_item_to_string): Made more verbose.
-       (rc_queue_item_new_uninstall): Boost the priority of uninstall
-       items, so that they get processed first.
-       (install_item_process): If we have ->needed_by packages, and if
-       they are all marked as to-be-uninstalled, do nothing.  (This fixes
-       verification case #37.)
-
-       * rc-resolver-queue.c (rc_resolver_queue_process_once): Process
-       items in order of priority.
-
-       * rc-world.c (rc_world_remove_package): Added.  Allows a single
-       package to be removed from the RCWorld.
-       (remove_packages_generic): Added.  This is a static function for
-       removing packages from slists -- the code was originally in one of
-       the g_hash_table_foreach_remove callbacks, but I've split it out
-       to avoid some code duplication.
-       (remove_package_structs_generic): Added.  Same as above, except it
-       acts on package structs (RCPackageAndSpec, RCPackageAndDep)
-       instead of packages.
-
-2002-03-04  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (rc_queue_item_uninstall_set_dep): Changed from
-       _add_dep; only allow one dep per uninstall item.
-       (require_item_process): s/_add_dep/_set_dep/
-       (conflict_process_cb): s/_add_dep/_set_dep/
-       (uninstall_item_process): Use rc_package_dep_to_str to set
-       dep_str.
-       (uninstall_item_destroy): There is no more dep slist to free.
-       (uninstall_item_to_string): If we have a dep, add it to the
-       string.
-       (uninstall_item_copy): Copy the single dep, not a list.
-
-       * rc-package-dep.c (rc_package_dep_to_str): Added.
-       (rc_package_dep_to_str_static): Added.
-
-2002-03-01  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package-spec.c (rc_package_spec_get_type): Added.  Tries to
-       figure out whether or not a provide is virtual.
-
-       * rc-resolver-context.c (rc_resolver_context_new_child): Track
-       whether or not we want to allow conflicts w/ virtual provides.
-
-       * rc-queue-item.c (conflict_process_cb): Check our context whether
-       or not we should allow conflicts w/ virtual provides.
-
-       * rc-world.c (rc_world_add_package): Mark our self-provides as
-       being of type 'package'.
-
-       * rc-channel.c (rc_channel_parse_xml): Removed unused variable.
-
-       * rc-world.c (rc_world_check_providing_package): Handle Debian
-       'or'-dependencies.
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies):
-       s/RC_EXTEMELY_NOISY/RC_SPEW/.  There is no reason to have two
-       separate "dump everything to the console with extreme prejudice"
-       environment variables.
-
-       * rc-resolver-queue.c (rc_resolver_queue_process): Ditto.
-
-2002-02-28  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c: Replaced several instances of
-       rc_package_spec_to_str with rc_package_to_str.
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): Added more
-       RC_EXTREMELY_NOISY spew.
-
-       * rc-resolver-context.c
-       (rc_resolver_context_get_channel_priority): Call
-       rc_channel_get_priority with the arguments in the correct order.
-       Doh!
-       (rc_resolver_context_new_child): OK, once and for all, we do need
-       to hash on package spec.
-
-       * rc-package.c (rc_package_to_str_static): Added.
-       (rc_package_to_str): Added.  Produces a string of the package
-       name w/ the channel name attached.
-
-       * rc-channel.c (rc_channel_get_priority): Fixed to make the
-       current channel implicitly subscribed.
-       (rc_channel_parse_xml): Don't try to read the channel priority
-       here...
-       (rc_xml_node_to_channel): ...do it here instead.  Looking at the
-       correct xmlNode can work wonders.
-
-       * rc-resolver-compare.c (rc_resolver_context_partial_cmp): Get all
-       inequalities pointed in the right direction, so we don't
-       accidentally favor worse solutions.
-       (rc_resolver_context_cmp): Ditto.
-
-       * rc-queue-item.c (install_item_process): Don't generated the
-       "needed-by" info on upgrades.
-       (require_item_process): When upgrading due to a codependency,
-       explicity attach a "needed-by" log item for the package that
-       triggering the upgrade.
-
-       * rc-resolver.c (rc_resolver_free): Free ->packages_to_verify.
-       (rc_resolver_verify_system): Added.  Adds all system packages to
-       ->packages_to_verify, then calls rc_resolver_resolve_dependencies.
-       (rc_resolver_resolve_dependencies): Iterate across
-       ->packages_to_verify and add them to our initial queue.
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_verify):
-       Added.  Walks across the package's list of requires and conflicts
-       and converts them into queue items.
-
-       * rc-world.c (rc_world_foreach_package): Added.
-
-2002-02-28  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (load_rpm_syms): RPM 4.0.4 marked two functions that
-       we need as static, making them unavailable through dlsym.  The
-       answer turns out to be to dlsym a global virtual function table
-       and find the functions we need through absolute offset.  Ick.
-       (load_fake_syms): same fix, one less dlsym, for static linking
-       (rc_rpmman_init): add the RPM 4.0.4 specific stub file to the
-       list, use rpmEVR rather than RPMVERSION to get the version of the
-       RPM library.
-
-       * Makefile.am: build an RPM 4.0.4 specific stub file
-
-2002-02-27  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-package-info.c (rc_channel_parse_debian): Store packages
-       in our RCWorld as we parse them.
-
-       * rc-world.c (rc_world_foreach_providing_package): If we are
-       handed an or-dependency, split it up and call
-       rc_world_foreach_providing_package on each of the component
-       pieces.
-
-       * rc-resolver.c (rc_resolver_set_current_channel): Added.
-       (rc_resolver_add_subscribed_channel): Added.
-       (rc_resolver_resolve_dependencies): Store the current/subscribed
-       channel info in the context.
-
-       * rc-resolver-queue.c (copy_queue_except_for_branch): Get
-       priorities from the context instead of directly from the channel.
-
-       * rc-resolver-info.c (rc_resolver_info_merge): Use a hash to make
-       sure that our package list contains only unique entries when we
-       merge.
-       (rc_resolver_info_to_str): Add default stringifications for our
-       new types.
-       (rc_resolver_info_conflicts_with_new):
-       s/NEEDED_BY/CONFLICTS_WITH/.  The peril of cut&pasting code...
-       (rc_resolver_info_depends_on_new): Added.
-
-       * rc-resolver-context.c (rc_resolver_context_install_package):
-       Remove "favored" arg, get priorities from the new, improved
-       rc_resolver_context_get_channel_priority function.
-       (rc_resolver_context_upgrade_package): Ditto.
-       (rc_resolver_context_get_channel_priority): Added.  Use our
-       locally stored info about current/subscribed channels and
-       rc_channel_get_priority to compute priorities properly.
-
-       * rc-queue-item.c (rc_queue_item_free): Free pending info items.
-       (rc_queue_item_copy): Copy pending info items.
-       (rc_queue_item_add_info): Added.  Allows a pending info item to be
-       attached to a queue item.  The idea is that this info item will be
-       logged into the context if the queue item is successfully
-       processed.
-       (rc_queue_item_log_info): Added.  Moves any pending info items out
-       of the queue item and into the context.
-       (install_item_process): Use rc_r_c_install_package's new
-       signature.  Properly log our NEEDED_BY info.  Produce better
-       verbose logging in the case of upgrades.
-       (require_item_process): Log DEPENDS_ON info.
-       (conflict_process_cb): Log CONFLICTS_WITH info.
-       (uninstall_process_cb): Track the "lost" package in our require
-       queue item.
-       (uninstall_item_process): Log pending queue items on success.
-
-       * rc-channel.c (rc_channel_new): Set the various channel
-       priorities to -1, so that the default values will be used if no
-       other value is set.
-       (rc_channel_get_priority): Changed to return different priorities
-       depending on whether or not the channel is current or subscribed.
-
-2002-02-26  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (codependent_pair): Recognize codependent pairs
-       by name.
-       (require_item_process): An evil optimization -- when doing an
-       upgrade involving codependency (that we can recognize via the
-       codependent_pair fn)q, don't explore the "remove" branch.
-       (uninstall_item_process): Avoid copying the list of require items,
-       instead just add them directly to the to the *new_items list.
-
-       * rc-package-spec.c (rc_package_spec_hash): As long as we are
-       optimizing, we might as well be able to do this hash without any
-       function calls.
-
-       * rc-resolver-context.c (rc_resolver_context_new_child): Since we
-       now do proper dup-checking in our rc_world_foreach functions, we
-       can go back to hashing on package pointers.
-       (rc_resolver_context_get_status): Cache the results of the last
-       get_status call, and return it w/o any hash lookups if we ask for
-       the same info in the next call.  This actually happens a lot, and
-       this optimization lets us avoid hash lookups in about 50% of all
-       cases.
-       (rc_resolver_context_set_status): Update the cache if we change
-       the status of the last package we called get_status on.
-
-2002-02-25  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_install):
-       Remove used variable.
-
-       * rc-resolver-context.c (upgrade_pkg_cb): Make sure to_be_upgraded
-       isn't NULL.
-
-       * rc-queue-item.c (rc_queue_item_new_install): Make sure upgrades
-       != package.
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_install):
-       We don't need to check if this install is an upgrade here, since
-       it now happens automatically when we construct a install item.
-
-       * rc-queue-item.c (rc_queue_item_new_install): Check if this is an
-       upgrade, and do the appropriate magic, every time we construct an
-       install item.
-
-       * rc-util.c (rc_maybe_merge_paths): g_strconcat-ing printf
-       format strings is not a good idea.
-
-       * rc-package-spec.c (rc_package_spec_hash): Constructing the whole
-       RCPackageSpec string only to call g_str_hash is pretty wasteful,
-       so I've changed this to build up a hash value out of the spec's
-       various string elements.
-       (rc_package_spec_to_str_static): Changed to just call
-       rc_package_spec_to_str.  This avoids a bunch of snprintfs, but
-       means that the previous pointer becomes invalid each time this is
-       called.  But this isn't really a problem, since that pointer would
-       contain the wrong answer anyway under the old implementation.
-       (rc_package_spec_version_to_str_static): Ditto.
-       (rc_package_spec_to_str): Replaced g_strdup_printf with
-       g_strconcat.
-       (rc_package_spec_version_to_str): Ditto.
-
-       * rc-queue-item.c: Replaced g_strdup_printf with g_strconcat in
-       a whole bunch of places.
-
-       * rc-resolver-context.c (rc_resolver_context_install_package):
-       Replaced g_strdup_printf with g_strconcat.
-       (rc_resolver_context_uninstall_package): Ditto.
-
-       * rc-util.c (rc_mkdir): Replaced g_strdup_printf with g_strconcat.
-       (rc_rmdir): Ditto.
-       (rc_is_program_in_path): Ditto.
-       (rc_maybe_merge_paths): Ditto.
-
-       * rc-resolver-context.c (rc_resolver_context_foreach_upgrade):
-       Implemented.
-       (rc_resolver_context_foreach_uninstall): Build a hash of all of
-       our upgrade-related removals, and use it to make sure that we
-       don't report and of those as uninstalls.
-
-       * rc-resolver-info.c (rc_resolver_info_merge): Merge misc info
-       items with identical message strings.
-
-       * rc-queue-item.c (install_item_process): Track the upgraded
-       package when we generate an uninstall item associated with an
-       upgrade.
-       (require_item_process): If we need to remove items because of lost
-       dependencies associated with an upgrade, make a branch and try
-       upgrading the to-be-removed items.  (This is the foo/foo-devel
-       co-dependency case.)
-       (require_item_process): The requiring package in the require item
-       is now a singleton, not a list.
-       (require_item_copy): Ditto.
-       (rc_queue_item_require_add_package): Ditto.
-       (uninstall_process_cb): Track the upgraded package.  Don't try to
-       consolidate require items --- consolidation will happen when info
-       items are merged.
-       (uninstall_item_process): Track the upgraded package.
-       (uninstall_item_copy): Ditto.
-       (rc_queue_item_uninstall_set_upgraded_to): Ditto.
-
-       * rc-resolver-context.c (rc_resolver_context_foreach_info): Add a
-       merging pass.
-       
-       * rc-resolver-info.c (rc_resolver_info_copy): Added.
-       (rc_resolver_info_conflicts_with_new): Added.
-
-       * rc-resolver-queue.c (rc_resolver_queue_process): 
-
-       * rc-world.c (rc_world_foreach_upgrade): Added.
-       (rc_world_add_package): Use _slist_insert instead of
-       _slist_insert_unique.
-
-2002-02-23  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package-update.c (rc_xml_node_to_package_update): use
-       rc_maybe_merge_paths instead of g_strconcat, so that we can
-       handle absolute URLs in history file paths.
-
-2002-02-22  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_install):
-       Print a message if we try to install an already-installed package.
-       (rc_resolver_queue_process): Spew lots of debugging info if
-       the RC_EXTREMELY_NOISY env variable is set.
-
-       * rc-package-info.c (rc_channel_parse_debian): Store the channel
-       in the RCPackages we construct.
-
-       * rc-world.c (rc_world_foreach_package_by_name): Filter out
-       non-installed duplicates of an installed package.
-       (rc_world_foreach_providing_package): Ditto.
-       (rc_world_check_providing_package): Ditto.
-       (rc_world_foreach_requiring_package): Ditto.
-
-       * rc-queue-item.c (conflict_process_cb): Check package equality
-       using rc_package_spec_equal, not pointer equality.
-
-       * rc-queue-item.c (uninstall_process_cb): Group multiple packages
-       with a common requirement.
-
-       * rc-world.c (remove_package_cb): Comment out rc_package_free.
-       Why does this fix our memory corruption problem?  Where else is it
-       being freed?
-       (rc_world_spew): Added.
-
-       * rc-resolver-context.c (dup_name_check_cb): Make sure we don't
-       mistake two identical packages for a parallel install situation.
-
-2002-02-21  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-channel.c: Removed misleading comment about priorities.
-
-       * rc-resolver-info.c (rc_resolver_info_to_str): Renamed from
-       rc_resolver_info_to_text.
-       (rc_resolver_info_packages_to_str): Added.  Return a string with
-       comma-separated list of the names of the packages in package_list.
-       (rc_resolver_info_needed_by_new): Added.
-       (rc_resolver_info_needed_add): Added.
-       (rc_resolver_info_needed_add_slist): Added.
-
-       * rc-resolver-context.c (rc_resolver_context_is_parallel_install):
-       Added.  Check to see if a package with the same name is
-       to-be-installed.
-       (rc_resolver_context_install_package): Move the parallel install
-       check logic into its own function.
-
-       * rc-queue-item.c (install_item_process): Make our text-string log
-       messages have priority _VERBOSE.  Log what packages need the
-       installed package.
-       (rc_queue_item_install_add_needed_by): Added.
-       (require_process_cb): Packages that would be parallel installs do
-       not satisfy requires, since they are uninstallable.
-       (require_item_process): Track the packages that this requirement
-       comes from by passing them along to the newly-created install
-       items.
-
-2002-02-20  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_install):
-       If another version of the package is already installed, mark our
-       install queue item as being an upgrade.
-
-       * rc-resolver-context.c (rc_resolver_context_unref): Free info
-       items in log list.
-       (rc_resolver_context_install_package): Replaced log entries with
-       info items.
-       (rc_resolver_context_uninstall_package): Track if we are part of
-       an upgrade, adjust stats accordingly.  Replaced log entries with
-       info items.
-       (rc_resolver_context_invalidate): Replaced log entry with info
-       item.
-       (rc_resolver_context_add_info): Replaces _add_log_entry.
-       (rc_resolver_context_add_info_str): Added.  A convenience function
-       that creates a misc info item and adds it to the log.
-       (rc_resolver_context_foreach_info): Replaces _foreach_log_entry.
-       (rc_resolver_context_spew_info): Replaces _spew_log.
-
-       * rc-queue-item.c (install_item_process): If this is an upgrade,
-       add a request to remove the currently-installed version.
-       (rc_queue_item_install_set_upgrade_package): Added.  Specify
-       that this install is upgrading (or downgrading, for that matter)
-       the given package.
-       (require_item_process): Replaced log entry with info items.
-       (conflict_process_cb): Replaced log entries with info items.
-       (uninstall_item_process): Replaced log entries with info items.
-       (rc_queue_item_uninstall_is_part_of_upgrade): Added.  Indicates
-       that this uninstall is really half of an upgrade.
-
-       * rc-world.c (remove_package_struct_cb): Check that our_struct !=
-       NULL.
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_install):
-       If there is another version of the package already installed,
-       remove the old version.  (In other words, do the right thing for
-       upgrades.)
-
-       * rc-resolver-context.c (rc_resolver_context_new_child): Hash by
-       package spec, not pointer.
-       (rc_resolver_context_install_package): Don't flag a package as
-       needing to be installed if another package of the same name is
-       already scheduled for installation.
-
-2002-02-18  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-queue.c (copy_queue_except_for_branch): Use new
-       generalized branches.
-       (rc_resolver_queue_split_first_branch): Use new generalized
-       branches.
-
-       * rc-resolver.c (rc_resolver_add_packages_to_install_from_slist): Added.
-       (rc_resolver_add_packages_to_remove_from_slist): Added.
-
-       * rc-resolver-context.c (rc_resolver_context_install_package):
-       Attach packages to log entries.
-       (rc_resolver_context_upgrade_package): Attach packages to log
-       entries.
-       (rc_resolver_context_uninstall_package): Attach packages to log
-       entries.
-       (rc_resolver_context_foreach_marked_package): Change callback
-       function type to RCMarkedPackageFn.
-       (rc_resolver_context_add_log_entry): Allow a package to be tied to
-       a log entry.
-       (rc_resolver_context_foreach_log_entry): Allow the log messages to
-       be selected by package.
-       (rc_resolver_context_log_to_string): Added.  Get the log messages
-       (possibly for a single package) as one big string.
-       (rc_resolver_context_foreach_install): Added.
-       (rc_resolver_context_foreach_uninstall): Added.
-       (rc_resolver_context_invalidate): Attach NULL package to log
-       entry.
-       (rc_resolver_context_spew_log): Changed for
-       rc_resolver_context_foreach_uninstall's new signature.
-
-       * rc-queue-item.c (rc_queue_item_is_redundant): Added.
-       (rc_queue_item_is_satisfied): Added.
-       (item_slist_to_string): Added.
-       (install_item_is_satisfied): Added.
-       (install_item_process): Attach package to log entry.
-       (install_item_destroy): Remove our needed-by list.
-       (install_item_copy): Copy some stuff I forgot to copy before.
-       Doh.
-       (rc_queue_item_new_install): Initialize ->is_satisfied.
-       (require_item_process): Attach packages to log entries.  Use the
-       new-style generalized branches.
-       (require_item_copy): Copy the remove-only flag.
-       (branch_item_process): Generalized processing no longer assumes
-       that a branch is just a set of installs.
-       (branch_item_destroy): Don't leak the branch items.
-       (branch_item_copy): Generalized.
-       (branch_item_to_string): Generalized.
-       (rc_queue_item_branch_add_item): Added, replaces
-       rc_queue_item_add_package.
-       (conflict_process_cb): Attach packages to log entries.
-       (uninstall_item_process): Attach packages to log entries.
-       (uninstall_item_copy): Copy the remove-only flag.
-
-       * rc-package.c: Include stdlib.h to get rid of warning.
-
-2002-02-18  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-world.c (rc_world_find_installed_version): Added.
-
-       * rc-resolver.c (rc_resolver_resolve_dependencies): When removing
-       packages, always do so in remove-only mode.
-
-       * rc-resolver-queue.c (rc_resolver_queue_add_package_to_remove):
-       Add remove_only_mode arg, which causes the approrpriate flag to be
-       set in the uninstall item that is added to the queue.
-
-       * rc-resolver-context.c (rc_resolver_context_package_is_absent):
-       Doh!  Replaced a == with a != in a g_return_val_if_fail.
-
-       * rc-queue-item.c (rc_queue_item_require_set_remove_only): Added.
-       (rc_queue_item_uninstall_set_remove_only): Added.
-       (require_item_process): Modified so that remove-only-mode require
-       items will only generate (set-remove-only) uninstall items, and
-       will never try to pull in alternative providers.
-       (uninstall_process_cb): Make sure that set-remove-only uninstall
-       items generate set-remove-only require items.
-
-2002-02-17  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver.c (remove_head): The type of thing that really
-       should be one line in glib (and is in 2.0, IIRC).
-       (rc_resolver_resolve_dependencies): Store invalid solutions in
-       their own list.  The processing of pending_queues has been
-       re-designed to do on-the-fly scoring and pruning.
-       Also, I've dropped our iterator functions.  For now, just read
-       the lists and other data directly from the struct (ugh).
-
-       * rc-resolver-queue.c (copy_queue_except_for_branch): Take a
-       penalty value as an argument, and attach it to the created install
-       item.
-       (rc_resolver_queue_split_first_branch): Track penalties, pass them
-       along to copy_queue_except_for_branch.
-       
-       * rc-resolver-context.c (rc_resolver_context_new_child): Copy
-       stats from the parent.
-       (rc_resolver_context_set_status): I've moved the intelligence out
-       of this routine and into the _(un)?install_package functions.
-       (rc_resolver_context_get_status): Simplified, no longer recursive.
-       (rc_resolver_context_install_package): Added.  Updates info
-       relevant to scoring.
-       (rc_resolver_context_upgrade_package): Added.  Updates info
-       relevant to scoring.  Currently unused.
-       (rc_resolver_context_uninstall_package): Added.  Updates info
-       relevant to scoring.
-       (rc_resolver_context_add_channel_priority): Added.
-       (rc_resolver_context_add_log_entry): If the log entry duplicates
-       the previous entry, drop it.
-       (requirement_met_cb): Return TRUE until we find a match.
-       (rc_resolver_context_requirement_is_met): Changed to use
-       rc_world_check_providing_package.
-
-       * rc-queue-item.c (install_item_process): Changed to use
-       rc_resolver_context_install_package.
-       (rc_queue_item_install_set_channel_priority): Added.
-       (rc_queue_item_install_get_channel_penalty): Added.
-       (rc_queue_item_install_set_other_penalty): Added.
-       (rc_queue_item_install_get_other_penalty): Added.
-       (uninstall_item_process): Changed to use
-       rc_resolver_context_uninstall_package.
-
-       * rc-package.c (rc_package_is_installed): Added.
-       (rc_xml_node_to_package): Parse file size and installed size out
-       of the package XML.
-
-       * rc-channel.c (rc_channel_priority_parse): Added.  Convert a
-       string into a priority rating.
-       (rc_channel_new): Set ->priority and ->favored_priority to the
-       default values.
-       (rc_channel_get_priority): Added.  A simple accessor.
-       (rc_channel_get_favored_priority): Ditto.
-       (rc_channel_parse_xml): Parse channel priorities.
-
-       * rc-world.c (rc_world_check_providing_package): Added.  This is
-       like rc_world_foreach_providing_package, except that it terminates
-       when the callback function returns FALSE.
-       (rc_world_foreach_requiring_package): Deal with list items with
-       NULL data.
-       (rc_world_foreach_providing_package): Deal with list items with
-       NULL data.
-       (rc_world_remove_packages): Implemented.
-
-2002-02-15  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-queue-item.c (conflict_process_cb): Add a missing break that
-       was causing us to fall through into our default:
-       g_assert_not_reached () case.
-
-       * rc-channel.c (rc_xml_node_process): Moved our call to
-       rc_world_add_package down into the if (package) block so we don't
-       get warnings on empty channels.
-
-       * rc-channel.h: Added 'priority' to RCChannel struct.
-       (Still not used for anything.)
-
-       * rc-package.h: Added RCPackageAndSpecFn.
-
-       * rc-world.c: Finished initial implementation.
-
-       * rc-resolver-context.c: Finished initial implementation.
-
-       * rc-queue-item.c: Finished initial implementation.
-
-       * rc-resolver-queue.c: Finished initial implementation.
-
-       * libredcarpet.h: Including rc-resolver.h, rc-world.h.
-
-2002-02-12  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-resolver-queue.c: Added.  Still under development.
-
-       * rc-queue-item.c: Added.  Still under development.
-
-       * rc-resolver-context.c: Added.  Still under development.
-
-       * rc-world.c: Added.  Still under development.
-
-       * rc-package-dep.h: Added RCPackageAndDepFn typedef.
-
-       * rc-package.h: Added RCPackageFn typedef.
-
-2002-02-05  Jon Trowbridge  <trow@ximian.com>
-
-       * rc-channel.c: Removed RCSubchannel struct and functions.
-       (rc_channel_new): Initialize ->package, ->dep_table and
-       ->dep_name_table hashes.
-       (rc_channel_free): Free the ->package, ->dep_table and
-       ->dep_name_table hashes.  Removed subchannel stuff.
-       (rc_xml_node_process): This used to be rc_channel_get_subchannel.
-       Removed all subchannelisms.
-       (rc_xml_node_to_channel): Removed subchannel stuff.  Call
-       rc_xml_node_process to do the actual work.
-
-       * rc-deps-private.h: Remove pref argument from all prototypes.
-
-       * rc-deps-util.c (rc_dep_fix_system): Removed pref argument in
-       call to rc_dep_resolution_new.
-       (rc_dep_or_process_system_and_channels): Removed subchannel logic,
-       get channel directly from package.
-
-       * rc-deps.c: Drop pref arguments everywhere -- they were used for
-       selecting subchannels, which no longer exist.
-       (deps_find_provide): Get channel directly from package.
-       (deps_update_install_list): Get channel directly from package.
-
-       * rc-package-dep.c (rc_xml_node_to_package_dep): Removed libxml
-       version check, using ->xmlChildrenNode instead.
-
-       * rc-package-info.c: Renamed rc_subchannel_foo functions to
-       rc_channel_foo, and removed all subchannel-related logic.
-       (pkginfo_find_package_with_constraint): Removed subchannel-related
-       stuff, including the max_pref argument.
-       (pkginfo_find_package): Removed the max_pref argument and fix our
-       call to pkginfo_find_package_with_constraint.
-
-       * rc-package-set.c (rc_package_set_parse): Changed to use
-       ->xmlChildrenNode.
-
-       * rc-package-update.c (rc_xml_node_to_package_update): Get the
-       channel directly from the package struct.  Changed to use
-       ->xmlChildrenNode.
-
-       * rc-package.c (rc_package_copy): s/subchannel/channel/.
-       (rc_xml_node_to_package): s/subchannel/channel/.  Removed libxml
-       version check, using ->xmlChildrenNode instead.
-
-       * rc-package.h: Replace occurances of RCSubchannel by
-       RCChannel.
-
-       * rc-pretty-name.c (rc_pretty_name_parse_xml): Removed libxml
-       version check, using ->xmlRootNode and ->xmlChildrenNode instead.
-
-       * rc-rpmman.c (rc_rpmman_query_file): Wrap some unreachable code
-       in #if 0/#endif.
-
-       * xml-util.c (xml_get_value): Removed #if check for libxml version,
-       using ->xmlChildrenNode instead.
-
-2002-02-06  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: only look in unsubscribed channels if and only if
-       nothing appropriate was found in any subscribed channels.
-
-2002-01-29  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-info.c (rc_subchannel_parse_helix): If we don't have
-       an XML document, we really shouldn't be continuing to parse that.
-       This function was crack-smoking.
-
-       * rc-util.c (rc_hash_table_slist_insert_unique): Fix a potential leak.
-
-2002-01-14  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_query_file): First check to see if the
-       file exists, and then try to open it, but bail out if it doesn't
-       work.
-
-2002-01-11  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman.c (i18n_fixer): Set the PATH environment variable to
-       include /sbin, /usr/sbin, and /usr/local/sbin, where dpkg and
-       friends are located.  Fixes #18157.
-
-2002-01-04  Joe Shaw  <joe@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): Add back in my RC_JUST_KIDDING
-       envvar that Ian backed out for some reason.  Boo!  Hiss!
-
-2001-12-17  Ian Peters  <itp@ximian.com>
-
-       * rc-deps.c: some stuff I don't understand
-
-2001-12-07  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: fix the /usr/share/magic.mime problem, don't ask
-
-2001-11-20  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: readd RPMPROB_FILTER_REPLACE[NEW|OLD]FILES for a
-       little while because of broken packages
-
-2001-11-08  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (parse_versions): take out an unnecessary assert
-       that caused problems for a customer :-)
-
-2001-11-08  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c, rc-deps.h: rc_dep_resolution_new now takes a flage as
-       to whether you will be doing an INSTALL or a REMOVE mainly with
-       this resolution.  If Install, it will try to resolve all
-       dependencies and will do its best to never remove packages.  If
-       REMOVE, it will remove things more aggressively.
-
-       * rc-deps-util.c: Update call to rc_dep_resolution_new.
-
-       * rc-rpmman.c: Add patch to ignore rpm epochs as appropriate to
-       conform to RPM behaviour.
-       
-2001-11-08  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: get rid of RPMPROB_FILTER_REPLACEPKG,
-       _REPLACENEWFILES, and _REPLACEOLDFILES.  The only problem we're
-       left filtering is _OLDPACKAGE, which isn't really a problem.
-
-2001-11-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.[ch]: Remove the channel_select field from the
-       RCChannel struct.  Mmmm, bitrot.
-
-2001-10-30    <itp@ximian.com>
-
-       * rc-distro.c: add ydl 2.1 and suse 7.3
-
-2001-10-30  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.c (rc_channel_parse_xml): Get the new channel tier,
-       if it's there.
-
-2001-10-25  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: don't assume that only things which are an ANY
-       relation are a virtual provide; instead use the provide's virtual
-       setting.
-
-       * rc-package-dep.c: When verifying a spec, take into account rpm
-       conflicts and virtual provides.
-       
-2001-10-24  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-update.c (rc_xml_node_to_package_update): Get the
-       HID.
-       * rc-package-update.h (RCPackageUpdate): add the HID.
-
-2001-10-17  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-util.c: oops, really make it work
-
-       * rc-util.c (rc_unompress_memory): Complain if zlib uncompression
-       fails.  This will require changes to the tools.
-
-2001-10-04  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: only build rc-dpkg-helper.so when dpkg support
-       enabled, only build the rpm helpers when non-static rpm support
-       enabled
-
-2001-10-04  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c, Makefile.am: change it one more time
-
-2001-10-04  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmamn.c, Makefile.am: change the .so file names -again- for
-       broken old rpm
-
-2001-10-04  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: add things to CLEANFILES in a few places
-
-2001-10-04  Ian Peters  <itp@ximian.com>
-
-       * make_stub.sh: simplified
-
-       * Makefile.am: new calling convention for make_stub.sh
-
-       * rc-package-dep.c, rc-package-info.c, rc-package-spec.c,
-       rc-package-spec.h: revert accidental commit
-
-2001-09-30  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: don't try to add packages if all we're doing is
-       removing them.
-
-2001-09-28  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman.c (do_unpack): Don't change the "--no-act" parameter
-       (hence just "testing" an install) if we have the RC_JUST_KIDDING
-       environment variable set.
-
-       * rc-rpmman.c (rc_rpmman_transact): Set the transaction_flags to
-       RPMTRANS_FLAG_TEST if RC_JUST_KIDDING is set.
-
-2001-09-25  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: minor mem leak fixes, also make sure
-       deps_find_newer finds the biggest version package it can
-
-2001-09-24  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.c: add some sanity checks to the rc_packman_transact
-       wrapper to check for duplicate installs, duplicate removes, and
-       install/removes of the same package
-
-2001-09-24  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Don't add a package if we're removing a newer
-       version of it.
-
-2001-09-24  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c, rc-deps.h: give a reason when we abort, so the GUI
-       can display a useful message.
-
-2001-09-21  Ian Peters  <itp@ximian.com>
-
-       pulled in from red-carpet-1-1 branch
-
-       * rc-rpmman.c: fix a typo that resulted in memory corruption after
-       each install
-
-2001-09-21  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: caught one of the odd counting cases -- in the case
-       of an install of an already installed package, we'll get a
-       configure, remove, and install callback event -- unless the
-       package of the same version is already installed, in which case
-       the remove event doesn't occur.  Note that this shouldn't happen
-       in the RC gui anyway, so it's probably a dependency bug as well,
-       but for correctness...
-
-2001-09-21  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: check what version of RPM we're using before we add
-       a self-dependency -- RPM 4.0 and beyond don't need this
-
-2001-09-21  Ian Peters  <itp@ximian.com>
-
-       * rc-rpm-helper-1.so, rc-rpm-helper-2.so, rc-rpm-helper-3.so:
-       removed.
-
-       * [rpm].so.0, [rpm_rpmio].so.0, [rpm_rpmio_rpmdb]-4.0.3.so,
-       [rpm_rpmio_rpmdb].so: added
-
-       * Makefile.am, rc-rpmman.c: handle the new shared stubs.
-
-2001-09-20  Ian Peters  <itp@ximian.com>
-
-       * rc-rpm-helper-1.so, rc-rpm-helper-2.so, rc-rpm-helper-3.so:
-       rebuilt all of these using an amazingly simple and clever
-       technique I just now worked out.  We should be able to ship all of
-       our RC builds on i386 platforms using just --enable-backend-rpm,
-       which gives us near-maximal flexibility for dealing with the
-       various RPM versions.  I haven't bothered to fix the build process
-       to handle the other architectures, so we'll continue to ship those
-       static.  Joe, I apologize for making you have to redo the
-       installer stuff...
-
-2001-09-20  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Also, do a sanity check of the results to make
-       sure we don't return packages with the same name in the install
-       list, or in the install/remove lists.
-
-2001-09-19  Ian Peters  <itp@ximian.com>
-
-       * rc-verification.c: pull up fixes
-
-2001-09-19  Ian Peters  <itp@ximian.com>
-
-       * rc-deps.c, rc-distro.c: fixes from red-carpet-1-1
-
-2001-09-19  Ian Peters  <itp@ximian.com>
-
-       * rc-deps.c: bug fix to multiple install problem as dictated by
-       vlad over a cell phone from europe
-
-       * rc-distro.c: mandrake 81 strings added
-
-       * rc-verification.c: check for ~/.gnupg, and if it doesn't exist,
-       attempt to run gpg --list-keys before verifying the signature.  If
-       gpg is unable to find ~/.gnupg, it creates it, and then aborts,
-       giving a spurious signature failure.
-
-2001-09-19  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: lame hacks to avoid over/under counts during
-       transactions
-
-2001-09-19  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Call deps_find_provide after adding a non-older package
-       in deps_find_provide, since it probably just added the package that
-       we want (if we wait for the outside loop to catch it, we might add
-       a bad package);  also use rc_package_slist_sort_by_spec_reverse to
-       get the latest versions of a package first.
-
-       * rc-package.c, rc-package.h: rc_package_slist_sort_by_spec_reverse,
-       and a secial static c_sucks_rc_package_spec_compare_reverse() to
-       inverse the sense of rc_package_spec_compare.
-
-2001-09-14  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: new rpm-helper .so files
-
-       * rc-rpmman.c, rc-rpmman.h: some rpmProblemString fixes, new .so
-       files
-
-2001-09-14  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.h: forgot the 04000* comparisons here
-
-2001-09-14  Ian Peters  <itp@ximian.com>
-
-       * rc-distro.c: add RH 7.2 support
-
-       * rc-rpmman.c: sigh, forgot all about that octal shit... get
-       rid of the leading 0 in the rpm version
-
-2001-09-13  Ian Peters  <itp@ximian.com>
-
-       * rc-rpm-helper-with-rpmio-and-rpmdb.so: another shared
-       object, works with RPM 4.0.3
-
-       * Makefile.am: dist and install
-       rc-rpm-helper-with-rpmio-and-rpmdb.so
-
-       * rc-rpmman.c, rc-rpmman.h: conditionalize a lot of stuff
-       on both the API and ABI version using both the preprocessor and
-       runtime checks.  Add the third shared object to the list of things
-       we attempt to dlopen.
-
-2001-08-27  Joe Shaw  <joe@ximian.com>
-
-       * rc-deps-util.c (rc_dep_string_to_or_dep_slist): Fix a crash that
-       would happen in the case where a munged string would come in as
-       (||package1|package2|package3&>=&1.0) and when processing the
-       first package (package1) it would strchr() for the '&' and get
-       the one in package3 and barf trying to allocate negative memory
-       because of bad pointer arithmetic.
-
-2001-08-17  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.c (rc_channel_parse_xml): Don't panic if there aren't
-       any channels. Sean found this.
-
-2001-08-17  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.c (rc_channel_parse_xml): Don't panic if there isn't
-       a distro_target.
-
-2001-08-17  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.c (rc_xml_node_to_subchannel): Don't puke on empty
-       subchannels.
-
-2001-08-16  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package-dep.c: Add print statements for RELATION_NOT_EQUAL
-       and RELATION_NONE
-
-2001-08-15  Joe Shaw  <joe@ximian.com>
-
-       * Merge the redcarpet-parternet branch into HEAD.
-
-2001-08-04  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: create the system packages hash tables even if
-       we don't have system packages, to avoid null hash table
-       lookup warnings later on.
-
-2001-08-01  Ian Peters  <itp@ximian.com>
-
-       * rc-distro.c: undo, sigh
-
-       * rc-distro.c: s/sun4/sun4u/
-
-2001-08-01  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * libredcarpet/src/rc-package-dep.c: Don't return TRUE
-       if RC_RELATION_NONE on a dep with no release/version, argh.
-
-2001-07-31  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps-util.c: Don't keep rof as a static struct,
-       and make sure we update the subchannel's hash tables
-       if they exist.
-
-       * rc-deps-util.c: Keep rof as a static struct, so that
-       we can call dep_or_process multiple times.
-
-       * rc-deps.c: Oops, get rid of references to a package
-       that probably just got deleted.  Pesky FMR's and SEGV's!
-       I wish C didn't suck.
-
-2001-07-27  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Oops, sort a list correctly
-
-       * rc-deps-private.h, rc-deps.c: Don't blindly reject
-       all but the first package in a list
-
-2001-07-26  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-distro.c: Add solaris 5.7
-
-       * rc-deps.c: Fixed memory corruption resulting from using
-       uninitialized variable; also fixes bug with removes
-       and the "control center" issue
-
-2001-07-26  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-rpmman.c: fix a memleak
-
-2001-07-26  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Try to find another package that can
-       provide a missing dependency before removing packages
-       that depend on it.
-
-2001-07-25  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.h (RCChannel): Rename subs_url and unsubs_url to
-       subs_file and unsubs_file respectively, for consistency (and to
-       intentionally break compatibility).
-
-       * rc-channel.c (rc_channel_parse_xml): Build as much of a path
-       as possible for file_path, icon_file, pkginfo_file, pkgset_file,
-       subs_file and unsubs_file.
-       (rc_channel_free): (un)subs_url -> (un)subs_file
-
-       * rc-util.c (rc_build_url): Kill.
-       (rc_maybe_merge_paths): Takes a "parent path" and a "child path"
-       and merges them, depending on the semantics of the child path.
-       FQURLs and absolute child paths are left in tact, and relative child
-       paths are merged with the parent path.
-       (rc_url_is_absolute): Add https.
-       
-2001-07-25  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package-spec.c, rc-package-spec.h: New
-       rc_package_spec_to_str_static and version_to_str_static
-       functions.
-
-       * rc-deps.c, rc-deps.h: Use new _static functions for all
-       debugging output to avoid memory leaks.  Also plug some more
-       leaks where the RCDepProvide struct wasn't getting freed,
-       and where some deps that were created weren't being kept
-       track of.
-
-       * rc-deps.c: Fix a good chunk of memory leaks, thanks Purify!
-
-       * rc-line-buf.c: Minor array bounds read fix.
-
-2001-07-24  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: look for *, not *.o, in the static libraries we
-       unpack, as libdb-3.1.a isn't make up of .o files, apparently
-
-2001-07-24  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_depends_fill): add /usr/local/bin and
-       /usr/local/sbin to the list of directories for which we honor
-       files as provisions, needed to support msc linux according to
-       peter -- note that this shouldn't be necessary, as packages are
-       not supposed to provide files in the /usr/local tree.  Bah.
-
-2001-07-24  Vladimir Vukicevic  <vladimir@rain.ximian.com>
-
-       * rc-deps.c: deep copy the dep structure in a DAP; I'm really
-       going to need to get purify working to make sure everything
-       gets cleaned up right.  Also use rpmish from rc-package-dep
-       to decide whether to call debian_find_self_provides.
-
-       * rc-package-dep.c: make rpmish be not static
-
-2001-07-24  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman.h: Fix an erroneous comment about a signal's parameters.
-
-2001-07-24  Vladimir Vukicevic <vladimir@rain.ximian.com>
-
-       * rc-deps.c: Don't do a stupid check for a dependency
-       based on the name of the package; use the new function
-       that checks the package's dependencies.
-
-2001-07-23  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: erm, don't return the same system package
-       multiple times, causing a nasty loop
-
-2001-07-20  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-distro.c: added suse 7.2 string
-
-       * rc-deps.c: Got rid of fix_missing, needs testing; changed
-       rc_package_dep_verify_relation to use new
-       rc_package_dep_verify_package_relation
-
-       * rc-package-dep.c, rc-package-dep.h: Added new
-       rc_package_dep_verify_package_relation call.
-
-2001-07-19  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (transact_cb): send the basename of the package
-       we're installing, not the full path
-       (transact_cb): double the install_total and add the install_extra
-       to account for a) packages we're installing being both configured
-       and installed, and b) packages we're installing that are really
-       upgrades being removed, configured, and installed.
-
-2001-07-12  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps-private.h, rc-deps.c: Add an extra parameter to
-       upgrade_or_remove so that we can create correct remove info.
-
-2001-07-12  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: #if 0 out some more code for more testing later
-
-2001-07-12  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: #if 0 out the last commit until Vlad and I work
-       through some issues
-
-2001-07-12  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (query_all_read_line_cb): some code to handle
-       Conflicts: + Replaces: == Provides:
-
-2001-07-11  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Fix merging of require short-circuit; it isn't working
-       for some reason.
-
-2001-07-11  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: #if 0 out some currently unused code
-
-       * rc-packman.c: fix two warnings
-
-2001-07-11  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps-private, rc-deps.c, rc-deps-util.c, rc-md5.c, rc-package-dep.h,
-       rc-package-spec.h, rc-pretty-name.c, rc-util.c: Fix compiler warnings
-
-2001-07-11  Ian Peters  <itp@ximian.com>
-
-       * rc-deps.c (deps_create_extra_info): s/_append/_prepend
-
-       * rc-util.c (rc_slist_unique): actually return out at the end ;-)
-
-2001-07-11  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Oops, we need to look at what a package provides,
-       not what it requires, when figuring out what other packages
-       depend on it.
-       
-       * rc-deps.c: Oops, rc_hash_table_slist_insert_unique needs
-       a comparison function argument
-
-       * rc-deps.c, rc-package-dep.c, rc-package-spec.c, rc-package-spec.h:
-       Some speed optimizations
-
-2001-07-11  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: #if 0 the rpmGetRpmlibProvides for now, as this
-       interface -is- only in rpm 4.0.2 as I feared
-
-2001-07-11  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_section_to_package_section): fix stupid
-       crash
-
-2001-07-11  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c, rc-deps.h: Add some helper functions to give better
-       info about what packages depend on others to the GUI (include
-       packages that are pulled in because of things like library provides
-       instead of just the package name itself)
-
-       * rc-util.c, rc-util.h: rc_slist_unique()
-
-2001-07-11  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: added the fake version hack to the mark purge step,
-       now renamed to mark_status.  This should make RC more resilient in
-       the face of strangely ordered packages.
-
-       * rc-distro.c: applied patch from Rodney to add support for
-       Mandrake 8.0, SuSE 7.1, and LinuxPPC 2000 Q4.
-
-       * rc-package-info.c (debian_packages_helper): correctly offset the
-       buf pointer by the length of the initial string when calling
-       rc_debman_fill_depends so we stop getting completely bogus
-       dependency information.
-
-2001-07-11  Ian Peters  <itp@ximian.com>
-
-       * rc-debman-general.h: rc_debman_fill_depends no longer takes a
-       list to append to, but instead returns a new list
-
-       * rc-debman-general.c: no more list paramater, instead declare and
-       return a new RCPackageSList *
-
-       * rc-package-dep.h: add the pre field to the RCPackageDep struct
-       -- when set, this is a Pre-Depends, only used in Debian
-
-       * rc-package-dep.c (rc_package_dep_new): set pre to FALSE by
-       default
-       (rc_package_dep_copy): copy the pre field
-
-       * rc-package-info.c (debian_packages_helper): call
-       rc_debman_fill_depends correctly, concatenate the returned list
-
-       * rc-packman-private.h: get rid of the features member
-
-       * rc-package.h: cosmetic fixes
-
-       * rc-package.c (rc_package_new): set package->section to MISC
-
-       * rc-packman.h: remove the RCPackmanFeatures enum, no longer used.
-       Add the RCPackmanStep enum, which describes what kind of step
-       occured during a transaction_step.  Ditch all of the configure_*
-       signals, and update/reorder the arguments to the transact_*
-       signals.
-       (rc_packman_get_features): removed
-
-       * rc-packman.c: remove CONFIGURE_* from the class signals.  Remove
-       reference to ->priv->features.
-       (rc_packman_get_features): removed
-
-       * rc-rpmman.h: add rpmGetRpmlibProvides to the RCRpmman struct
-
-       * rc-rpmman.c: s/g_slist_append/g_slist_prepend/ in lots of places
-       (transact_cb): fixes to emit the correct signals -- no more
-       configure_*, lots more transact_* with a few extra arguments.
-       (rc_rpmman_section_to_package_section): fixes to stop using
-       g_strsplit, stop using g_strcasecmp, stop being stupid.
-       (parse_versions): stop using g_strsplit, stop being so slow and
-       stupid.
-       (in_set): fix a warning
-       (depends_fill_helper): added, single code path to read a variety
-       of dependency information from the Header
-       (rc_rpmman_depends_fill): rewritten to use depends_fill_helper,
-       now much shorter and fewer bugs
-       (rc_rpmman_query_all): use rpmGetRpmlibProvides to create the
-       rpmlib-internal package, to provide all of the "rpmlib(...)" 
-       provides used for internal rpm package format versioning
-       (load_rpm_syms): grab rpmGetRpmlibProvides
-       (load_fake_syms): grab rpmGetRpmlibProvides
-       (rc_rpmman_init): no more features
-
-       * rc-debman.c (split_status): added, breaks a status line into
-       three words
-       (verify_status_read_line_cb): use split_status where possible,
-       downcase some words and stop using g_strcasecmp, rewrote the logic
-       to detect acceptable/unacceptable status lines
-       (do_purge_read_line_cb): updates to new signal prototype
-       (do_unpack_read_line_cb): emit new signal, including step_type
-       (do_configure_read_line_cb): emit new signal
-       (node_new): added
-       (node_free): added
-       (node_add_prereq): added
-       (construct_graph): added
-       (process_predeps): added
-       (resolve_graph): added
-       (order_packages): added.  uses the previous helper functions to
-       construct the dependency graph of the pre-deps and walk it using a
-       BFS to correctly order packages.  Not actually used yet, sigh.
-       (rc_debman_transact): new signals
-       (query_all_read_line_cb): speedups including getting rid of
-       g_strcasecmp, some small bug fixes, fixes to use
-       rc_debman_fill_depends correctly.
-
-2001-07-10  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-debman.c: get rid of warning
-
-2001-06-25  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Don't be fascist about removing packages;
-       give 'em a chance to get upgraded.
-
-       * rc-deps-util.c: finish up package_hash_helper.
-
-2001-06-21  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-line-buf.c: debugging output die die die
-
-       * rc-deps.c, rc-deps-private.h: minor cleanup
-
-       * rc-deps-util.c: minor cleanup
-
-2001-06-20  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package-info.c: Oops, dep_name_table needs slists to be
-       hashed into it, not packages
-
-       * rc-deps-util.c: Added the one line to make debian work
-
-       * rc-deps.c, rc-deps-private.h: Fixed some memory corruption
-       double-free issues.
-
-       * rc-channel.c: Fixed compile warning
-
-2001-06-19  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package-info.c: forgot to merge
-
-       * merge in from libredcarpet-or-dep-fixup branch
-       
-       * Makefile.am: dist rc-deps-private.h
-       
-2001-06-19  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-channel.c, rc-channel.h: Added dep_name_table along with dep_table
-       which is indexed by name not by spec.  Also changed both to have values
-       which are slists of packages, instead of just one package.  dep_table
-       might go away in the near future.
-
-       * rc-debman-general.c, rc-debman.c: Updated to handle or deps using
-       the rc_dep_or interface.
-
-       * rc-deps-private.h: added.
-
-       * rc-deps-util.c, rc-deps-util.h: renamed rc_deps_fix_system to
-       rc_dep_fix_system;  added rc_dep_or interface functions, and first
-       pass at debian package list munging to provide the right things.
-
-       * rc-deps.c: Updated to understand and use dep_name_table correctly.
-
-       * rc-package-dep.c, rc-package-dep.h: fixed xml parsing bits to create
-       ors
-
-       * rc-util.c, rc-util.h: added utility functions to manage hash tables
-       of slists.
-       
-       * rc-debug-misc.c: minor typo fixes
-
-2001-06-07  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-channel.c, rc-debman-general.c, rc-debug-misc.c,
-       rc-debug-misc.h, rc-debug-misc.c, rc-deps-util.c,
-       rc-deps.c, rc-deps.h, rc-distro.c, rc-package-dep.h,
-       rc-package-info.c, rc-rpmman.c: 
-
-       Changes to make a RCPackageDep into what used to be a
-       RCPackageDepItem.  RCPackageDep isn't a SList anymore; the debian
-       backend hasn't been fully fixed to understand this -- as it is now,
-       it will only use the first part of an or dep.  To be fixed later.
-
-2001-06-14  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact):
-       s/RPMDBI_PACKAGES/RPMDBI_AVAILABLE/
-
-       * rc-rpmman-types.h: remove the unneeded definition of
-       RPMDBI_AVAILABLE
-
-2001-06-14  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): use RPMDBI_PACKAGES, an rpm4
-       specific define, to decide what kind of rpmProblem we have at our
-       disposal.
-
-2001-06-14  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (transaction_add_install_packages): clarify the
-       INSTALL_UPGRADE bit
-       (rc_rpmman_transact): fix the rpmProblem fuckup
-       (split_rpm): s/close/rc_close/
-       (load_fake_syms): fix two typos, we never statically link against
-       rpm4 so this never came up before
-
-       * rc-md5.c (rc_md5): s/close/rc_close/
-
-2001-05-15  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman-private.h (RCPackmanPrivate): Add an extension field for
-       the default file extension. Added prototype for
-       rc_packman_set_file_extension().
-
-       * rc-packman.c (rc_packman_init): Set extension to NULL.
-       (rc_packman_set_file_extension): Added.
-       (rc_packman_get_file_extension): Added.
-       
-       * rc-debman.c (rc_debman_init): Set the file extension to "deb".
-
-       * rc-rpmman.c (rc_rpmman_init): Set the file extension to "rpm".
-
-2001-05-14  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-channel.c (rc_channel_parse_xml): if file_path isn't specified,
-       don't copy path into it -- it should be null, since path is always
-       prepended.
-       
-2001-05-07  Joe Shaw  <joe@ximian.com>
-
-       * rc-md5.c (rc_md5): Close the file descriptor when we're done. Plugs
-       the infamous fd leak.
-
-2001-05-01  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Oops. fix bug where some dependants weren't getting
-       correctly upgraded.
-
-2001-05-01  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c: Change the string for Yellow Dog because it was totally
-       wrong before.
-
-2001-04-23  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: if the provide we read out of the
-       RPMTAG_PROVIDENAME is the same as the name of the package we're
-       in, don't include the provide, since it looks like rpmlib picked
-       up the same hack we did.
-
-2001-04-23  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: add some stupid /opt/gnome SuSE directories
-
-2001-04-23  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: sort of reverted older commit where we were passing a
-       dep to upgrade_or_remove package -- this doesn't make sense,
-       as we're trying to upgrade the /package/ not the dep -- so, the case
-       of foo-dev 1.0 requiring foo 1.0; we don't want to know about the
-       foo 1.0 dependency, we just want a newer foo.
-
-       * rc-deps.c: don't pull in an older version while trying to remove
-       the intermediate failed dependency on system package version; we
-       need to check if the "existing" package is newer, not merely
-       equal.  I now realize that this makes no sense to anyone but me,
-       and I might as well have written about pink elephants and blue
-       clouds in this changelog.
-       
-
-2001-04-23  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: a questionable but apparently necessary fix to no
-       longer break up the unpack onto multiple lines.  Ugh.
-
-2001-04-22  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package.c: It helps to return a new packages array
-       from rc_package_slist_remove_older_duplicates.
-
-       * rc-package.c, rc-package.h: Added
-       rc_package_slist_remove_older_duplicates.
-
-2001-04-21  Ian Peters  <itp@ximian.com>
-
-       * rc-distro.c: cleaned up, put YDL 1.2 in the list, removed
-       Caldera, fixed a LinuxPPC naming issue
-
-2001-04-21  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: some speed fixes; fixed the doubling bug (oops), also
-       we're a bit more smarter in finding an upgrade/remove package case.
-
-       * rc-package-dep.c: On rpm systems, don't merge dep items with
-       different epochs since the dependency semantics with epochs on
-       rpm are too weird.
-
-2001-04-20  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: only mark provides to avoid in provide_require_check
-       if nothing succeeds; otherwise we run the risk of marking something
-       as avoid that's really providing what we want.
-
-2001-04-20  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: fix my last commit
-
-2001-04-20  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: in rc_debman_verify, check the size of the file as
-       well
-
-2001-04-20  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-distro.c: We can't create a hash in dtype->extra_hash
-       if dtype is NULL.  "Oops."
-
-       * rc-distro.c, rc-distro.h: add a RC_DISTRO_NO_GLIB conditional
-       section, for compiling rc-distro without a glib dependency.
-
-       * rc-distro.c: Mandrake uses -i586, debian potato is
-       debian-potato-i386, not -22-.
-
-       * rc-distro.c: recognize RH 7.1 by 7.1 in redhat-release, not
-       7.0.9
-
-2001-04-19  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: oops. process system packages /before/ the package
-       that's about to be installed, so that we catch conflicts and the
-       like correctly.
-
-       * rc-deps.c: stopped calling deps_fix_missing in loop.  This
-       probably isn't necessary any more; will need a good chunk of testing
-       to make sure, though.
-
-2001-04-19  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: don't make a conflict in some cases, but wait until
-       the end to see if it can indeed be provided
-
-2001-04-18  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (split_rpm): close the payload file when we're done
-       writing to it.  This will fix a fd leak, as well as allowing the
-       unlink to actually succeed, meaning that the disk space will be
-       returned to the user.  Reported to me from tigert via joe.
-
-2001-04-18  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: oops, get rid of some fprintfs
-
-       * rc-deps.c: Make sure that the require is added with the joined
-       name before we start adding other things, so that we don't get into
-       a nasty loop.  Also break out of a loop of daps after we
-       upgrade_or_remove, as we probably lost the pointer at this point.
-       The duplicate dep bug exists now.
-
-2001-04-18  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (fill_depends): attempt to handle both the the pre
-       3.0.3 and 3.0.4 and above cases for file dependencies.  This
-       commit may be broken; I'll revert this commit if testing doesn't
-       pan out.
-
-2001-04-17  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (fill_depends): when adding the contents of an RPM
-       file in the provides list, handle the rpm < 3.0.4 case where we
-       don't have RPMTAG_BASENAMES, RPMTAG_DIRNAMES, or
-       RPMTAG_DIRINDEXES.  Here we use the RPMTAG_FILENAMES tag, which
-       was renamed to RPMTAG_OLDFILENAMES in rpm 3.0.4 and above, and no
-       longer works.
-
-2001-04-16  Ian Peters  <itp@ximian.com>
-
-       * rc-line-buf.c: corrected bizarre ben-bug behaviour
-
-       * rc-rpmman.c: add my file-deps hack, we can remove this later if
-       people object too much
-
-2001-04-13  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: when rpmRunTransactions returns < 0, don't treat
-       this as a bad error.  Stupid rpm.
-
-2001-04-10  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c, rc-rpmman.h: introduce rc_rpm_open, rc_rpm_close,
-       and rc_rpm_read to wrap fdOpen, fdClose, fdRead, Fopen, Fclose,
-       and Fread.  jbj makes me upset sometimes.  Also get those symbols
-       from rpmlib when necessary.
-
-2001-04-10  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman-types.h: the borrowed FDIO struct from rpmio.h
-
-       * rc-rpmman.c: if we can't get fdOpen, maybe that's because fdOpen
-       is actually fdio->_open.  did you ever think of that?
-
-2001-04-09  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: oops, fix an infinite loop case..
-
-2001-04-09  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: if we can't open rc-rpm-helper.so, try
-       rc-rpm-helper-with-rpmio.so, not rc-rpm-helper.so again.  I suck.
-
-2001-04-05  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c, rc-rpmman.h: rename fd* to rc_fd*, because jbj is
-       an idiot.  fixes a bug that only shows up on rpm 3.0.4.  god what
-       a fucker.
-
-2001-04-04  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: sigh, s/RPMTAG_NAMES/RPMTAG_NAME/, this is the
-       problem with editing code you can't actually compile.
-       
-2001-04-04  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: whoops, fix the rpmlead and signature references
-
-2001-04-04  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: the rpmlead and signature includes were the same
-       for rpm 3.0.x and 4.0.x, so just include the one copy regardless
-       of rpm version
-
-       * rpmlead-3-0-x.h, rpmlead-4-0-x.h, signature-3-0-x.h,
-       signature-4-0-x.h: removed
-
-       * rpm-rpmlead.h, rpm-signature.h: added
-
-2001-04-04  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.h, rc-rpmman.c: comment out all references to Ferror
-       for the time being.  i was only using this twice, and in both
-       places if there's an error fdOpen should just return NULL anyway,
-       so this seems harmless.  this was required because rpm 3.0.3 lacks
-       Ferror.  sigh.
-
-2001-04-04  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.h, rc-packman.c: added rc_packman_set_libdir and
-       rc_libdir, which let you configure the directory that rc-debman
-       and rc-rpmman look for the rc-*-helper.so files.
-
-       * rc-debman.h (rc_debman_set_helper): removed
-
-       * rc-debman.c (rc_debman_set_helper): removed
-       use rc_libdir where appropriate
-
-       * rc-rpmman.c: use rc_libdir to find the rc-rpm-helper*.so files
-
-2001-04-04  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_init): remove unused variable
-
-2001-04-04  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_init): reverse the order that we dlopen
-       the rc-rpm-helper files in.  this is a weak attempt to get around
-       a potential glibc bug, this shouldn't affect how anything else
-       goes.
-
-2001-04-03  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_init): d'oh, it's rc-rpm-helper.so not
-       rpm-rpm-helper.so
-
-2001-04-03  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (vercmp): add a hack to correctly sort/compare alpha
-       and numeric chunks, so that ximian.1 is larger than 0_helix_1.
-
-2001-04-03  Ian Peters  <itp@ximian.com>
-
-       * rc-md5.c: #include <config.h> to pick up on the endian check
-
-       * rc-rpmman.c: #if 0 out some code that just causes memprof to get
-       mad at me.  It's not like rpmlib is ever going to free this shit
-       anyway.
-
-2001-04-02  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Fixed an unreported conflict case. Oops.
-       Not sure if this breaks anything else, shouldn't...
-
-2001-04-01  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: only add rpmhelperdir and rpmhelper_DATA if
-       ENABLE_RPM and not STATIC_RPM.  don't get rid of libredcarpettmp.a
-       at the end of the libredcarpet.a STATIC_RPM case -- i don't know
-       why i did this in the first place, and now it doesn't get rebuilt
-       every time you pass over this target.  i think.  automake is still
-       my bitch.
-
-2001-04-01  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: add rc-rpmman-types.h to rpm_sources.  add
-       rc-rpm-helper-with-rpmio.so and rc-rpm-helper.so to EXTRA_DIST.
-       Get rid of helperdir and helper_DATA, and conditionally use
-       rpmhelperdir, rpmhelper_DATA, dpkghelperdir, dpkghelper_DATA.
-       conditionally compile rc-dpkg-helper.c into rc-dpkg-helper.so,
-       otherwise just touch this file.  remove libredcarpet.a in
-       clean-local.  automake is now my bitch.
-
-2001-04-01  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: pick more proper names for the rpm .so files
-
-       * rc-rpmman.c: use those more proper names
-
-       * rc-rpm-helper.so, rc-rpm-helper-with-rpmio.so: here are those
-       more proper names we were speaking of
-
-2001-04-01  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: hacked it up to parse RPM_STATIC_LIBS and do some
-       ar magic to put the object files from those libraries into
-       libredcarpet.a.
-
-       * rc-rpmman.c: if RC_RPM4 is defined in the STATIC_RPM case, use
-       the rpm4 symbols, otherwise rpm3
-
-2001-03-30  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: dist rpm-sucks-with-rpmio.so and
-       rpm-sucks-without-rpmio.so
-
-       * rc-rpmman.h: include gmodule.h.  Make major_, minor_, and
-       micro_version gint instead of guint.  Optionally include a GModule
-       for the rpm_lib if we're using the dlopen hack.
-
-       * rc-rpmman.c: if RC_NO_RPM_DB is set, don't try to close the
-       database on destroy.  Possibly g_module_close the rpm_lib on
-       destroy.  Store the rpm_lib GModule in the rpmman struct.
-       g_module_open rpm-sucks-with-rpmio.so or
-       rpm-sucks-without-rpmio.so, not librpm.so and librpmio.so
-       directly.
-       (parse_rpm_version): correctly rip a version string, like x.y.z,
-       into major, minor, and micro parts.
-
-       * rpm-sucks-with-rpmio.so, rpm-sucks-without-rpmio.so: little
-       shared objects that link against the assorted rpm libraries.
-       These are generated with:
-               ld -shared -o rpm-sucks-with[out]-rpmio.so \
-               -lrpm [-lrpmio] -lpopt
-
-2001-03-30  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Got rid of a stray fprintf
-
-       * rc-package-dep.c: Make dep_to_str take an arg of '2' if you
-       want html-ized symbols (&lt; instead of <, etc.)  It's a gint
-       now instead of a boolean.
-
-2001-03-30  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: if we're building the static version, do the evil
-       hack, otherwise don't, just build the libredcarpet.a
-
-       * rc-rpmman-types.h: added.  evil file with types we need to
-       compile on either rpm3 or rpm4 base platforms.
-
-       * rc-rpmman.c, rc-rpmman.h: eww.  either dlopen the librpm.so file
-       and read symbols out of it, or use the statically linked versions.
-       wrap all rpm functions through function pointers in the rpmman
-       struct.
-
-2001-03-29  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c (deps_find_best_package_for_dep): Doh. Don't iterate
-       over the variable you just made a copy of in a temporary iterator.
-       
-       * rc-deps.c (deps_find_provide):  Only upgrade at most one package
-       per pass, since we might have the same package in there twice
-       at this point and we don't want to remove the wrong thing.
-
-2001-03-29  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c, rc-verification.c, rc-debman.h, rc-verification.h:
-       add some nasty hacks so that joe can override the location of the
-       .so and the .gpg files
-
-2001-03-27  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c (deps_add_anonymous_package): Do a bit of sanity
-       checking, make sure we never add an anonymous package that already
-       exists in some other form.
-       (deps_find_provide): don't assume that just because we found a
-       newer package for fixing a pdi that it will indeed fix it -- check
-       to make sure that package hasn't already been added to the list.
-
-2001-03-27  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (split_rpm): no need to set *md5sum to NULL
-       (rc_rpmman_verify): initialize md5sum to NULL, fixes BUG:1890,
-       BUG:2002
-
-       * rc-packman.c: make the marshaller static void to shut the whiny
-       compiler up ;-)
-
-2001-03-21  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c, rc-deps.h: Add creating of extra_info structures for
-       why packages need to be installed/upgraded.
-
-2001-03-21  Joe Shaw  <joe@ximain.com>
-
-       * rc-distro.c (distro_types[]): Change the "extra_stuff" parameters of
-       the distros.
-       (rc_figure_distro): Added a hash table to the RCDistroType struct
-       called extra_hash and parse the extra_stuff string here.
-       (rc_distro_option_lookup): Added. Looks up an option in the extra_hash
-       hash table.
-
-2001-03-20  Joe Shaw  <joe@ximian.com>
-
-       * rc-debman.c (rc_debman_verify): Do not crash if package->history
-       is NULL; don't do the md5sum if so.
-
-2001-03-20  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package-info.c: When parsing debian packages.gz files, set
-       the installed_size on the update, not on the package -- this fixes
-       the debian package size calculation bug.
-
-2001-03-19  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps-util.c: Oopsie!  Data allocated outside
-       of a loop should /not/ be freed inside the loop.
-
-2001-03-16  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: moved back to the older deprecated but still
-       functioning rpmio api.  I think we maybe compile on RPM 3.0.3 now?
-
-2001-03-16  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): switch back to "\n" instead of
-       "<br>" in the error strings, we'll handle this in the GUI.  New
-       approach to handling all of the different RPMSENSE_FOO defines,
-       try to avoid the ?? relation.
-
-2001-03-13  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): put "<br>" instead of "\n"
-       into error strings, sigh
-
-2001-03-12  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (vercmp): handle the broken "mdk" stuff
-
-2001-03-12  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_read_header): revert last, we'll fix it
-       in vercmp instead, otherwise users would see this in the GUI
-
-2001-03-12  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_read_header): handle the broken "mdk"
-       parts of the release when dealing with Mandrake, sigh
-
-2001-03-09  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): cast the transact_cb to
-       rpmCallbackFunction to avoid one last warning, since Vlad went to
-       all this trouble
-
-2001-03-09  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): g_string_sprintfa probably
-       wants a GString as the first argument
-
-2001-03-09  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps-util.c, rc-deps.c, rc-deps.h, rc-pretty-name.c: Made
-       these warning clean.  Also cought a bug in rc-deps.c (oops!)
-
-       * rc-package-section.c, rc-package-section.h: Created
-       rc_package_section_to_user_string ().
-
-2001-03-08  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (do_unpack_read_line_cb): handle "Unpacking
-       replacement foo" as well as "Unpacking foo"
-       move the verify_status stuff to the top of the file to fix a
-       warning
-
-2001-03-08  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_init): only open the database for writing
-       if we're root; otherwise open the database for reading only
-
-2001-03-08  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): avoid using the
-       rpmErrorCallback stuff, instead use the rpmProblemSet information
-       as appropriate given the return value of rpmRunTransactions.
-       Let's see if this approach works any more reliably.
-
-2001-03-07  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package-spec.c, rc-package-spec.h: Added
-       rc_package_spec_slist_find_name -- to search
-       for a name in a list of packages, for example.
-
-2001-03-07  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): so this should work for
-       reporting conflict errors through the rc_packman_set_error pathway
-
-       * rc-rpmman.c (rc_rpmman_transact): some loving to the rpm
-       dependencies reporting stuff.  It still just dumps it to stderr,
-       but we'll work on that.
-
-       * rc-rpmman.c (transaction_add_remove_packages): don't shadow the
-       definition of count and trample all over things.  D'oh.
-
-       * rc-packman.c: define my marshaller correctly to avoid stupid
-       warnings.  La la la.
-
-       * rc-rpmman.c (rc_rpmman_transact): correctly initialize elements
-       of state to avoid a segfault, and then some nasty counting errors.
-
-2001-03-07  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps-util.c, rc-deps-util.h: Some code for getting nice
-       user-style error strings about missing packages and conflicts.
-
-       * rc-package-spec.c, rc-package-spec.h: Created
-       rc_package_spec_version_to_str.
-
-       * rc-package-dep.h: Minor comment.
-
-2001-03-07  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (transaction_add_install_packages): guint instead of
-       gboolean, return the expected number of package installations, 0
-       on error
-       (transaction_add_remove_packages): same as above, more pertinent
-       given the multi-install problem addressed on 3/5.  Some other
-       random cleanups / clarifications when handling rpm return values
-       to hopefully be more clear about what's an error and what's not.
-       (rc_rpmman_transact): put state on the stack so we don't need to
-       worry about leaking it, I was leaking it before.  Get
-       install_total and remove_total from _add_install_packages and
-       _add_remove_packages.  Pass it by reference into the callback.
-       Only add install and remove packages if install_packages or
-       remove_packages are non-NULL.  General clarifications.
-
-2001-03-06  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (transaction_add_remove_packages): move the
-       rpmdbFreeIterator call to outside of the while look, I'm a moron,
-       and remove a spurious call to rpmdbNextIterator, I'm a moron
-       (rc_rpmman_query_all): remove an unneeded call to headerFree, and
-       free the iterator at the end of the scan
-
-2001-03-05  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (transaction_add_remove_packages): comment out the
-       code paths that error out when multiple packages match the string
-       we're removing on.  Apparently, in the real world this isn't such
-       an error case.  Also, for RPM 4.0 make sure we remove all packages
-       which match the label.
-
-2001-03-04  Ian Peters  <itp@ximian.com>
-
-       * rc-line-buf.c (rc_line_buf_cb): handle G_IO_ERR in addition to
-       G_IO_HUP, perhaps this will fix the defunct dpkg problem.  I don't
-       know how to recreate, so this is just a guess, but it makes sense
-       to me.
-
-2001-02-28  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (i18n_fixer): added.  fixes the language issues with
-       dpkg I think.  Switch to new RCPackman signals
-
-       * rc-packman.c, rc-packman.h: make sane the signals RCPackman
-       emits
-
-       * rc-rpmman.c, rc-rpmman.h: use these new sane signals
-
-2001-02-27  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: ewpz. don't get rid of old provides conflicts if the
-       new one is the same as the old one.
-
-       * rc-deps.c: updated rant
-
-       * rc-deps.c: Get rid of old provides conflicts if there is a new one
-       coming in, doh.
-
-       * rc-deps.c: Fix typo causing segfault due to a variable being NULL
-
-2001-02-26  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Made remove and install work correctly. Removes are
-       correctly partial now as well.
-
-       * rc-package-dep.c: undef'd DEBUG -- it spews way too much info than
-       necessary at -d 6
-
-       * rc-deps.c, rc-deps.h: New nifty partial tree stuff.  Should work,
-       I hope.  Any package that is installed on the system is assumed to be
-       "ok", and its dependencies are not checked.
-
-       * rc-deps-util.c: Call rc_dep_resolution_resolve_system
-
-       * rc-distro.c: add linuxppc
-       
-       * rc-rpmman.c: Changed a break to a continue to make the
-       verrev-string splitting thing work.
-
-2001-02-25  Ian Peters  <itp@ximian.com>
-
-       * Makefile.am: add -DLIBDIR=... to the INCLUDES line, and install
-       rc-dpkg-helper.so into $(libdir)/redcarpet
-
-       * rc-debman-private.h: make the status_file member const
-
-       * rc-debman.c: grab the helper out of LIBDIR instead of SHAREDIR,
-       access the status_file and rc_status_file from the debman
-       consistantly
-
-       * rc-rpmman.h: rename db to read_db for clarity
-
-       * rc-rpmman.c: s/db/read_db/ where appropriate.  Open the rpm
-       database O_RDONLY initially, hold this lock while RC is running.
-       (rc_rpmman_transact): open the rpm database O_RDWR and use this
-       for creating and running the transaction.
-
-2001-02-24  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c (rc_figure_distro): Don't error out if we can't
-       determine what architecture the user is on. Instead return NULL and
-       let the front-end deal with it.
-       
-       * rc-distman.c (rc_distman_new): Ditto, except with the distro instead
-       of the arch. (BUG:1425)
-
-2001-02-20  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps-util.c, rc-deps-util.h: GPL message
-
-       * rc-md5.c: license notice
-
-2001-02-20  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact):
-       s/install_flags/transaction_flags/
-
-       * rc-rpmman.c (rc_rpmman_transact): add some install_flags and
-       problem_filter action, woowoo
-
-2001-02-19  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * Makefile.am: oops, fix typo for dist
-
-       * rc-package-dep.c: rpm sucks my ass and ignores epochs and/or releases
-       in comparisons if they're not specified in the dependency -- so now
-       we do that for all deps, not just equals.
-
-       * rc-deps-util.c: Oops. Remove all but the /newest/ duplicate,
-       not all but the oldest (doh!)
-
-2001-02-16  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps-util.c, rc-deps-util.h: New files that have some verification
-       stuff in them.
-
-       * rc-package.c, rc-package.h: rc_package_slist_find_duplicates (for
-       verification)
-
-       * Makefile.am: Add rc-deps-util.[ch]
-
-2001-02-12  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package-set.h: Fix #endif to get rid of compiler warning
-
-       * rc-deps.c: Attempt to fix brokenness introduced by earlier
-       commit.  Removes are more intelligent and robust now (we can use
-       upgrade_or_remove knowing that the remove will happen corerctly
-       later).
-
-       * rc-debug-misc.c, rc-debug-misc.h: Added debug_rc_package_slist_dump.
-
-2001-02-10  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Do more intelligent checking when deciding what to
-       remove due to a conflict.  Set the channels before populating
-       hashes with system pkgs, in case something needs to be fixed. Also
-       protect against installing the same package multiple times.  This
-       needs some testing love.
-
-2001-02-09  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): check the number of conflicts
-       as well as the return code, don't I suck
-
-2001-02-09  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Fix conflict resolution (fixes Mandrake 7.0 bug)
-
-2001-02-08  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c (distro_figurers): Move Mandrake ahead of Red Hat, 
-       because Mandrake (7.0, anyway) has /etc/redhat-release.
-
-2001-02-08  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-distro.c: Oops. check for architecture the "correct" correct way.
-
-       * rc-deps.c: Fixed rpm breakage introduced.
-
-       * rc-deps.c: Okay, so even more fixications. Will test on redhat.
-
-2001-02-07  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.h: oops, this one too
-
-       * rc-deps.c: More fixications for debian. All known breakage cases don't
-       break now.
-
-       * rc-deps.c: Fix for installing packages that conflict with eachother in the
-       install step.
-
-2001-02-07  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_section_to_package_section): stop leaking
-       and give it love
-
-2001-02-07  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_section_to_package_section): added.  don't look at this function
-       (rc_rpmman_read_header): use it here
-
-2001-02-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-package-importance.c: Ditch RC_IMPORTANCE_NEW and RC_IMPORTANT_MAX
-
-2001-02-06  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Fixed a few debian issues...
-
-2001-02-06  Joe Shaw  <joe@ximian.com>
-
-       * rc-distro.c: Add Caldera to distro_figurers and distro_types.
-
-2001-02-06  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Fix for fixing RPM systems.  Debian might
-       feel ignored.
-
-2001-02-05  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: finish moving the db into the RCRpmman struct
-
-2001-02-02  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Yay for typos. Made debian conflicts (mostly) work
-       again.  Nuked a single line so a list wasn't getting looked up
-       and was always null..
-
-2001-02-01  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: bite me
-
-       * rc-rpmman.h: move the rpmdb into the RCRpmman struct
-
-       * rc-rpmman.c: remove all calls to rpmdbOpen, rpmdbClose, etc.
-       (rc_rpmman_init): rpmdbOpen here
-       (rc_rpmman_destroy): rpmdbClose here
-       (rc_rpmman_transact): check the rpmRunTransactions return code and
-       do something intelligent with it
-
-2001-01-31  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Made redhat 6 and 7 work. Yay. Broke things
-       on debian. Boo.
-
-
-2001-01-31  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_error_cb): Stupid rpmlib doesn't
-       differentiate between fatal and non-fatal errors
-
-2001-01-31  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): add a call to rpmdepCheck on
-       the transaction before we try to run it, duh
-
-2001-01-30  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * Makefile.am: use $srcdir for dpkg-helper to make distcheck
-       correctly.
-
-       * rc-deps.c: EEEEK. What was I thinking? Unbreak deps on redhat
-       (and possibly lots on debian too).
-
-       * rc-package-info.c: minor align fix
-
-2001-01-30  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (vercmp): try again
-
-2001-01-30  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (vercmp): fixed to be more like the one in rpm4,
-       fixes the xinetd bug on rh7
-
-2001-01-30  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Tasty treats for debian users. Less crash, more happy!
-       Kozmo can't touch this!
-
-2001-01-30  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (transact_cb): with a hack hack here and a hack hack
-       there, here a hack, there a hack, everywhere a hack hack...
-
-2001-01-30  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c, rc-deps.h: More yum yum fixes. Shouldn't
-       crash now, purify is happy.. also added some _frees
-       so that we can recover that memory usage!
-
-2001-01-29  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: ewpz. don't get stuck in an infinite iteration
-       when removing a require at some point.
-
-2001-01-29  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (make_unpack_commands): correctly sysconf for
-       ARG_MAX instead of guessing
-
-2001-01-29  Joe Shaw  <joe@ximian.com>
-
-       * rc-packman.c (rc_packman_get_error): If there is no packman object,
-       that's a fatal error.
-
-2001-01-29  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): get rid of a broken
-       transaction step, add some rpmError handling, etc
-
-       * Makefile.am: add $(GLIB_CFLAGS) to the includes
-
-2001-01-29  Ian Peters  <itp@ximian.com>
-
-       * rc-verification.c (rc_verify_gpg): set --logger-fd to 1 instead
-       of 2, which is the fd the RCLineBuf is listening on.  It's ok,
-       since it'll ignore hte lines that don't begin with [GNUPG:], and
-       this shuts up the
-       I'm-gpg-I-won't-shut-up-even-with-the-quiet-option-crap that
-       everyone has complained about.
-
-2001-01-29  Joe Shaw  <joe@ximian.com>
-
-       * rc-channel.h: Added pkgset_file and pkgset_compressed.
-
-       * rc-channel.c (rc_channel_parse_xml): Parse pkgset_file and
-       pkgset_compressed.
-       (rc_channel_free): Free pkgset_file and pkgset_compressed.
-
-       * rc-pretty-name.c (rc_pretty_name_lookup): Handle the case if
-       the hash table is NULL.
-
-2001-01-29  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-package.c: do de de
-
-       * rc-package.c, rc-package.h: Add
-       rc_package_slist_sort_by_pretty_name.
-
-       * rc-deps.c: la la la
-
-       * rc-deps.c: Okay, so, try to do some sort of conflict
-       notification.
-
-       * rc-deps.c, rc-deps.h: Oops. count /correctly/ for the recursion.
-       Also add notification of abort.
-
-       * rc-pretty-name.c: get rid of debug fprintf
-
-2001-01-29  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c: pass some carefully chosen --force-foo options to
-       dpkg to avoid failures on fairly benign situations
-
-2001-01-29  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * Makefile.am, rc-pretty-name.c, rc-pretty-name.h, libredcarpet.h:
-       Pretty names, pretty names.
-
-       * rc-distro.c: Figure out that debian is x86, assbarn.
-
-2001-01-28  Ian Peters  <itp@ximian.com>
-
-       * rc-distman.c: change the ENABLE_RPM3 / ENABLE_RPM4 to ENABLE_RPM
-
-2001-01-28  Vladimir Vukicevic  <vladimir@ximian.com>
-
-       * rc-deps.c: Lots of yummy fixes.  Removes work better,
-       debian works better, etc.
-
-       * rc-distro.c: added mdk 7.2
-
-2001-01-26  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (make_unpack_commands): overhauled, made it use
-       const strings, since that's all that was ever there, a little more
-       efficient I think
-       (do_unpack): make all dpkg --unpack commands once first with the
-       --no-act option, and only if this succeeds do we proceed to
-       actually screw things up
-       (rc_debman_init): add call to rc_package_dep_system_is_rpmish
-
-       * rc-rpmman.c (rc_rpmman_init): add call to
-       rc_package_dep_system_is_rpmish
-
-2001-01-26  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package-dep.c, rc-package-dep.h: New
-       rc_package_dep_system_is_rpmish call.
-
-       * rc-deps.c: VASTLY improved debian dependency code.  Conflits
-       are moslty handled correctly.  Debian stupid-self-conflicts are
-       handled.  Packages are correctly uninstalled.  The code itself
-       has a lot of cruftiness laying around; it's going to need some
-       massaging to look pretty, but it, apparently, works.
-
-       * rc-deps.h: added dep_print_results
-       
-       * rc-debug-misc.c, rc-debug-misc.h: Moved dep_print_results into
-       rc-deps.c.
-
-       * rc-package-dep.c: Oops, keep iterating the list, silly!
-
-       * rc-package-dep.h: new warning about RCPackageDepItem
-
-       * rc-package-info.c: fixed some formatting bugs.
-
-       * ChangeLog: Fixed itp's HR blunder.
-
-2001-01-25  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_query): BLEEP me.  I hate rpmlib.  Not
-       finding something in a database isn't a failure, it's a successful
-       search.
-
-2001-01-25  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-deps.c: oops. don't remove the list we're traversing
-       from under us.
-
-2001-01-25  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-deps.c, rc-deps.h: More yummy fixes.  I'm feeling much more
-       confident about debian now.  gaim-gnome $!@# doesn't work, still.
-       I know why, just haven't poked the right place to fix it.
-
-2001-01-24  Ian Peters  <itp@ximian.com>
-
-       * rc-package-info.c (debian_packages_helper): Instead of "No
-       information available", we instead say "Upstream Debian release"
-
-       * rc-debman.c (do_unpack): add the --auto-deconfigure option to
-       the unpack line
-
-2001-01-24  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: global cleanup, pkg to package, p to packman, hdr
-       to header, etc
-       (GTKFLUSH): added this macro to flush pending gtk events
-       (transact_cb): add calls to GTKFLUSH after every signal emission
-       (transaction_add_install_packages): renamed, cleaned up, add lots
-       of calls to rc_packman_set_error
-       (transaction_add_remove_packages): ditto
-       (rc_rpmman_transact): updated to name changes, cleanup, error
-       handling
-       (split_rpm): added, does much of the work that used to be in
-       rc_rpmman_verify
-       (rc_rpmman_verify): call split_rpm, factor the code better
-
-2001-01-24  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package-dep.c: If you're going to use autoconf config.h
-       flags in your code, it helps to include config.h.  It also
-       helps to get the right name of the variable.
-
-2001-01-23  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package-dep.c: Use rpmish semantics only if RPM is compiled in
-
-       * rc-deps.c: use rc_package_slist_sort_by_spec, not the one that
-       got renamed to _by_name!
-
-       * rc-package-spec.c, rc-package-spec.h: rc_package_spec_compare
-
-       * rc-package.c, rc-package.h: rc_package_slist_sort_by_spec
-
-2001-01-23  Ian Peters  <itp@ximian.com>
-
-       * red-carpet.gpg: added keys for Red Hat, Caldera, TurboLinux,
-       Linux Mandrake, and SuSE
-
-2001-01-23  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-distro.c: erm, get it right.
-
-       * rc-distro.c: Add Scyld Beowulf 2.0
-
-       * rc-package.c: Hmmm. You really -can't- strcmp() two
-       RCPackage *'s, no matter how much you try.
-
-2001-01-23  Ian Peters  <itp@ximian.com>
-
-       * rc-debman.c (do_purge): s/dpkg-helper/rc-dpkg-helper/
-       (do_unpack): ditto
-       (do_configure): ditto
-
-2001-01-23  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package-spec.c, rc-package-spec.h: I want
-       (g-slist-find-custom requestd_pkgs pkg
-               (lambda (a b) (not (package-spec-equal a b))))
-       (Added package_spec_not_equal)
-
-2001-01-23  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.c (rc_packman_query): remove busy check
-       (rc_packman_query_file): remove busy check
-       (rc_packman_query_all): remove busy check
-       (rc_packman_verify): remove busy check
-       (rc_packman_find_file): remove busy check
-
-2001-01-23  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c: add install_extra to InstallState
-       (transact_cb): add the install_extra to the transaction total.
-       Only switch to the configuring state if we're installing things.
-       (rc_rpmman_transact): calculate the install_extra by querying if
-       packages to be installed have older already installed versions
-
-2001-01-23  Ian Peters  <itp@ximian.com>
-
-       * rc-packman.c (rc_packman_query): comment out busy check
-       (rc_packman_query_file): comment out busy check
-       (rc_packman_query_all): comment out busy check
-       (rc_packman_verify): comment out busy check
-       (rc_packman_find_file): comment out busy check
-
-2001-01-23  Ian Peters  <itp@ximian.com>
-
-       * rc-rpmman.c (rc_rpmman_transact): first pass at code to handle
-       the additional transactions generated by upgrading rpm packages
-
-2001-01-23  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-debug-misc.c, rc-debug-misc.h: Add an optional debug level
-       to printing routines.
-
-       * rc-deps.c, rc-deps.h: Revert to a little older version which works
-       well for redhat, has some issues for debian.
-
-       * rc-package-dep.c: Change verify_and_relation to take an is_virtual
-       parameter, for debian.  Also some epoch/release hacks for RPM.
-
-       * rc-package-info.c: Add the is_virtual stuff to find_package.
-
-2001-01-23  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.c: replaced some tabs with the correct number of
-       spaces
-       (rc_rpmman_query): back to using RPMDBI_LABEL, I guess
-       (rc_rpmman_find_file): nothing changed here; I just wanted to
-       point out that my first attempt at writing this for rpm4 worked.
-       ;-)
-
-2001-01-23  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.c (rc_rpmman_query): s/RPMDBI_LABEL/RPMDBI_NAME/,
-       after conversation with msw
-       (rc_rpmman_find_file): rpm4 version initial pass, let's see if
-       this works
-
-2001-01-22  Ian Peters  <itp@helixcode.com>
-
-       * rc-channel.h: distro_target is now a GSList* of gchar*, not just
-       gchar*
-
-       * rc-channel.c: as above; split the xml distro_target on : to get
-       a list of distros to work with.  Basically this is channel
-       aliasing; we can now say
-       distro_target="redhat-60-i386:redhat-61-i386:redhat-62-i386" and
-       it'll just work
-
-2001-01-22  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.c (rc_rpmman_find_file): stubbed out for rpm4, need to
-       talk to msw.  fixed a memory leak in the rpm3 version
-
-2001-01-22  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.c (rc_rpmman_find_file): added.  rpm3 only right now,
-       I'll test it and then write rpm4
-
-       * rc-debman.c (rc_debman_find_file): add one last
-       rc_packman_set_error
-
-2001-01-22  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c (rc_debman_find_file): add some rc_packman_set_error
-       calls where appropriate
-
-2001-01-22  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.c: remove some spurious rpm includes
-
-2001-01-22  Ian Peters  <itp@helixcode.com>
-
-       * rc-verification.c (rc_verify_gpg): don't pass the
-       --no-auto-key-retrieve option, as it does not appear to be present
-       in gpg 1.0.1 on RH6.2.  Initialize the verification as
-       RC_VERIFICATION_STATUS_UNDEF instead of the default,
-       RC_VERIFICATION_STATUS_FAIL
-
-2001-01-22  Ian Peters  <itp@helixcode.com>
-
-       * rc-channel.c, rc-channel.h, rc-debman-general.c,
-       rc-debman-general.h, rc-debman-private.h, rc-debman.h,
-       rc-debug-misc.c, rc-distman.c, rc-line-buf-private.h,
-       rc-line-buf.c, rc-pakcage-dep.c, rc-package-importance.c,
-       rc-package-info.c, rc-package-section.c, rc-package-set.c,
-       rc-package-set.h, rc-package-spec.c, rc-package-update.c,
-       rc-package-update.h, rc-package.c, rc-package.h,
-       rc-packman-private.h, rc-packman.c, rc-packman.h, rc-rpmman.c,
-       rc-rpmman.h, rc-util.c, rc-verification.c, xml-util.h: fixed some
-       include files
-
-2001-01-21  Ian Peters  <itp@helixcode.com>
-
-       * libredcarpet.h: this hasn't been maintained in a while, so I
-       just fixed it
-
-2001-01-21  Ian Peters  <itp@helixcode.com>
-
-       * rc-dpkg-helper.c: moved from dpkg-helper.c
-
-       * Makefile.am: s/dpkg-helper/rc-dpkg-helper/g
-
-2001-01-21  Ian Peters  <itp@helixcode.com>
-
-       * dpkg-helper.c, libredcarpet.h, rc-channel.c, rc-channel.h,
-       rc-debman-general.c, rc-debman-general.h, rc-debman-private.h,
-       rc-debman.c, rc-debman.h, rc-debug-misc.c, rc-debug-misc.h,
-       rc-debug.c, rc-debug.h, rc-deps.c, rc-deps.h, rc-distman.c,
-       rc-distman.h, rc-distro.c, rc-distro.h, rc-line-buf-private.h,
-       rc-line-buf.c, rc-line-buf.h, rc-package-dep.c, rc-package-dep.h,
-       rc-package-importance.c, rc-package-importance.h,
-       rc-package-info.c, rc-package-info.h, rc-package-section.c,
-       rc-package-section.h, rc-package-set.c, rc-package-set.h,
-       rc-package-spec.c, rc-package-spec.h, rc-package-update.c,
-       rc-package-update.h, rc-package.c, rc-package.h,
-       rc-packman-private.h, rc-packman.c, rc-packman.h, rc-rpmman.c,
-       rc-rpmman.h, rc-util.c, rc-util.h, rc-verification-private.h,
-       rc-verification.c, rc-verification.h, xml-util.c, xml-util.h:
-       fixed licensing and copyright
-
-2001-01-21  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c (do_purge): check if dpkg exists in /usr/bin/dpkg
-       before trying to run it
-       (do_unpack): ditto
-       (do_configure): ditto
-
-2001-01-21  Ian Peters  <itp@helixcode.com>
-
-       * rc-verification.c (gpg_read_line_cb): don't create the
-       verification in several places, it was already created and passed
-       in initialized
-       (rc_verify_gpg): create the RCVerification, initialize it
-       correctly, return an RC_VERIFICATION_STATUS_UNDEF instead of NULL
-       if we fail for some reason.  Fucking check if gpg is in the PATH
-       before we blindly exec it like the dumbass I am.  Closes mothra
-       #something or other.  execlp the gpg_command instead of "gpg".  If
-       exec fails, _exit instead of returning
-
-       * rc-util.c (rc_is_program_in_path): added rc_file_exists, which I
-       shamelessly stole from gnome-libs
-
-       * rc-util.h: added rc_file_exists
-
-2001-01-19  Ian Peters  <itp@helixcode.com>
-
-       * rc-package-info.c (debian_packages_helper): replace strcmp mess
-       with call to rc_debman_section_to_package_section
-
-       * rc-package-importance.c, rc-package-importance.h: added.
-       contains the RCPackageImportance stuff moved from
-       rc-package-update.[ch], and optimized a bit.
-
-       * rc-package-update.c, rc-package-update.h: remove
-       RCPackageImportance stuff.
-
-       * Makefile.am: add rc-package-importance.[ch] to
-       libredcarpet_a_SOURCES
-
-       * rc-package-update.h: rename SECTION_* to RC_SECTION_*
-
-       * rc-package-update.c: ditto.
-       (rc_package_update_to_string): change strings output from
-       SECTION_FOO to foo
-       (rc_string_to_package_update): ditto
-
-       * rc-debman-general.c (rc_debman_section_to_package_section):
-       s/SECTION_/RC_SECTION_/
-
-       * rc-rpmman.c (rc_rpmman_check_match): s/SECTION_/RC_SECTION_/
-
-2001-01-19  Ian Peters  <itp@helixcode.com>
-
-       * rc-package-update.c (rc_xml_node_to_package_update):
-       s/"installed_size"/"installedsize"/ so we stop getting installed
-       size's of 0
-
-2001-01-18  Ian Peters  <itp@helixcode.com>
-
-       * red-carpet.gpg: added.  contains our public key, so far
-
-       * Makefile.am: install red-carpet.gpg in $(datadir)/redcarpet, and
-       put it in EXTRA_DIST
-
-2001-01-18  Ian Peters  <itp@helixcode.com>
-
-       * rc-deps.c, rc-deps.h (rc_dep_resolution_new): remove the packman
-       paramater
-       (rc_dep_set_packman): added
-
-2001-01-18  Ian Peters  <itp@helixcode.com>
-
-       * rc-package-section.c, rc-package-section.h: added.  Some stuff
-       moved out of rc-package.[ch]
-
-       * Makefile.am: add rc-package-section.[ch] to
-       libredcarpet_a_SOURCES
-
-       * rc-packman-private.h, rc-packman.c
-       (rc_packman_generic_version_compare): Added.  Compares to
-       RCPackageSpec's given a strcmp-like comparison function
-
-       * rc-rpmman.c (vercmp): added.  The hacked up vercmp function
-       originally stolen from rpm, freshly moved from rc-package-spec.c,
-       with a few more changes
-       (rc_rpmman_version_compare): added.  Call
-       rc_packman_generic_version_compare with vercmp
-
-       * rc-debman.c (verrevcmp): added.  Stolen from dpkg, much like
-       vercmp from rpm
-       (rc_debman_version_compare): added.  Call
-       rc_packman_generic_version_compare with verrevcmp
-       (rc_debman_class_init): insert rc_debman_version_compare into
-       packman_class
-
-       * rc-debman-general.c (rc_debman_parse_version): alloca the input
-       before we modify it to protect against const strings, changes as
-       appropriate.  Find the /last/, not the first '-' when we split
-       version and release apart, bug discoverd in gdm
-       2.0-0.beta4-helix1.12.
-
-       * rc-channel.c, rc-channel.h (rc_find_best_package): moved to
-       gui-channel.c
-
-       * rc-package-spec.c, rc-package-spec.h (rc_package_spec_compare):
-       removed.  This isn't possible to get right without knowing which
-       backend we're using, which is why it's in the RCPackman now.
-       (rc_package_spec_copy): get the order right -- dest, src
-
-       * rc-package-info.c (debian_packages_helper): fix call to
-       rc_package_spec_copy
-
-       * rc-package-update.c (rc_package_update_copy): fix call to
-       rc_package_spec_copy
-
-       * rc-package.h, rc-package.c: fix some naming conventions, rename
-       rc_package_slist_sort to rc_package_slist_sort_by_name for
-       clarity.  Break out the RCPackageSection stuff, as above
-       (rc_package_compare_func): removed, unused and broken
-
-       * rc-deps.h, rc-deps.c (rc_dep_resolution_new): add an RCPackman
-       to the interface, which sets das_global_packman variable -- gross
-       hack to deal with the broken design.  Change all calls to
-       rc_package_spec_compare to rc_packman_compare_version
-
-       * rc-package-dep.c: extern das_global_packman, change all calls to
-       rc_package_spec_compare to rc_packman_compare_version
-
-2001-01-16  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c: Fix a couple cases where I forgot to update a
-       format string when I got rid of one of the inputs, this explains
-       the real garbage Joe was seeing
-
-2001-01-16  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c (debman_poll_write_cb): only need to handle \t, not
-       \r here anymore
-
-       * rc-line-buf.c (rc_line_buf_cb): handle the \r\n case -- when we
-       hit a \n, backtrack a step and see if we should chop off the \r
-       too
-
-2001-01-16  Ian Peters  <itp@helixcode.com>
-
-       * rc-util.c, rc-util.h: Added rc_close
-
-       * rc-line-buf.c, rc-line-buf.h, rc-line-buf-private.h: Added
-       license information.  Made the fd get/settable via GtkArg.
-       rc_line_buf_new now takes no paramaters, use rc_line_buf_set_fd
-
-       * rc-verification.c, rc-verification.h: update to the new
-       RCLineBuf API, generic cleanups, license information, #include
-       file fixes, and debugging code added
-
-       * rc-rpmman.c: #include file fixes, twiddle with some calls to
-       rc_packman_set_error
-
-       * rc-packman.h: tweak the RCPackmanError values
-
-       * rc-packman-private.h: Add rc_packman_clear_error, and make
-       rc_packman_set_error use varargs, and prepend the passed string,
-       colon separated, to the current error reason, and calculate the
-       new RCPackmanError value
-
-       * rc-packman.c: add some calls to rc_packman_clear_error, change
-       some calls to rc_packman_set_error to reflect the new
-       RCPackmanError values, add rc_packman_clear_error, and rewrite
-       rc_packman_set_error
-
-       * rc-debman-general.h: fix some #include lines, add
-       rc_debman_section_to_package_section
-
-       * rc-debman-general.c: add rc_debman_section_to_package_section
-
-       * rc-debman-private.h: move status_file and rc_status_file into
-       the RCDebmanPrivate struct
-
-       * rc-debman.c: where oh where to start.  Handle all the possible
-       Debian interactive cases, including interactive unpack,
-       interactive configure, interactive purge.  Handle the broken
-       conf-file crap to STDERR.  Make the little dialog use a fixed
-       width font.  Catch all sorts of error conditions, and call
-       rc_packman_set_error appropriately, including the severity and a
-       valid description of what occured.  Change lots of calls to use
-       rc_debug.  Clean up a lot of code.  Push the PAGER environment
-       variable as cat to avoid some nasty surprises.  Lots of other
-       stuff that I'm forgetting, but it's all good.  ;-)
-       
-2001-01-06  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-deps.c, rc-deps.h: Fix some more conflict handling
-       love.  Debian hates me.
-
-2001-01-05  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-channel.c, rc-debman-general.c,
-       rc-debug-misc.c, rc-deps.c,
-       rc-package-dep.c, rc-package-info.c,
-       rc-package-spec.c: use rc_debug instead of
-       g_warning/g_print/fprintf/etc
-
-2001-01-04  Ian Peters  <itp@helixcode.com>
-
-       * rc-channel.h: remove the dep_table pointer in the
-       RCChannel struct
-
-       * rc-channel.c: assorted cleanups, reflect the above
-       change
-
-       * rc-package-info.c (rc_subchannel_parse_debian):
-       create the dep_table in the subchannel, not the channel
-
-2001-01-04  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-distman.c: Bail if we can't figure out
-       what kind of distro this is (don't crash)
-
-       * rc-distro.c: Call debian testing/unstable
-       unstable.
-
-       * rc-deps.c: Look for the dep_table in the
-       correct subchannel, not the channel's main dep_table. Also
-       some more conflict loving.
-
-       * rc-deps.h: Conflict loving changes.
-
-2001-01-03  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman-general.c: add some includes, fix some
-       other includes, contribute a faster version of
-       rc_debman_parse_version, and add some debugging code
-
-       * Makefile.am: add BUILD_CFLAGS to INCLUDES
-
-2001-01-03  Ian Peters  <itp@helixcode.com>
-
-       * rc-common.h: removed
-
-       * rc-debug.c, rc-debug.h: added.
-       contains RC_ENTRY, RC_EXIT, and some simple structure for
-       debugging levels, etc.  Not really used anywhere yet.
-
-       * Makefile.am: add rc-debug.[ch], remove rc-common.h
-
-       * libredcarpet.h: fix include paths, kill reference
-       to rc-common.h, add rc-debug.h
-
-       * rc-debman.c: s/rc-common/rc-debug/
-
-       * rc-channel.c: s/rc-common/rc-debug/ and fix the
-       include paths
-
-       * rc-package-info.c: ditto
-
-2000-12-28  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-deps.c: Oops. don't crash if what is null
-       in a conflict when printing it.
-
-2000-12-27  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-deps.c, rc-deps.h: Some intelligent
-       things about conflicts. They are mostly recognized now. The info
-       that comes out isn't perfect, but it's a start. gaim vs. gaim-gnome
-       works now ;-)
-
-2000-12-22  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * Makefile.am: typo
-
-       * rc-package-info.c, rc-debman.c:
-       include debman-general
-
-2000-12-22  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * Makefile.am: fixing for new config.in
-
-       * rc-debman-general.c: New file containing      useful things,
-       even if rc-debman isn't compiled in
-
-       * rc-distman.c: fixes for selecting the right packmans
-       to include
-
-       * rc-debman.c: removed stuff into rc-debman-general.c
-
-       * rc-distro.c: some new distros
-
-2000-12-22  Ian Peters  <itp@helixcode.com>
-
-       * rc-package-update.h, rc-package-update.c:
-       General sanity checking, throw some const's in, g_return(_val)_if_fail
-       in a few places, yada yada yada
-
-2000-12-19  Ian Peters  <itp@helixcode.com>
-
-       * rc-channel.c, rc-channel.h: added
-       rc_channel_get_subchannel to return a pointer to the subchannel by
-       id
-
-2000-12-18  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-deps.c: Small fix to fix things
-       that need fixing. (Vague? Yes.)
-
-2000-12-18  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * Makefile.am: add rc-debman-private.h,
-       rc-verification-private.h, rc-line-buf-private.h to
-       sources line for dist
-
-2000-12-18  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-deps.c: Small fix to avoid
-       bizzare unnecessary conflicts.
-
-2000-12-15  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-debman.c: Change deps.h to rc-deps.h
-
-2000-12-15  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * Makefile.am: Added rc-debug-misc and rc-deps
-
-       * rc-deps.c: New dependency bits. Somewhat
-       less broken than the old code, right now somewhat more
-       in some ways. Conflicts, in particular, need help (and the
-       whole virtual conflict thing on redhat).
-
-       * deps.c: removed.
-
-       * libredcarpet.h: Changed deps -> rc-deps
-
-       * rc-channel.c: fixes to find_best_package
-       to use new pkginfo API
-
-       * rc-package-dep.c: Added lots of code
-       to verify AND relationships in deps
-       (rc_package_dep_verify_and_relation,
-       rc_package_dep_verify_and_slist_relation), also fixed
-       rc_package_dep_item_verify_relation. Also code to merge
-       dependencies (for deps code).
-
-       * rc-package-info.c: code to handle
-       AND dependencies for finding new packages.
-
-2000-12-07  Joe Shaw  <joe@helixcode.com>
-
-       * rc-channel.c (rc_subchannel_free): Don't destroy the 
-       dep_table if it is NULL.
-
-2000-11-29  Joe Shaw  <joe@helixcode.com>
-
-       * rc-channel.c (rc_xml_node_to_channel): Back out the
-       #if 0.
-
-2000-11-29  Joe Shaw  <joe@helixcode.com>
-
-       * rc-channel.c (rc_xml_node_to_channel): #if 0ed out some
-       code that was keeping channel lists from parsing. Ian, please fix this
-       up if it's not right.
-
-2000-11-21  Joe Shaw  <joe@helixcode.com>
-
-       * rc-channel.c (rc_channel_free): Removed reference to
-       RCChannel->title_file.
-       (rc_channel_parse_xml): Ditto.
-
-       * rc-channel.h (RCChannel): Removed title_file, added
-       featured, although it isn't handled at all yet.
-
-2000-11-09  Joe Shaw  <joe@helixcode.com>
-
-       * rc-verification.h: Change the order of the
-       RCVerificationStatus enum to be ordered by "severity".
-
-2000-11-09  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.h, rc-debman.c,
-       rc-debman-private.h: move all fields into RCDebmanPrivate,
-       make rc_debman_transact take an RCPackageSList*, and lots of other
-       cleanups.  Add rc_debman_find_file.
-
-       * rc-line-buf.h, rc-line-buf.c,
-       rc-line-buf-private.h: move all fields into
-       RCLineBufPrivate, lots of other cleanups
-
-       * rc-packman.h, rc-packman.c,
-       rc-packman-private.h: move all fields into
-       RCPackmanPrivate, lots of other cleanups.  _transact takes an
-       RCPackageSList.  Add rc_packman_find_file.
-       Add rc_packman_get_features.
-
-       * rc-rpmman.c: _transact takes ...
-
-       * rc-verification.c: fixicate to a little RCLineBuf
-       change
-
-2000-11-09  Ian Peters  <itp@helixcode.com>
-
-       * rc-package.c (rc_package_get_latest_update): change the
-       g_return_if_fail to g_return_val_if_fail.
-
-2000-11-08  Joe Shaw  <joe@helixcode.com>
-
-       * rc-package.c (rc_package_get_latest_update): Added a
-       convenience function for getting the latest update from a package.
-
-2000-11-02  Ian Peters  <itp@helixcode.com>
-
-       * rc-package-spec.h, rc-package-spec.c:
-       removed all of the RCPackageSection stuff, put it into rc-package.[ch].
-       (struct _RCPackageSpec): remove the section, installed, installed_size,
-       channel, and subchannel fields.  These belong in struct _RCPackage.
-       (rc_package_spec_init): this now takes a few less arguments
-
-       * rc-package-update.h, rc-package-update.c:
-       move the typedef's above the included libredcarpet files
-       (struct _RCPackageUpdate): add a const RCPackage * back to the package
-       that we are an update to, and an installed_size field
-
-       * rc-package.h, rc-package.c:
-       move the typedef's above the included libredcarpet files
-       Move all of the RCPackageSection stuff into here
-       (struct _RCPackage): add the section field, the installed_size and
-       installed fields, a const pointer back to our parent subchannel,
-       and handle all of these new fields in _copy and _free.
-
-       * rc-packman.c:
-       (rc_package_slist_add_package): fix the call to rc_package_spec_init
-
-       * rc-rpmman.c, rc-debman.c:
-       update all references to ->spec.installed, ->spec.installed_size,
-       and ->spec.section to ->installed, ->installed_size, and ->section
-
-       * rc-package-dep.c, rc-package-dep.h:
-       move the typedef's above the included libredcarpet files
-       Add a few const's in places
-
-       * rc-channel.h: move all of the typedef's above the
-       included libredcarpet files
-
-       * rc-channel.c:
-       (rc_xml_node_to_subchannel): pass the RCChannel* instead of the
-       url_prefix and channel_id separately.  Set the subchannel->channel to
-       the channel passed in.  Pass the channel into rc_xml_node_to_subchannel
-
-       * rc-package-info.c:
-       (rc_subchannel_parse_debian): fix some references to the channel
-       and subchannel fields in the RCPackageSpec, now gone, and point to
-       the installed and installed_size fields in the package, not the spec
-
-       * rc-package-set.h:
-       Move the typedef's above the included libredcarpet files
-
-       * xml-util.c, xml-util.h:
-       Add a lot of const's where appropriate
-
-2000-11-02  Ian Peters  <itp@helixcode.com>
-
-       * rc-package-update.h, rc-package-update.c:
-       (rc_xml_node_to_package_update): pass the url_prefix and name of the
-       package into this function, to avoid some annoying post processing
-
-       * rc-package.h, rc-package.c:
-       (rc_xml_node_to_package): pass the url_prefix, channel_id, and
-       subchannel_id into the function, to avoid some annoying post
-       processing; pass the url_prefix, along with my own name, into
-       rc_xml_node_to_package_update
-
-       * rc-channel.c:
-       (rc_xml_node_to_subchannel): take the url_prefix and channel_id,
-       passing them along to rc_xml_node_to_package [along with my own
-       subchannel preference], don't try to fix the url's in post
-       processing
-       (rc_xml_node_to_channel): pass the extra information needed into
-       rc_xml_node_to_subchannel
-
-2000-11-02  Ian Peters  <itp@helixcode.com>
-
-       * pkginfo.c, pkginfo.h: removed these in
-       favor of rc-package-info.c and rc-package-info.h.
-
-       * rc-package-info.c, rc-package-info.h:
-       Rewrote rc_subchannel_parse_helix in favour of making each structure
-       responsible for remembering how to parse itself
-       [rc_xml_node_to_package, for example].  If any structure changes, you
-       need to modify only functions in rc-<structure>.c to make sure
-       everything continues to parse.  Assorted other cleanups to other
-       functions inherited directly from pkginfo.c.  I pretty much left the
-       Debian stuff alone.
-
-       * Makefile.am: remove pkginfo, add rc-package-info
-
-       * deps.c: fix the include lines [<foo.h> in
-       favour of "foo.h", as the automake book suggests], and
-       s/pkginfo\.h/rc-package-info.h/
-
-       * libredcarpet.h: fix the include lines as per the
-       automake book, s/pkginfo\.h/rc-package-info.h/
-
-       * rc-channel.h: include <gnome-xml/tree.h> for the xml
-       stuff, fixicate the include lines
-       (struct _RCSubchannel): move the dep_table from the RCChannel into
-       here, as it would otherwise be /really/ broken
-       (rc_xml_node_to_channel): convert an xmlNode* to an RCChannel*
-
-       * rc-channel.c: fixicate the include lines, include some
-       xml loving
-       (remove_helper): static function, added.  Free the packages in the
-       package hash table
-       (rc_subchannel_free): after talking with vlad, there's no longer any
-       reason not to deep free the package hash table, using remove_helper.
-       Shallow free on the dep_table [which just has pointers into the
-       package hash]
-       (rc_channel_free): free a few elements that people added and forgot to
-       free, free the package set list, free the subchannels.  Whoops.
-       (my_little_helper): a static helper function to add children to an
-       xmlNode from a hash table
-       (rc_xml_node_to_subchannel): static, given an xmlNode*, recreate the
-       RCSubchannel.  Using the url_prefix given by the RCChannel, fix the
-       package_url and signature_url fields of the RCPackageUpdates deep in
-       the nested mess.  Also create the package and dep_table hashes.
-       (rc_xml_node_to_channel): given an xmlNode* and the RCChannel*, fill in
-       the missing parts of the structure [mostly using
-       rc_xml_node_to_subchannel]
-
-       * rc-debman.c, rc-debman.h: fixicate some
-       includes
-       (rc_debman_query_file): make any file we query provide itself, which
-       means we don't have to remember to keep adding this in so many places.
-       (rc_debman_verify): update to work with the structure changes.
-       Look for the package and signature local filenames in the RCPackage
-       struct, filled in after they are downloaded.  Correctly reference
-       the RCPackageUpdate where appropriate.
-
-       * rc-rpmman.c, rc-rpmman.h: fixicate some
-       includes
-       (rc_rpmman_verify): aim for the right elements of the RCPackage struct
-
-       * rc-package-dep.c, rc-package-dep.h:
-       fixicate some includes
-       (rc_string_to_package_relation): added.
-       (rc_package_relation_to_string): added.
-       (rc_xml_node_to_package_dep_item): static, added.  Used by
-       rc_xml_node_to_package_dep.
-       (rc_xml_node_to_package_dep): added.
-
-       * rc-package-set.c, rc-package-set.h:
-       fixicate some includes
-       (rc_package_set_new): added
-       (rc_package_set_free): added
-       (rc_package_set_slist_free): added
-       It's only slightly worrisome that these functions didn't exist before.
-
-       * rc-package-spec.h, rc-package-spec.c:
-       fixicate some includes
-       (struct SecTable): removed
-       (extern sectable[]): removed
-       use the rc_package_section_to_string and rc_string_to_package_section
-       functions now
-       (rc_package_section_to_string): added
-       (rc_string_to_package_section): added
-       They do the obvious things
-
-       * rc-package-update.h, rc-package-update.c:
-       fixicate an include
-       (enum _RCPackageImportance): add RC_IMPORTANCE_NEW
-       (struct _RCPackageUpdate): fiddle with some fields, renaming and moving
-       them around
-       (rc_string_to_package_importance): added
-       (rc_package_importance_to_string): added
-       (rc_xml_node_to_package_update): added
-       There's a pattern here, pay close attention
-
-       * rc-package.h, rc-package.c: fixicate some includes,
-       fiddle with some field names
-       (rc_xml_node_to_package): added
-
-       * rc-verification.c: fixicate some includes
-       (rc_verify_gpg): add the --no-auto-key-retrieve option to the gpg call
-
-       * xml-util.h, xml-util.c:
-       (xml_get_prop): added
-       (xml_get_content): added
-       (xml_get_guint32_content_default): added
-
-2000-10-30  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package-dep.c, libreadcarpet/rc-package-dep.h:
-       Changed the #define's to enums, to make for cleaner code and also
-       so that gdb can give us names insted of numbers. Added
-       rc_packge_dep_verify_and_relation, which verifies a
-       RCPackageDep as if it were AND'd instead of OR'd. Also added
-       rc_package_dep_item_is_subset, which will attempt to merge
-       two RCPackageDepItems.
-
-2000-10-29  Ian Peters  <itp@helixcode.com>
-
-       * rc-channel.c:
-       (rc_channel_parse_xml): I'm sorry, I just had to reindent this
-       function.  It was really bad.
-
-       * rc-debman.c: include pty.h, shut up gcc.
-       (rc_debman_verify): wrote it.  It checks a detached signature, if
-       one exists in the signature field in the RCPackage.  It checks the
-       md5sum, if there's one in the RCPackage.
-
-       * rc-package-update.h: tweaked some of the members of
-       the RCPackageUpdate struct, and added signature_url and
-       signature_size.  These are for detached signatures, if they exist.
-
-       * rc-package.h: added two new members to the
-       RCPackage struct, filename and signature.  These are NULL until
-       after the package (and maybe signature) are downloaded, then they
-       store the name of the downloaded files.
-       (rc_package_copy_spec): kill this
-
-       * rc-package.c:
-       (rc_package_copy): let's just use rc_package_spec_copy instead of
-       the stupid rc_package_copy_spec function.  Check if old_pkg is
-       NULL before we do stuff.  Also copy filename and signature.
-       (rc_package_copy_spec): kill this
-       (rc_package_free): check if rcp is NULL before we start freeing
-       things.  Also, free the filename and signature.
-       (rc_package_slist_sort): skip the intermediary step of putting the
-       result in a variable on the stack; let's just return the sort.
-
-       * rc-packman.h, rc-packman.c,
-       rc-rpmman.c: rc_packman[_real]_verify takes an
-       RCPackage, not a filename now.
-
-       * rc-verification.h, rc-verification.c:
-       add rc_verify_md5_string, you know what it does
-
-       * pkginfo.c:
-       (grab_packageupdateinfo_list): grab the signature and
-       signature_size from the xml, and btw who the hell named this
-       function? ;)
-
-2000-10-27  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c: Oops.. add check for null p before verifying
-       the relation.
-
-2000-10-26  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package-dep.c: New words for EQUAL
-       instead of just (??)
-
-       * deps.c: Some code to handle extra bizzare
-       conflict issues
-
-2000-10-26  Ian Peters  <itp@helixcode.com>
-
-       * rc-packman.c: add some gtk_main_iteration calls to key
-       spots to keep things happy
-
-       * rc-debman.c: print the command every time we exec dpkg, and
-       print out every line it sends us back, prefixed by "DEBMAN: ".
-
-2000-10-26  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * Makefile.am: add clean-local target
-
-2000-10-26  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c: remove a definite race condition in the
-       new magic hack
-
-2000-10-26  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * dpkg-helper.c, Makefile.am: Added
-       the building of dpkg-helper.so, also makefile.am to build it
-       and copy it in the right place.
-
-2000-10-26  Ian Peters  <itp@helixcode.com>
-
-       * rc-line-buf.h, rc-line-buf.c:
-       Add rc_line_buf_get_buf which gets the current internal buffer even if
-       there's been no '\n' yet.  Needed for The Debian Hack.
-
-       * rc-debman.c: OH MY GOD IT WORKS!
-       I'm not going to try to give you a good changelog entry on this,
-       because I had to do so many crufty things it's not even funny.  But it
-       works.  This won't work until Vlad commits dpkg-helper.c and the
-       associated Makefile.am loving.
-
-2000-10-26  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c: I need to get my boring commit in.
-       We now have a RC_DEPS_DEBUG_LEVEL env var that sets
-       the amount of spewage. We should always compile with
-       #define DEBUG now, at least for betas.
-
-2000-10-25  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-distro.c, rc-distro.h: Change
-       same_as into a pretend_name -- it's only to be used if we do not
-       support the other distro uniquely, as it will break things if
-       there is a channel for both the pretend name and the real name. In
-       fact, this should probably not be used at all.
-
-       * gui-init.c: Change some of the startup channel
-       parsing bits to reflect rc-distro changes.
-
-2000-10-25  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c (query_all_read_line_cb): kill some stale
-       debugging code, add a helpful comment
-
-2000-10-25  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.c (rc_rpmman_depends_fill): ignore the top
-       seekret messages that rpmlib encodes in the dependency header
-       information.  rpmlib is a crufy broken pile of dung.
-
-2000-10-25  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package.c: copy the stupid damn idiotic
-       damn piece of crap stupid hold bit in the _copy func
-
-2000-10-25  Jacob "Ulysses" Berkman  <jacob@helixcode.com>
-
-       * libredcarpet.h: don't inlclude rc-rpmman.h or
-       rpm-debman.h
-
-       * rc-rpmman.h, rpmlead-4-0-x.h,
-       signature-4-0-x.h, Makefile.am: rpm4
-       fixes
-
-2000-10-25  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package-dep.h: Oops, update the header proto
-
-2000-10-25  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c: change every call to write to instead use
-       rc_write, which is the pedantic checking version.  Add lots of error
-       handling where rc_write may have returned FALSE.
-
-2000-10-25  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c, deps.h: Beginning of cleanup,
-       some comments added/removed...
-
-       * rc-distro.c: Some lins to shut up warnings
-
-       * rc-debman.c: Added code to ignore locks if
-       any of the magic env vars are set
-
-       * rc-package-dep.c, rc-package-dep.h:
-       Some code to pretty-print a package dependency relation.
-
-2000-10-25  Ian Peters  <itp@helixcode.com>
-
-       * rc-string.c, rc-string.h: removed, as
-       nothing uses this anymore.
-
-       * Makefile.am, pkginfo.c,
-       rc-debman.c, rc-util.c: remove references
-       to rc-string.h and rc-string.c
-
-2000-10-25  Ian Peters  <itp@helixcode.com>
-
-       * rc-util.c (rc_write): kill a warning, add a const to buf
-
-       * pkginfo.c (debian_packages_helper): kill some unused
-       variables
-
-       * rc-rpmman.c (rc_rpmman_verify): initialize some
-       variables to shut gcc up
-
-2000-10-25  Ian Peters  <itp@helixcode.com>
-
-       * Makefile.am: set the G_LOG_DOMAIN to libredcarpet, and
-       set the SHAREDIR (this is something of a hack, but...).  Add the new
-       files rc-verification.c and rc-verification.h to the libredcarpet
-       sources.
-
-       * rc-line-buf.h: add the RCLineBufStatus enum, so that
-       read_done can just return a status, instead of having a separate
-       read_error signal.  Get rid of the hup_id, since we'll handle all of
-       the g_io signals in a single callback.  Get rid of the read_error
-       signal, and fix the prototype on the read_done signal.  Rename read_id
-       to cb_id.
-
-       * rc-line-buf.c: remove READ_ERROR from SIGNALS, purge all
-       mention of hup_id (rc_line_buf_destroy, rc_line_buf_class_init,
-       rc_line_buf_init).  Fix the marshaller on read_done.  Rename the
-       rc_line_buf_read_cb to rc_line_buf_cb.  Handle the condition ==
-       G_IO_HUP case.  Emit read_done on a read of 0 without EAGAIN.  Fix the
-       off-by-one array access that vlad caught in purify.  Remove
-       rc_line_buf_hup_cb.  Fix rc_line_buf_new.  Rename read_id to cb_id.
-
-       * rc-md5.h: change the rc_md5 function to return guint8 *
-       instead of as a string, so that we can memcmp this directly with the
-       md5 in an rpm header.  Add the rc_md5_string function to provide the
-       old functionality.
-
-       * rc-md5.c: (rc_md5): change this guy to return the md5
-       in a guint8 *.  Mostly involves removing, not adding, code.
-       (rc_md5_string): added.  Returns the md5 as a string of hex characters
-       instead.
-
-       * rc-verification.h: RCVerification struct, a lot of
-       enums, and some functions.
-
-       * rc-verification.c: implementation of the foundation for
-       RCVerification, along with three verification methods, rc_verify_gpg,
-       rc_verify_md5, and rc_verify_size.  Look in the header for the
-       appropriate details.
-
-       * rc-packman.h: include rc-verification.h.  Clean up the
-       RCPackmanError enum.
-       (rc_packman_real_verify): change the type, now returns an
-       RCVerificationSList * given an RCPackman * and a filename.
-       (rc_packman_verify): ditto
-
-       * rc-packman.c (rc_packman_verify): clean up to the new
-       api
-
-       * rc-util.h: added rc_write, a safe way to write a buffer
-       to a file descriptor (handles all of those EINTR and EAGAIN issues).
-       Returns TRUE if the write was a success, and FALSE if it was a failure.
-
-       * rc-util.c (rc_write): added, see above.
-
-       * rpmlead-3-0-x.h, signature-3-0-x.h: Borrow
-       some header files from rpm-3.0.6 for the signature extraction stuff.
-       Stupid stupid rpm.  This may or may not work for rpm-4.x, I'll test
-       that in a bit.
-
-       * rc-rpmman.c: include rc-verification.h, rc-util.h, and
-       the new rpm borrowed header files.
-       (rc_rpmman_verify): implemented.  Uses some internal rpm functions, a
-       lot of elbow grease, and some love to verify the supported signatures
-       in an rpm (gpg, md5, and size).
-       (rc_rpmman_destroy): added.  Free the rpmroot member.
-       (rc_rpmman_class_init): chain the destroy.
-
-       * rc-debman.c:
-       (rc_debman_verify): added.  Do nothing stub function until we work out
-       how the detached gpg signatures work.
-       (mark_purge_read_done_cb): new marshaller for read_done in RCLineBuf
-       (do_purge_read_done_cb): new marshaller for read_done in RCLineBuf
-       (do_unpack_read_done_cb): new marshaller for read_done in RCLineBuf
-       (do_configure_read_done_cb): new marshaller for read_done in RCLineBuf
-       (query_all_read_done_cb): new marshaller for read_done in RCLineBuf
-       (verify_status): added (along with some callbacks).  Makes sure that
-       the /var/lib/dpkg/status file is at least somewhat sane.  Resets any
-       pending selections (other than hold), because RC won't honor them.  Of
-       course, this only runs if you're root, because it needs to rewrite the
-       status file.
-
-2000-10-23  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c: Added code to handle held packages. (First
-       try, need to find way to test.)
-
-       * deps.h: Added HELD_PACKAGE conflict type
-
-       * rc-package.h: Added hold gboolean
-
-2000-10-20  Joe Shaw  <joe@helixcode.com>
-
-       * rc-rpmman.c (rc_rpmman_query_all): Set the
-       RCPackageSpec's installed bit to TRUE. Closes Mothra #70.
-
-2000-10-20  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c, deps.h: Added preliminary
-       type field to conflicts to aid in resolution.
-
-       * pkginfo.c: small change in how we provide ourselves
-
-       * rc-channel.c, rc-channel.h: Moved
-       find_best_package here, exported.
-
-       * rc-distro.c: Fixed warnings
-
-       * rc-package.c, rc-package.h: Added 
-       utility functions for converting hashesh (by spec, by name)
-       to lists
-
-       * rc-util.c, rc-util.h: Added
-       rc_hash_table_copy
-
-2000-10-19  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c (do_configure): fix my last broken commit
-       (forgot to #if 0 out one part)
-
-2000-10-19  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c (rc_debman_init): if we can't grab the lock,
-       set the error and reason as appropriate.  Some other in-development
-       code that I #if 0'd out.
-
-       * rc-packman.h: fix the name of
-       rc_packman_configure_progress (was config_progress) to kill a warning
-
-       * rc-packman.c: kill some gtk_events_pending bs
-
-       * rc-rpmman.c: #if 0 out some unfinished/unneeded stuff
-       to kill a few warnings.
-
-2000-10-18  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * pkginfo.c: Fixed stupid bug where a \0 wasn't being
-       put at the end of each segment of a debian description, causing
-       the weird descriptions in the info displays.
-
-       * deps.c: Copy the system packages list when passed in.
-       Leaks memory.
-
-       * rc-debman.c: Always use status_file instead of the
-       hardcoded path
-
-       * rc-package-dep.c, rc-package-spec.c:
-       Absolutely nothing important; no changes.
-
-2000-10-18  Ian Peters  <itp@helixcode.com>
-
-       * rc-line-buf.c (rc_line_buf_read_cb): change the FALSE to
-       TRUE when I call g_string_free, as it really is my job here
-
-2000-10-18  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c: signal (SIGCHLD, SIG_DFL) before forking
-       everywhere because I am now paranoid.  I have no idea what is setting
-       SIGCHLD to SIG_IGN for me, but I wasted a lot of time on this one.
-       Life sucks.  Did I mention I spilled apple juice all over myself by
-       hitting the top of a bottle and blowing out the bottom?
-
-2000-10-18  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c (rc_debman_query_all_real): again make every
-       package provide itself, so that vlad's lazy ass dependency code doesn't
-       have to do any work.  La la la.
-
-2000-10-18  Joe Shaw  <joe@helixcode.com>
-
-       * rc-util.c (rc_mktmpdir): Removed. rc-debman doesn't
-       use it anymore. Closes Mothra #30.
-
-2000-10-17  Ian Peters  <itp@helixcode.com>
-
-       * rc-line-buf.c, rc-line-buf.h: added.
-       This bad boy is a GtkObject that provides buffered read-a-line from a
-       fd (aka a file or a pipe) using g_io_add_watch stuff.  I totally like
-       my little object, it's pretty dope.
-
-       * Makefile.am: added rc-line-buf.[ch] to the sources for
-       libredcarpet
-
-       * rc-debman.c: so some fixicating and an attempt to add
-       the "watch for stupid needy-of-manual-configuring packages" feature
-       turned into a total rewrite (almost) of this guy to make that doable.
-       So now literally everything in rc-debman uses rc-line-buf, so that it
-       can operate from within a GMainLoop I run by hand, which lets me use
-       g_io_add_watch to watch for a dpkg-run script trying to read... which
-       is what I've got to do next.  But it's now doable.
-       Also, add the feature that joe requested -- it now emits
-       transaction_step and configure_step with a seqno of 0 before it does
-       any transactioning or configuring, so that the gui can be smarter
-
-       * rc-rpmman.c: add the same new feature as in debman (the
-       0 seqno signals)
-
-       * rc-util.c, rc-util.h: remove all traces of
-       the old RCLineBuf (sorry vlad!)
-
-       * packman_test.c: fix an odd crash or two, add command
-       completion ;)
-
-2000-10-16  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-channel.c: oops. xmlParseMemory wants the
-       number of real characters, not counting the null (hence the
-       length of a bytearray - 1)
-
-       * rc-package-set.c: same as above.
-
-       * rc-package-set.c, rc-package-set.h:
-       Fixed minor parsing bugs.
-
-       * deps.c: fixed crash that occurs if debugging is
-       turned on. (Oops!)
-
-2000-10-13  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * Makefile.am: added new files
-
-       * rc-package-set.c, rc-package-set.h: New
-       files, beginning on package set support.
-
-       * rc-util.c, lilbredcarpet/rc-util.h: New function to
-       un-gzip in memory (Yay, no more nasty popen()'s!)
-
-       * rc-channel.c, pkginfo.c: Use new
-       gunzipping code
-
-       * rc-channel.h: Add package set slist in struct
-
-       * rc-package.c, rc-package.h: added GPL
-       headers
-
-       * rc-util.c, rc-util.h: New uncompress
-       functions that take a gzip'd buffer and uncompress it
-
-2000-10-13  Joe Shaw  <joe@helixcode.com>
-
-       * rc-channel.c, rc-channel.h: Added
-       copyright and license info to the top (and emacs rules)
-       (rc_channel_parse_xml): Add a new flag, "available_select" that,
-       when defined, makes the "Select All" and "Select None" buttons
-       appear in the available packages page. Closes Mothra #34.  *
-
-2000-10-13  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * Makefile.am: Change distro.[ch] with rc-distro.[ch]
-
-       * rc-distro.c, rc-distro.h: new files;
-       rewrite of distro code to support different architectures, provide
-       for different languages, etc. Also to keep distro tags in sync
-       with build system. (XML now should reference distro_target tag)
-
-       * rc-channel.c, rc-channel.h: Add
-       distro_target; got rid of distribution and major/minor.
-
-       * libredcarpet.h: Changed distro.h to rc-distro.h
-
-       * rc-distman.c, rc-distman.h: Use new
-       rc-distro code.
-
-2000-10-11  Joe Shaw  <joe@helixcode.com>
-
-       * rc-channel.c (rc_channel_parse_xml): Add a mirrored
-       flag to the channel. This is not yet used.
-
-2000-10-06  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-debman.c: package_accept speedup, small
-       debug printing fix
-
-       * deps.c: Oops. Set the list back to the result
-       of the g_slist_remove, so that if all packages end up getting
-       removed, things don't die.
-
-2000-10-05  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-debman.c: Print conversation with dpkg
-       to stderr.
-
-2000-10-04  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.c (hash_destroy): recreate the hash_table
-       (rc_debman_query_all): grab a valid reference to the pkg_hash
-
-2000-10-04  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.c: some minor fixes for rpm4 support
-
-2000-10-04  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.c (transaction_add_remove_pkgs): write an rpm4
-       specific version.
-
-2000-10-04  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c: Correctly fix up the list of packages
-       to be installed (no more g_slist_remove_link magic)
-
-2000-10-04  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c, deps.h: Oops. Use a hash table
-       instead of blindly searching through the list of passed-in
-       to-install packages, since sometimes something will be a virtual
-       package that's provided.
-
-2000-10-04  Ian Peters  <itp@helixcode.com>
-
-       * rc-debman.h: add a hash_table to the RCDebman struct.
-
-       * rc-debman.c: cache the results of a _query_all so that
-       successive calls to _query will be much faster.  If you _query without
-       a call to _query_all, it will populate the hash table first, and then
-       look up the packages requested.  This is because queries in debian
-       by reopening and scanning the /var/lib/dpkg/status file are ass slow.
-       The only way to invalidate the hash is to _transact, and the next
-       _query will have to rescan the status file.  This is a major change
-       in rc_debman, requiring a lot of functions to move around and/or
-       change drastically.  I've tested it pretty thoroughly, but if anything
-       breaks for you, check for sanity using packman_test first before
-       suspecting anything else for a while.  All of the _copy functions are
-       written because I need them in order to copy packages out of the hash
-       table.  Fun fun fun.  But not really.
-       (rc_debman_query_helper): fix vlad's memory leak
-
-       * rc-package-dep.h, rc-package-dep.c:
-       (rc_package_dep_item_copy): added
-       (rc_package_dep_copy): added
-       (rc_package_dep_slist_copy): added
-
-       * rc-package-update.h, rc-package-update.c:
-       (rc_package_update_copy): added
-       (rc_package_update_slist_copy): added
-
-       * rc-package.h, rc-package.c:
-       (rc_package_copy): added
-       (rc_package_free): fix another vlad memory leak ;)
-
-2000-10-03  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c: Do intelligent things with conflicts (only
-       look for a resolving package if you're not trying to install that
-       named package). I think we are smarter than apt at this point.
-
-       * rc-package-spec.c: Aiee. fixed the compares wrt
-       epoch.
-
-       * deps.c: Oops. Handle the case where a non-first
-       item of an OR dep was already installed in the system (don't
-       always go for the first!)
-
-2000-10-03  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.h: Added packages_requested in output RR,
-       giving the real list of packages that were used (with duplicates
-       removed)
-
-       * deps.c: Added lots of code to handle some cases that
-       really, really, really need testing. If package A is installed and
-       it depends on B == 1.0, and you try to install package C which depends
-       on any version of A and upgrade A and B in the same operation, this is
-       what used to happen: the A dep was processed from the system (because C
-       was seen first) and its hard dep on B was put in. When the new A was
-       processed, the hard dep on B would fail (notwithstanding the new B). There
-       are two solutions -- one was to remove all traces of the old package; this
-       is what untangle_package tries to do. Note that this is probably not a safe
-       thing to do, and now it's only called in cases where nothing else can be
-       done. The other thing, which is what's done, is to be a bit more intelligent
-       about it, by checking to see if something you're depending on is in the
-       installed list, and processing that (as long as it resolves other deps).
-       This needs testing; right now, the code seems to return a few more packages
-       than apt does.
-
-       * rc-package.c (rc_package_compare): Made it just call
-       rc_package_spec_compare -- it wasn't checking for null versions/revisions.
-
-2000-10-02  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c (resolution_uninstall_package_makelist): check
-       if the package was already removed before spewing a warning!
-
-2000-10-02  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c (pkg_conflicts_list_iterator): Fixed buglet
-       that caused weird conflict things to hapen. Bork bork.
-
-2000-10-02  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c (pkg_conflicts_list_iterator): make it work with
-       null channels again (oops)
-
-       * Makefile.am (libredcarpet_a_SOURCES): removed
-       helix-* cruft, added some missing .h's
-
-2000-10-01  Ian Peters  <itp@helixcode.com>
-
-       * rc-channel.c, rc-channel.h: added
-       rc_channel_compare_func for hashing and stuff
-
-       * rc-package.c, rc-package.h: added
-       rc_package_compare_func for hashing and stuff
-
-2000-10-01  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-package-update.c, rc-package-update.h:
-       filename becomes url, and is now a full URL.
-
-       * pkginfo.c: Parse the url correctly, as stated in the
-       above.
-
-2000-10-01  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-channel.c: strdup path into file_path if it isn't set.
-
-       * pkginfo.c: Oops. gtk_main_iteration iff gtk_events_pending,
-       not always. Lowercased header field names for debian. Slightly faster
-       debian parsing code. (Parse in-place instead of copying to tmpbuf.)
-
-       * deps.c: Added code to have conflicts try to resolve conflicts
-       if they are with a package less than some version by trying to find a newer
-       version of the conflicting package.
-
-2000-09-30  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c: oops. (hpp always == hpp, no?)
-
-       * pkginfo.c: Made gunzipping faster (rc_string, I love you!)
-
-       * rc-debman.c: Changed the read_line function to
-       use a line buffer for reading. Lots of speed improvements. This
-       required changes to other code, as there was a second data
-       structure, RCLineBuf *, that had to be used.
-
-       * rc-util.c, rc-util.h: Added the
-       RCLineBuf stuff
-
-       * rc-string.c, rc-string.h: Added string
-       append functions
-
-       * pkginfo.c: Went back to using strncmp's instead of
-       casecmps for comparing stuff. This might break if someone uploads
-       lowercase stuff to the debian packages file (as has happened)
-
-2000-09-29  Ian Peters  <itp@helixcode.com>
-
-       * pkginfo.c: correctly set the channel id for debian-type
-       channels
-
-       * rc-packman.c, rc-packman.h: pkgs to install
-       in a transaction are filenames not RCPackage's
-
-2000-09-29  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * pkginfo.c: Do something intelligent if gunzip
-       doesn't exist.
-
-       * deps.c: note to self
-
-2000-09-29  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps-private.h, deps.c, 
-       deps.h: Preliminary code to get nicely-displayable dep 
-       info (packages X, Y, Z will be brought in to satisfy package A that 
-       was requested, packages D and E for pkg B, etc).
-       Will require more hacking to get this info out.
-
-       * rc-package-dep.c: Made verify return FALSE if the dep 
-       was < or <= and the target had no version info. This was to get 
-       around an issue where a package conflicted with < V of another 
-       package bar, and bar was a virtual package provided by bar1.2. This 
-       should be investigated further.
-
-       * test_deps.c: Added a few features; this will be used 
-       now to verify helix packages against RC before pushing to server.
-
-2000-09-28  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c: Got rid of superfluous debug crap
-
-       * pkginfo.c, rc-channel.c,
-       xml-util.c: Made it happy with new libxml
-
-       * Makefile.am: added (commented out rc-crypto.c, rc-crypto.h)
-
-       * rc-crypto.c, libreadcarpet/rc-crypto.h: Initial
-       checkin. Don't use.
-
-2000-09-28  Joe Shaw  <joe@helixcode.com>
-
-       * rc-channel.h: Removed title_color and title_bg_image
-       from the channel struct.
-
-       * rc-channel.c: Remove references to title_color and
-       title_bg_image.
-
-       * rc-package-spec.c (vercmp): Added a clause that says
-       that a number vs. word comparison always goes in favor of the word.
-       For example, in helix1 vs. 1, helix1 wins. This fixes a bunch of
-       incorrect compares with the Debian packages.
-
-2000-09-28  Ian Peters  <itp@helixcode.com>
-
-       * rc-rpmman.h, rc-rpmman.c: merge in the rpm4
-       changes courtesy of msw
-
-2000-09-27  Joe Shaw  <joe@helixcode.com>
-
-       * pkginfo.c (debian_packages_helper): Correctly handle
-       package sizes such that they are put into the update structure
-
-2000-09-18  Ian Peters  <itp@helixcode.com>
-
-       * pkginfo.c, rc-debman.c,
-       rc-debman.h: merge vlad's fork of the /var/lib/dpkg/status
-       parsing stuff back in, so I get his fixes and he gets a non-broken
-       read_line.
-
-2000-09-11  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * rc-util.c, rc-util.h: Two functions,
-       rc_url_is_absolute() and rc_build_url(). The latter takes a method,
-       host, path, and "rest" of the URL, and will build the right thing
-       depending on if path or rest are absolute or relative, etc.
-
-2000-09-08  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c, deps.h: Fixed ian's
-       conflicts bugs -- conflicts and uninstalls should work now; it needs
-       testing.
-
-       * pkginfo.c: debian packages weren't getting the
-       provides into the hash correctly (oops!)
-
-2000-08-31  Ian Peters  <itp@helixcode.com>
-
-       * Makefile.am: add rc-string to the sources for
-       libredcarpet.a
-
-       * rc-packman.c, rc-packman.h,
-       rc-debman.c, rc-debman.h,
-       rc-rpmman.c, rc-rpmman.h: changed the
-       interface drastically (hopefully for that last time).  Got rid of
-       _install and _remove (and associated signals, etc), and replaced it
-       with a transactional interface (with degenerate install and remove
-       cases, obviously).  This is required to make the debian backend work,
-       and makes the rpm one cleaner (also, I learned how to make my own
-       rpmTransaction things, so I got rid of the poached rpmInstall and
-       rpmErase functions).  The debian code is beautiful, I'm in love with
-       it in a big way.  The rpm code is pretty nice, although currently I'm
-       not dealing with errors in any big way (I'm waiting for a chance to
-       talk with joe (and vlad) about how to handle errors (fatal and
-       non-fatal) in the cleanest way possible.
-
-       * rc-package-spec.c, rc-package-spec.h:
-       added my rc_package_spec_copy and killed vlad's (since mine's nicer :)
-
-       * rc-package.c, rc-package.h:
-       added rc_package_copy_spec
-
-       * rc-string.c, rc-string.h: a small
-       convenience for me to use, I wrote it to implement the safe function
-       to read a line of text from /var/lib/dpkg/status in rc-debman.c
-
-2000-08-30  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * pkginfo.c, pkginfo.h:
-       rc_subchannel_parse_xml got renamed to rc_subchannel_parse; in
-       the .c file there are now 3 separate functions for parsing
-       helix-style XML files, debian-style Packages.gz files, and
-       redhat's xml/rdf stuff. (the latter is a noop for now). There
-       are also copies of Ian's debian parsing stuff in here -- these
-       need to be merged later with his code.
-
-       * rc-channel.c, rc-channel.h:
-       Added a few XML props -- "type" which defaults to helix, but can
-       be debian or redhat, pkginfo_file which has the name of the
-       package info file (defaults to packageinfo.xml.gz),
-       pkginfo_compressed, which, if present, indicates that the file
-       is gzip'd (I think you have to at least say pkginfo_compressed=1);
-       also fixed minor typo in hash table type def in the .h.
-
-       * rc-package-spec.c, rc-package-spec.h:
-       Added rc_package_spec_copy (src, dst)
-
-2000-08-25  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c, deps.h: Added global
-       settings call to change the way conflicts work, as debian and rpm
-       handle them differently (debian only conflicts real packages, rpm
-       conflicts virtual packages as well).
-
-       * pkginfo.c: Added Defensive Programming
-       NULL string check
-
-       * deps.c, deps.h: Fixed
-       lots of conflict things. Still some work to do, but this
-       is a checkpoint for ian so that he can continue.
-
-2000-08-24  Joe Shaw  <joe@helixcode.com>
-
-       * rc-package-spec.c: Added a static table for mapping
-       section strings to section enums.
-
-       * rc-package-spec.h: Define the above table and declare
-       it (sectable) extern.
-
-2000-08-24  Ian Peters  <itp@helixcode.com>
-
-       * libredcarpet.h, rc-channel.c,
-       rc-channel.h, rc-common.h,
-       rc-package-dep.c, rc-package-dep.h,
-       rc-package-spec.c,      rc-package-spec.h,
-       rc-package-update.c, rc-package-update.h,
-       rc-package.c, rc-package.h,
-       rc-util.c, rc-util.h: Added.  The scattered
-       remnants of the horror that was common.c and common.h.
-
-       * channel.c, channel.h,
-       common.c, common.h,
-       packagespec.c, packagespec.h: removed.
-       Contents moved into the above files.
-
-       * Makefile.am: updated to build the new files not the old
-       ones
-
-       * deps.c, deps.h, distro.c,
-       pkginfo.c, pkginfo.h,
-       rc-debman.c, rc-md5.c,
-       rc-packman.h: updated to include the right files
-
-2000-08-23  Vladimir Vukicevic  <vladimir@helixcode.com>
-
-       * deps.c, pkginfo.c: Made it not barf
-       (hopefully) if the current channel is NULL (i.e. summary Next
-       button). Added a g_assert check to pkginfo to warn if a null
-       channel makes it to that point.
-
-       * deps.h: removed unused element from struct
-
index 0329c79..dee2449 100644 (file)
@@ -60,9 +60,9 @@ operator<< (ostream & os, const PoolItemList & itemlist)
 class LookFor : public resfilter::PoolItemFilterFunctor
 {
   public:
-    PoolItem_Ref item;
+    PoolItem item;
 
-    bool operator()( PoolItem_Ref provider )
+    bool operator()( PoolItem provider )
     {
        item = provider;
        return false;                           // stop here, we found it
@@ -72,7 +72,7 @@ class LookFor : public resfilter::PoolItemFilterFunctor
 
 // just find installed item with same kind/name as item
 
-PoolItem_Ref
+PoolItem
 Helper::findInstalledByNameAndKind (const ResPool & pool, const string & name, const Resolvable::Kind & kind)
 {
     LookFor info;
@@ -90,7 +90,7 @@ Helper::findInstalledByNameAndKind (const ResPool & pool, const string & name, c
 
 // just find uninstalled item with same kind/name as item
 
-PoolItem_Ref
+PoolItem
 Helper::findUninstalledByNameAndKind (const ResPool & pool, const string & name, const Resolvable::Kind & kind)
 {
     LookFor info;
@@ -109,8 +109,8 @@ Helper::findUninstalledByNameAndKind (const ResPool & pool, const string & name,
 // just find installed item with same kind/name as item
 // does *NOT* check edition
 
-PoolItem_Ref
-Helper::findInstalledItem (const ResPool & pool, PoolItem_Ref item)
+PoolItem
+Helper::findInstalledItem (const ResPool & pool, PoolItem item)
 {
     return findInstalledByNameAndKind (pool, item->name(), item->kind() );
 }
@@ -120,10 +120,10 @@ Helper::findInstalledItem (const ResPool & pool, PoolItem_Ref item)
 class LookForUpdate : public resfilter::PoolItemFilterFunctor
 {
   public:
-    PoolItem_Ref uninstalled;
-    PoolItem_Ref installed;
+    PoolItem uninstalled;
+    PoolItem installed;
 
-    bool operator()( PoolItem_Ref provider )
+    bool operator()( PoolItem provider )
     {
         // is valid
         if ( ! provider.resolvable() )
@@ -158,8 +158,8 @@ class LookForUpdate : public resfilter::PoolItemFilterFunctor
 // just find best (according to edition) uninstalled item with same kind/name as item
 // *DOES* check edition
 
-PoolItem_Ref
-Helper::findUpdateItem (const ResPool & pool, PoolItem_Ref item)
+PoolItem
+Helper::findUpdateItem (const ResPool & pool, PoolItem item)
 {
     LookForUpdate info;
     info.installed = item;
@@ -181,9 +181,9 @@ Helper::findUpdateItem (const ResPool & pool, PoolItem_Ref item)
 class LookForReinstall : public resfilter::PoolItemFilterFunctor
 {
   public:
-    PoolItem_Ref uninstalled;
+    PoolItem uninstalled;
 
-    bool operator()( PoolItem_Ref provider )
+    bool operator()( PoolItem provider )
     {
        if (provider.status().isLocked()) {
            return true; // search next
@@ -195,8 +195,8 @@ class LookForReinstall : public resfilter::PoolItemFilterFunctor
 };
 
 
-PoolItem_Ref
-Helper::findReinstallItem (const ResPool & pool, PoolItem_Ref item)
+PoolItem
+Helper::findReinstallItem (const ResPool & pool, PoolItem item)
 {
     LookForReinstall info;
 
@@ -216,17 +216,17 @@ Helper::findReinstallItem (const ResPool & pool, PoolItem_Ref item)
 class CheckIfBest : public resfilter::PoolItemFilterFunctor
 {
   public:
-    PoolItem_Ref _item;
+    PoolItem _item;
     bool is_best;
 
-    CheckIfBest( PoolItem_Ref item )
+    CheckIfBest( PoolItem item )
        : _item( item )
        , is_best( true )               // assume we already have the best
     {}
 
     // check if provider is better. If yes, end the search.
 
-    bool operator()( PoolItem_Ref provider )
+    bool operator()( PoolItem provider )
     {
        int archcmp = _item->arch().compare( provider->arch() );
        if (((archcmp < 0)                                                      // provider has a better architecture
@@ -245,7 +245,7 @@ class CheckIfBest : public resfilter::PoolItemFilterFunctor
 // check if the given item is the best one of the pool
 
 bool
-Helper::isBestUninstalledItem (const ResPool & pool, PoolItem_Ref item)
+Helper::isBestUninstalledItem (const ResPool & pool, PoolItem item)
 {
     CheckIfBest info( item );
 
@@ -260,7 +260,7 @@ Helper::isBestUninstalledItem (const ResPool & pool, PoolItem_Ref item)
 }
 
 std::string
-Helper::itemToString (PoolItem_Ref item, bool shortVersion)
+Helper::itemToString (PoolItem item, bool shortVersion)
 {
     ostringstream os;
     if (!item) return "";
index c3637f8..f1c5e73 100644 (file)
@@ -53,30 +53,30 @@ class Helper {
     // does *NOT* check edition
     //  FIXME: should probably take provides/obsoletes into account for
     //        renamed upgrades
-    static PoolItem_Ref findInstalledByNameAndKind (const ResPool & pool, const std::string & name, const Resolvable::Kind & kind);
+    static PoolItem findInstalledByNameAndKind (const ResPool & pool, const std::string & name, const Resolvable::Kind & kind);
 
     // for name, find uninstalled item which has same name
-    static PoolItem_Ref findUninstalledByNameAndKind (const ResPool & pool, const std::string & name, const Resolvable::Kind & kind);
+    static PoolItem findUninstalledByNameAndKind (const ResPool & pool, const std::string & name, const Resolvable::Kind & kind);
 
     // for item, find installed item which has same name -> calls findInstalledByNameAndKind()
     // does *NOT* check edition
     //  FIXME: should probably take provides/obsoletes into account for
     //        renamed upgrades
-    static PoolItem_Ref findInstalledItem (const ResPool & pool, PoolItem_Ref item);
+    static PoolItem findInstalledItem (const ResPool & pool, PoolItem item);
 
     // for item, find uninstalled item which has same name and higher edition
-    static PoolItem_Ref findUninstalledItem (const ResPool & pool, PoolItem_Ref item);
+    static PoolItem findUninstalledItem (const ResPool & pool, PoolItem item);
 
     // for item, find uninstalled item which has same name and equal edition
-    static PoolItem_Ref findReinstallItem (const ResPool & pool, PoolItem_Ref item);
+    static PoolItem findReinstallItem (const ResPool & pool, PoolItem item);
 
-    static PoolItem_Ref findUpdateItem (const ResPool & pool, PoolItem_Ref item);
+    static PoolItem findUpdateItem (const ResPool & pool, PoolItem item);
 
     // for item, check if this is the 'best' uninstalled (best arch, best version) item
-    static bool isBestUninstalledItem (const ResPool & pool, PoolItem_Ref item);
+    static bool isBestUninstalledItem (const ResPool & pool, PoolItem item);
 
     // Human readable item
-    static std::string itemToString (PoolItem_Ref item, bool shortVersion=false);
+    static std::string itemToString (PoolItem item, bool shortVersion=false);
     static std::string capToString (const Capability & capability);
 
     friend std::ostream& operator<<(std::ostream&, const PoolItemList & itemlist);
index b1417aa..4cbdbba 100644 (file)
@@ -114,7 +114,7 @@ InstallOrder::computeNextSet()
 
 // decrease order of every adjacent node
 void
-InstallOrder::setInstalled(PoolItem_Ref item )
+InstallOrder::setInstalled(PoolItem item )
 {
     _dirty = true;
 
@@ -151,7 +151,7 @@ InstallOrder::setInstalled( const PoolItemList & rl )
 //-----------------------------------------------------------------------------
 
 bool
-InstallOrder::doesProvide( const Capability requirement, PoolItem_Ref item ) const
+InstallOrder::doesProvide( const Capability requirement, PoolItem item ) const
 {
     Capabilities::const_iterator pend = item->dep( Dep::PROVIDES ).end();
     for( Capabilities::const_iterator pit = item->dep( Dep::PROVIDES ).begin(); pit != pend; ++pit) {
@@ -159,11 +159,11 @@ InstallOrder::doesProvide( const Capability requirement, PoolItem_Ref item ) con
            return item;
        }
     }
-    return PoolItem_Ref();
+    return PoolItem();
 }
 
 
-PoolItem_Ref
+PoolItem
 InstallOrder::findProviderInSet( const Capability requirement, const PoolItemSet & candidates ) const
 {
     for( PoolItemSet::const_iterator citer = candidates.begin(); citer != candidates.end(); citer++) {
@@ -172,16 +172,16 @@ InstallOrder::findProviderInSet( const Capability requirement, const PoolItemSet
        }
     }
 
-    return PoolItem_Ref();
+    return PoolItem();
 }
 
 struct CollectProviders
 {
-    const PoolItem_Ref requestor;
+    const PoolItem requestor;
     PoolItemList result;
     const PoolItemSet & limitto;               // limit search to members of this set
 
-    CollectProviders (const PoolItem_Ref pi, const PoolItemSet & limit)
+    CollectProviders (const PoolItem pi, const PoolItemSet & limit)
        : requestor (pi)
        , limitto (limit)
     { }
@@ -210,7 +210,7 @@ XXX << "info(" << c_and_i.item <<")"<< endl;
 
 
 void
-InstallOrder::rdfsvisit (const PoolItem_Ref item)
+InstallOrder::rdfsvisit (const PoolItem item)
 {
     typedef list<Capability> CapList;
     CapList requires;
@@ -281,7 +281,7 @@ InstallOrder::rdfsvisit (const PoolItem_Ref item)
 
        for (PoolItemList::iterator it = tovisit.begin(); it != tovisit.end(); ++it)
        {
-           const PoolItem_Ref must_visit = *it;
+           const PoolItem must_visit = *it;
            if (_nodes[must_visit].visited == false)
            {
                nodeinfo.order++;
@@ -344,7 +344,7 @@ InstallOrder::startrdfs()
     // initialize all nodes
     for (PoolItemSet::iterator it = _toinstall.begin(); it != _toinstall.end(); ++it)
     {
-       PoolItem_Ref item = *it;
+       PoolItem item = *it;
        _nodes[item] = NodeInfo (item);
        _rgraph[item] = PoolItemList();
        _graph[item] = PoolItemList();
@@ -353,7 +353,7 @@ InstallOrder::startrdfs()
     // visit all nodes
     for (PoolItemSet::iterator it = _toinstall.begin(); it != _toinstall.end(); ++it)
     {
-       const PoolItem_Ref item = *it;
+       const PoolItem item = *it;
        if (_nodes[item].visited == false)
        {
            XXX << "start recursion on " << ITEMNAME(item) << endl;
index b1f52bc..ce9fa8e 100644 (file)
@@ -67,7 +67,7 @@ class InstallOrder
        PoolItemSet _installed;
 
        /** adjacency list type */
-       typedef std::map<PoolItem_Ref, PoolItemList> Graph;
+       typedef std::map<PoolItem, PoolItemList> Graph;
 
        /** adjacency list, package -> requirements */
        Graph _graph;
@@ -82,13 +82,13 @@ class InstallOrder
            bool visited;
            int order; // number of incoming edges in reverse graph
 
-           PoolItem_Ref item;
+           PoolItem item;
 
            NodeInfo() : begintime(0), endtime(0), visited(false), order(0) {}
-           NodeInfo(PoolItem_Ref item) : begintime(0), endtime(0), visited(false), order(0), item(item) {}
+           NodeInfo(PoolItem item) : begintime(0), endtime(0), visited(false), order(0), item(item) {}
        };
 
-       typedef std::map<PoolItem_Ref, NodeInfo> Nodes;
+       typedef std::map<PoolItem, NodeInfo> Nodes;
 
        Nodes _nodes;
 
@@ -103,10 +103,10 @@ class InstallOrder
        std::set<std::string> _logset;
 
     private:
-       void rdfsvisit (PoolItem_Ref item);
+       void rdfsvisit (PoolItem item);
 
-       PoolItem_Ref findProviderInSet( const Capability requirement, const PoolItemSet & candidates ) const;
-       bool doesProvide( const Capability requirement, PoolItem_Ref item ) const;
+       PoolItem findProviderInSet( const Capability requirement, const PoolItemSet & candidates ) const;
+       bool doesProvide( const Capability requirement, PoolItem item ) const;
 
     public:
 
@@ -128,7 +128,7 @@ class InstallOrder
         * set a Solvable as installed, computeNextSet is able to compute a new
         * set then
         * */
-       void setInstalled( PoolItem_Ref item );
+       void setInstalled( PoolItem item );
 
        /**
         * like above, for convenience
index b3f96dc..ba6e522 100644 (file)
@@ -53,7 +53,7 @@ ProblemSolutionCombi::ProblemSolutionCombi( ResolverProblem_Ptr parent)
     _details = "";
 }
 
-void ProblemSolutionCombi::addSingleAction( PoolItem_Ref item, const TransactionKind action)
+void ProblemSolutionCombi::addSingleAction( PoolItem item, const TransactionKind action)
 {
     addAction (new TransactionSolutionAction(item, action));
     actNumber++;
index 3958778..4fd18ff 100644 (file)
@@ -55,7 +55,7 @@ namespace zypp
            /**
             * Add a single action
             */
-           void addSingleAction( PoolItem_Ref item, const TransactionKind action);
+           void addSingleAction( PoolItem item, const TransactionKind action);
 
            /**
             * returns the number of actions
index a92f975..34ff232 100644 (file)
@@ -49,7 +49,7 @@ IMPL_PTR_TYPE(ProblemSolutionIgnoreInstalled);
 //---------------------------------------------------------------------------
 
 ProblemSolutionIgnoreRequires::ProblemSolutionIgnoreRequires( ResolverProblem_Ptr parent,
-                                                             PoolItem_Ref item,
+                                                             PoolItem item,
                                                              const Capability & capability)
     : ProblemSolution (parent, "", "")
 {
@@ -70,7 +70,7 @@ ProblemSolutionIgnoreRequires::ProblemSolutionIgnoreRequires( ResolverProblem_Pt
 }
 
 ProblemSolutionIgnoreArchitecture::ProblemSolutionIgnoreArchitecture( ResolverProblem_Ptr parent,
-                                                                 PoolItem_Ref item)
+                                                                 PoolItem item)
     : ProblemSolution (parent, "", "")
 {
         // TranslatorExplanation %s = name of package, patch, selection ...
@@ -83,7 +83,7 @@ ProblemSolutionIgnoreArchitecture::ProblemSolutionIgnoreArchitecture( ResolverPr
 }
 
 ProblemSolutionIgnoreVendor::ProblemSolutionIgnoreVendor( ResolverProblem_Ptr parent,
-                                                         PoolItem_Ref item)
+                                                         PoolItem item)
     : ProblemSolution (parent, "", "")
 {
         // TranslatorExplanation %s = name of package, patch, selection ...
@@ -96,9 +96,9 @@ ProblemSolutionIgnoreVendor::ProblemSolutionIgnoreVendor( ResolverProblem_Ptr pa
 }
        
 ProblemSolutionIgnoreConflicts::ProblemSolutionIgnoreConflicts( ResolverProblem_Ptr parent,
-                                                               PoolItem_Ref item,
+                                                               PoolItem item,
                                                                const Capability & capability,
-                                                               PoolItem_Ref otherItem)
+                                                               PoolItem otherItem)
     : ProblemSolution (parent, "", "")
 {
        // TranslatorExplanation %s = name of package, patch, selection ...
@@ -108,7 +108,7 @@ ProblemSolutionIgnoreConflicts::ProblemSolutionIgnoreConflicts( ResolverProblem_
 }
 
 ProblemSolutionIgnoreConflicts::ProblemSolutionIgnoreConflicts( ResolverProblem_Ptr parent,
-                                                               PoolItem_Ref item,
+                                                               PoolItem item,
                                                                const Capability & capability,
                                                                PoolItemList itemList)
     : ProblemSolution (parent, "", "")
@@ -123,9 +123,9 @@ ProblemSolutionIgnoreConflicts::ProblemSolutionIgnoreConflicts( ResolverProblem_
 }
 
 ProblemSolutionIgnoreObsoletes::ProblemSolutionIgnoreObsoletes( ResolverProblem_Ptr parent,
-                                                               PoolItem_Ref item,
+                                                               PoolItem item,
                                                                const Capability & capability,
-                                                               PoolItem_Ref otherItem)
+                                                               PoolItem otherItem)
     : ProblemSolution (parent, "", "")
 {
        // TranslatorExplanation %s = name of package, patch, selection ...
@@ -137,8 +137,8 @@ ProblemSolutionIgnoreObsoletes::ProblemSolutionIgnoreObsoletes( ResolverProblem_
 
 
 ProblemSolutionIgnoreInstalled::ProblemSolutionIgnoreInstalled( ResolverProblem_Ptr parent,
-                                                               PoolItem_Ref item,
-                                                               PoolItem_Ref otherItem)
+                                                               PoolItem item,
+                                                               PoolItem otherItem)
     : ProblemSolution (parent, "", "")
 {
        // TranslatorExplanation %s = name of package, patch, selection ...
index 75837f4..219e985 100644 (file)
@@ -48,11 +48,11 @@ namespace zypp
             * Constructor.
             **/
            ProblemSolutionIgnoreConflicts( ResolverProblem_Ptr parent,
-                                           PoolItem_Ref item,
+                                           PoolItem item,
                                            const Capability & capability,
-                                           PoolItem_Ref otherItem);
+                                           PoolItem otherItem);
            ProblemSolutionIgnoreConflicts( ResolverProblem_Ptr parent,
-                                           PoolItem_Ref item,
+                                           PoolItem item,
                                            const Capability & capability,
                                            PoolItemList itemList);         
        };
@@ -65,7 +65,7 @@ namespace zypp
             * Constructor.
             **/
            ProblemSolutionIgnoreRequires( ResolverProblem_Ptr parent,
-                                          PoolItem_Ref item,
+                                          PoolItem item,
                                           const Capability & capability);
            ProblemSolutionIgnoreRequires( ResolverProblem_Ptr parent,
                                           PoolItemList itemList,
@@ -80,7 +80,7 @@ namespace zypp
             * Constructor.
             **/
            ProblemSolutionIgnoreArchitecture( ResolverProblem_Ptr parent,
-                                              PoolItem_Ref item);
+                                              PoolItem item);
        };
 
        class ProblemSolutionIgnoreVendor : public ProblemSolution
@@ -91,7 +91,7 @@ namespace zypp
             * Constructor.
             **/
            ProblemSolutionIgnoreVendor( ResolverProblem_Ptr parent,
-                                        PoolItem_Ref item);
+                                        PoolItem item);
        };              
 
        class ProblemSolutionIgnoreObsoletes : public ProblemSolution
@@ -102,9 +102,9 @@ namespace zypp
             * Constructor.
             **/
            ProblemSolutionIgnoreObsoletes( ResolverProblem_Ptr parent,
-                                           PoolItem_Ref item,
+                                           PoolItem item,
                                            const Capability & capability,
-                                           PoolItem_Ref otherItem);        
+                                           PoolItem otherItem);            
        };
 
        class ProblemSolutionIgnoreInstalled : public ProblemSolution
@@ -115,8 +115,8 @@ namespace zypp
             * Constructor.
             **/
            ProblemSolutionIgnoreInstalled( ResolverProblem_Ptr parent,
-                                           PoolItem_Ref item,
-                                           PoolItem_Ref otherItem);  
+                                           PoolItem item,
+                                           PoolItem otherItem);  
        };
        
 
index 0afb7c1..6a0723f 100644 (file)
@@ -47,7 +47,7 @@ IMPL_PTR_TYPE(ProblemSolutionInstall);
 //---------------------------------------------------------------------------
 
 ProblemSolutionInstall::ProblemSolutionInstall( ResolverProblem_Ptr parent,
-                                               PoolItem_Ref item )
+                                               PoolItem item )
     : ProblemSolution (parent, "", "")
 {
     // TranslatorExplanation %s = name of package, patch, selection ...    
@@ -67,7 +67,7 @@ ProblemSolutionInstall::ProblemSolutionInstall( ResolverProblem_Ptr parent,
 
     for (PoolItemList::iterator iter = itemList.begin();
         iter != itemList.end(); iter++) {
-       PoolItem_Ref item = *iter;
+       PoolItem item = *iter;
        addAction ( new TransactionSolutionAction (item, INSTALL));
     }
 
index b0dd17f..6b76d2d 100644 (file)
@@ -47,7 +47,7 @@ namespace zypp
            /**
             * Constructor.
             **/
-           ProblemSolutionInstall( ResolverProblem_Ptr parent, PoolItem_Ref item);
+           ProblemSolutionInstall( ResolverProblem_Ptr parent, PoolItem item);
            ProblemSolutionInstall( ResolverProblem_Ptr parent, PoolItemList & itemlist );          
        };
 
index b8e8004..b7f589c 100644 (file)
@@ -46,7 +46,7 @@ IMPL_PTR_TYPE(ProblemSolutionKeep);
 //---------------------------------------------------------------------------
 
 ProblemSolutionKeep::ProblemSolutionKeep( ResolverProblem_Ptr parent,
-                                               PoolItem_Ref item )
+                                               PoolItem item )
     : ProblemSolution (parent, "", "")
 {
     // TranslatorExplanation %s = name of package, patch, selection ...    
@@ -66,7 +66,7 @@ ProblemSolutionKeep::ProblemSolutionKeep( ResolverProblem_Ptr parent,
 
     for (PoolItemList::iterator iter = itemList.begin();
         iter != itemList.end(); iter++) {
-       PoolItem_Ref item = *iter;
+       PoolItem item = *iter;
        addAction ( new TransactionSolutionAction (item, KEEP));
     }
 
index 9ea1f37..e333a6d 100644 (file)
@@ -47,7 +47,7 @@ namespace zypp
            /**
             * Constructor.
             **/
-           ProblemSolutionKeep( ResolverProblem_Ptr parent, PoolItem_Ref item);
+           ProblemSolutionKeep( ResolverProblem_Ptr parent, PoolItem item);
            ProblemSolutionKeep( ResolverProblem_Ptr parent, PoolItemList & itemlist );     
        };
 
index cff6dd4..662087c 100644 (file)
@@ -44,7 +44,7 @@ namespace zypp
 IMPL_PTR_TYPE(ProblemSolutionUninstall);
 
 //---------------------------------------------------------------------------
-ProblemSolutionUninstall::ProblemSolutionUninstall( ResolverProblem_Ptr parent, PoolItem_Ref item,
+ProblemSolutionUninstall::ProblemSolutionUninstall( ResolverProblem_Ptr parent, PoolItem item,
                          const std::string & descr,
                          const std::string & detail)
     : ProblemSolution (parent, descr, detail)
@@ -55,7 +55,7 @@ ProblemSolutionUninstall::ProblemSolutionUninstall( ResolverProblem_Ptr parent,
        
 
 ProblemSolutionUninstall::ProblemSolutionUninstall( ResolverProblem_Ptr parent,
-                                                   PoolItem_Ref item)
+                                                   PoolItem item)
     : ProblemSolution (parent, "", "")
 {
     ResStatus status = item.status();
@@ -82,7 +82,7 @@ ProblemSolutionUninstall::ProblemSolutionUninstall( ResolverProblem_Ptr parent,
 
     for (PoolItemList::iterator iter = itemlist.begin();
         iter != itemlist.end(); iter++) {
-       PoolItem_Ref item = *iter;
+       PoolItem item = *iter;
        addAction ( new TransactionSolutionAction (item, REMOVE));
     }
     
index 47c8c9c..710d797 100644 (file)
@@ -47,8 +47,8 @@ namespace zypp
            /**
             * Constructor.
             **/
-           ProblemSolutionUninstall( ResolverProblem_Ptr parent, PoolItem_Ref item);
-           ProblemSolutionUninstall( ResolverProblem_Ptr parent, PoolItem_Ref item,
+           ProblemSolutionUninstall( ResolverProblem_Ptr parent, PoolItem item);
+           ProblemSolutionUninstall( ResolverProblem_Ptr parent, PoolItem item,
                                      const std::string & descr,
                                      const std::string & detail);          
            ProblemSolutionUninstall( ResolverProblem_Ptr parent, PoolItemList & itemlist);         
index 0040ec5..06ea1a2 100644 (file)
@@ -55,7 +55,7 @@ struct LockReset : public resfilter::PoolItemFilterFunctor
        : _problemSolutionUnlock( solution )
     { }
 
-    bool operator()( PoolItem_Ref item )
+    bool operator()( PoolItem item )
     {
        _problemSolutionUnlock.addAction ( new TransactionSolutionAction (item, UNLOCK));       
        return true;
@@ -76,7 +76,7 @@ ProblemSolutionUnlock::ProblemSolutionUnlock( ResolverProblem_Ptr parent,
 }
        
 ProblemSolutionUnlock::ProblemSolutionUnlock( ResolverProblem_Ptr parent,
-                                             PoolItem_Ref item)
+                                             PoolItem item)
     : ProblemSolution (parent, "", "")
 {
     // TranslatorExplanation %s = name of package, patch, selection ...        
index a563992..1648e64 100644 (file)
@@ -47,7 +47,7 @@ namespace zypp
            /**
             * Constructor.
             **/
-           ProblemSolutionUnlock( ResolverProblem_Ptr parent, PoolItem_Ref item);
+           ProblemSolutionUnlock( ResolverProblem_Ptr parent, PoolItem item);
            ProblemSolutionUnlock( ResolverProblem_Ptr parent, PoolItemList & itemlist);
            ProblemSolutionUnlock( ResolverProblem_Ptr parent, const ResPool & pool);       
        };
index e57b44b..bd3c389 100644 (file)
@@ -124,40 +124,40 @@ Resolver::removeExtraConflict (const Capability & capability)
 }
 
 void
-Resolver::addIgnoreConflict (const PoolItem_Ref item,
+Resolver::addIgnoreConflict (const PoolItem item,
                   const Capability & capability)
 {
     _ignoreConflicts.insert(make_pair(item, capability));
 }
 
 void
-Resolver::addIgnoreRequires (const PoolItem_Ref item,
+Resolver::addIgnoreRequires (const PoolItem item,
                             const Capability & capability)
 {
     _ignoreRequires.insert(make_pair(item, capability));
 }
 
 void
-Resolver::addIgnoreObsoletes (const PoolItem_Ref item,
+Resolver::addIgnoreObsoletes (const PoolItem item,
                              const Capability & capability)
 {
     _ignoreObsoletes.insert(make_pair(item, capability));
 }
 
 void
-Resolver::addIgnoreInstalledItem (const PoolItem_Ref item)
+Resolver::addIgnoreInstalledItem (const PoolItem item)
 {
     _ignoreInstalledItem.push_back (item);
 }
 
 void
-Resolver::addIgnoreArchitectureItem (const PoolItem_Ref item)
+Resolver::addIgnoreArchitectureItem (const PoolItem item)
 {
     _ignoreArchitectureItem.push_back (item);
 }
 
 void
-Resolver::addIgnoreVendorItem (const PoolItem_Ref item)
+Resolver::addIgnoreVendorItem (const PoolItem item)
 {
     _ignoreVendorItem.push_back (item);
 }
@@ -171,7 +171,7 @@ struct UndoTransact : public resfilter::PoolItemFilterFunctor
        :resStatus(status)
     { }
 
-    bool operator()( PoolItem_Ref item )               // only transacts() items go here
+    bool operator()( PoolItem item )           // only transacts() items go here
     {
        item.status().resetTransact( resStatus );// clear any solver/establish transactions
        return true;
@@ -186,7 +186,7 @@ struct DoTransact : public resfilter::PoolItemFilterFunctor
        :resStatus(status)
     { }
 
-    bool operator()( PoolItem_Ref item )               // only transacts() items go here
+    bool operator()( PoolItem item )           // only transacts() items go here
     {
        item.status().setTransact( true, resStatus );
        return true;
index 8cddf19..8de0796 100644 (file)
@@ -74,7 +74,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable {
     CapabilitySet _extra_requires;
     CapabilitySet _extra_conflicts;
     
-    typedef std::multimap<PoolItem_Ref,Capability> IgnoreMap;
+    typedef std::multimap<PoolItem,Capability> IgnoreMap;
 
     // These conflict should be ignored of the concering item
     IgnoreMap _ignoreConflicts;
@@ -99,8 +99,8 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable {
     bool _verifying;    // The system will be checked
 
     // helpers
-    bool doesObsoleteCapability (PoolItem_Ref candidate, const Capability & cap);
-    bool doesObsoleteItem (PoolItem_Ref candidate, PoolItem_Ref installed);
+    bool doesObsoleteCapability (PoolItem candidate, const Capability & cap);
+    bool doesObsoleteItem (PoolItem candidate, PoolItem installed);
 
 
   public:
@@ -127,15 +127,15 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable {
     const CapabilitySet extraRequires () { return _extra_requires; }
     const CapabilitySet extraConflicts () { return _extra_conflicts; }
 
-    void addIgnoreConflict (const PoolItem_Ref item,
+    void addIgnoreConflict (const PoolItem item,
                            const Capability & capability);
-    void addIgnoreRequires (const PoolItem_Ref item,
+    void addIgnoreRequires (const PoolItem item,
                            const Capability & capability);
-    void addIgnoreObsoletes (const PoolItem_Ref item,
+    void addIgnoreObsoletes (const PoolItem item,
                             const Capability & capability);
-    void addIgnoreInstalledItem (const PoolItem_Ref item);
-    void addIgnoreArchitectureItem (const PoolItem_Ref item);
-    void addIgnoreVendorItem (const PoolItem_Ref item);    
+    void addIgnoreInstalledItem (const PoolItem item);
+    void addIgnoreArchitectureItem (const PoolItem item);
+    void addIgnoreVendorItem (const PoolItem item);    
 
     void setForceResolve (const bool force) { _forceResolve = force; }
     bool forceResolve() { return _forceResolve; }
index 63ed449..3ad4102 100644 (file)
@@ -74,14 +74,14 @@ using namespace zypp;
  * \li best Edition
  * \li ResObject::constPtr as fallback.
 */
-struct AVOrder : public std::binary_function<PoolItem_Ref,PoolItem_Ref,bool>
+struct AVOrder : public std::binary_function<PoolItem,PoolItem,bool>
 {
     // NOTE: operator() provides LESS semantics to order the set.
     // So LESS means 'prior in set'. We want 'better' archs and
     // 'better' editions at the beginning of the set. So we return
     // TRUE if (lhs > rhs)!
     //
-    bool operator()( const PoolItem_Ref lhs, const PoolItem_Ref rhs ) const
+    bool operator()( const PoolItem lhs, const PoolItem rhs ) const
         {
            int res = lhs->arch().compare( rhs->arch() );
            if ( res )
@@ -97,7 +97,7 @@ struct AVOrder : public std::binary_function<PoolItem_Ref,PoolItem_Ref,bool>
         }
 };
 
-typedef std::set<PoolItem_Ref, AVOrder> PoolItemOrderSet;
+typedef std::set<PoolItem, AVOrder> PoolItemOrderSet;
 
 
 
@@ -108,7 +108,7 @@ typedef std::set<PoolItem_Ref, AVOrder> PoolItemOrderSet;
 // newer.
 
 static bool
-downgrade_allowed( PoolItem_Ref installed, PoolItem_Ref candidate, bool silent_downgrades )
+downgrade_allowed( PoolItem installed, PoolItem candidate, bool silent_downgrades )
 {
     if (installed.status().isLocked()) {
        MIL << "Installed " << installed << " is locked, not upgrading" << endl;
@@ -159,7 +159,7 @@ struct FindObsoletes
 // does the candidate obsolete the capability ?
 
 bool
-Resolver::doesObsoleteCapability (PoolItem_Ref candidate, const Capability & cap)
+Resolver::doesObsoleteCapability (PoolItem candidate, const Capability & cap)
 {
     _DEBUG("doesObsoleteCapability " << candidate << ", " << cap);
 
@@ -176,7 +176,7 @@ Resolver::doesObsoleteCapability (PoolItem_Ref candidate, const Capability & cap
 
 
 bool
-Resolver::doesObsoleteItem (PoolItem_Ref candidate, PoolItem_Ref installed)
+Resolver::doesObsoleteItem (PoolItem candidate, PoolItem installed)
 {
     Capability installedCap( installed->name(), Rel::EQ, installed->edition(), installed->kind());
     return doesObsoleteCapability (candidate, installedCap);
@@ -186,7 +186,7 @@ Resolver::doesObsoleteItem (PoolItem_Ref candidate, PoolItem_Ref installed)
 
 // find best available providers for installed name
 
-typedef map<string, PoolItem_Ref> FindMap;
+typedef map<string, PoolItem> FindMap;
 
 struct FindProviders
 {
@@ -255,14 +255,14 @@ class LookForSelected : public resfilter::PoolItemFilterFunctor
 {
   public:
     bool found;
-    PoolItem_Ref candidate;
+    PoolItem candidate;
     
-    LookForSelected (PoolItem_Ref can)
+    LookForSelected (PoolItem can)
        : found (false),
        candidate (can)
     { }
 
-    bool operator()( PoolItem_Ref item )
+    bool operator()( PoolItem item )
     {
        if (item.status().isToBeInstalled()
            && item->edition() == candidate->edition()
@@ -275,7 +275,7 @@ class LookForSelected : public resfilter::PoolItemFilterFunctor
     }
 };
 
-bool setForInstallation (const ResPool &pool, PoolItem_Ref item) {
+bool setForInstallation (const ResPool &pool, PoolItem item) {
     LookForSelected info(item);
 
     invokeOnEach( pool.byNameBegin (item->name()),
@@ -305,8 +305,8 @@ bool setForInstallation (const ResPool &pool, PoolItem_Ref item) {
 void
 Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
 {
-  typedef map<PoolItem_Ref,PoolItem_Ref> CandidateMap;
-  typedef map<PoolItem_Ref,PoolItemOrderSet> TodoMap;
+  typedef map<PoolItem,PoolItem> CandidateMap;
+  typedef map<PoolItem,PoolItemOrderSet> TodoMap;
 
   CandidateMap candidatemap;
 
@@ -350,9 +350,9 @@ Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
   PoolItemOrderSet available; // candidates available for install (no matter if selected for install or not)
 
   for ( ResPool::const_iterator it = _pool.begin(); it != _pool.end(); ++it ) {
-    PoolItem_Ref item = *it;
-    PoolItem_Ref candidate;
-    PoolItem_Ref installed;
+    PoolItem item = *it;
+    PoolItem candidate;
+    PoolItem installed;
 
     if ( item.status().isToBeUninstalled() ) {
       MIL << "doUpgrade available: SKIP to delete " << item << endl;
@@ -449,7 +449,7 @@ Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
 
   for ( ResPool::const_iterator it = _pool.begin(); it != _pool.end(); ++it ) {
 
-    PoolItem_Ref installed(*it);
+    PoolItem installed(*it);
     ResStatus status (installed.status());
 
     if ( ! status.staysInstalled() ) {
@@ -499,7 +499,7 @@ Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
     ///////////////////////////////////////////////////////////////////
     if ( cand_it != candidatemap.end() ) {
 
-      PoolItem_Ref candidate (cand_it->second);
+      PoolItem candidate (cand_it->second);
 
       if ( ! candidate.status().isToBeInstalled() ) {
        int cmp = installed->edition().compare( candidate->edition() );
@@ -610,7 +610,7 @@ Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
     PoolItemOrderSet & tset( it->second );             // these are the providers (well, just one)
 
     for ( PoolItemOrderSet::iterator sit = tset.begin(); sit != tset.end(); ++sit ) {
-      PoolItem_Ref provider (*sit);
+      PoolItem provider (*sit);
 
       if (setForInstallation (_pool, provider)) {
        ++opt_stats_r.chk_replaced;
@@ -630,11 +630,11 @@ Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
   for ( TodoMap::iterator it = addMultiProvided.begin(); it != addMultiProvided.end(); ++it ) {
     MIL << "GET ONE OUT OF " << it->second.size() << " for " << it->first << endl;
 
-    PoolItem_Ref guess;
+    PoolItem guess;
     PoolItemOrderSet & gset( it->second );
 
     for ( PoolItemOrderSet::iterator git = gset.begin(); git != gset.end(); ++git ) {
-       PoolItem_Ref item (*git);
+       PoolItem item (*git);
 
        if (git == gset.begin())                // default to first of set; the set is ordered, first is the best
            guess = item;
@@ -644,7 +644,7 @@ Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
            if ( ! doesObsoleteItem (item, it->first ) ) {
                it->first.status().setToBeUninstalled( ResStatus::APPL_HIGH );
            }
-           guess = PoolItem_Ref();
+           guess = PoolItem();
            break;
        } else {
            // Be prepared to guess.
@@ -680,14 +680,14 @@ Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
            requested_locale_match = false;
 
            for ( PoolItemOrderSet::iterator git = gset.begin(); git != gset.end(); ++git ) {
-               PoolItem_Ref item (*git);
+               PoolItem item (*git);
 
                if ( item.status().isToBeInstalled()) {
                    MIL << " ==> (pass 2: meanwhile set to install): " << item << endl;
                    if ( ! doesObsoleteItem (item, it->first ) ) {
                        it->first.status().setToBeUninstalled( ResStatus::APPL_HIGH );
                    }
-                   guess = PoolItem_Ref();
+                   guess = PoolItem();
                    break;
                } else {
                    freshens = item->dep( Dep::FRESHENS );
index 627007a..4a92424 100644 (file)
@@ -170,7 +170,7 @@ bool
 InjectSolutionAction::execute(Resolver & resolver) const
 {
     Capabilities depList;
-    if (_item != PoolItem_Ref()) {
+    if (_item != PoolItem()) {
        depList = _item.resolvable()->dep(Dep::CONFLICTS);
     }
     switch (_kind) {
@@ -210,7 +210,7 @@ InjectSolutionAction::execute(Resolver & resolver) const
            break;
         case REQUIRES:
            // removing the requires dependency from the item
-           if (_item == PoolItem_Ref()) {
+           if (_item == PoolItem()) {
                // this was a requirement via Resolver::addExtraCapability
                // so we have to delete it.
                resolver.removeExtraRequire (_capability);
index 0059fb2..b2d83ae 100644 (file)
@@ -74,7 +74,7 @@ namespace zypp
        class TransactionSolutionAction: public SolutionAction
        {
        public:
-           TransactionSolutionAction( PoolItem_Ref item,
+           TransactionSolutionAction( PoolItem item,
                                       TransactionKind action )
                : SolutionAction(),
                  _item( item ), _action( action ) {}
@@ -90,7 +90,7 @@ namespace zypp
 
          // ---------------------------------- accessors
 
-         const PoolItem_Ref item() const { return _item; }
+         const PoolItem item() const { return _item; }
          TransactionKind action() const { return _action; }
 
          // ---------------------------------- methods
@@ -98,7 +98,7 @@ namespace zypp
 
        protected:
 
-           PoolItem_Ref _item;
+           PoolItem _item;
            const TransactionKind _action;
        };
 
@@ -129,23 +129,23 @@ namespace zypp
        {
        public:
 
-           InjectSolutionAction( PoolItem_Ref item,
+           InjectSolutionAction( PoolItem item,
                                  const Capability & capability,
                                  const InjectSolutionKind & kind)
                : SolutionAction(),
                  _item( item ), _capability( capability ),
                  _kind( kind ), _otherItem() {}
 
-           InjectSolutionAction( PoolItem_Ref item,
+           InjectSolutionAction( PoolItem item,
                                  const InjectSolutionKind & kind)
                : SolutionAction(),
                  _item( item ), _capability(),
                  _kind( kind ), _otherItem() {}
 
-           InjectSolutionAction( PoolItem_Ref item,
+           InjectSolutionAction( PoolItem item,
                                  const Capability & capability,
                                  const InjectSolutionKind & kind,
-                                 PoolItem_Ref otherItem)
+                                 PoolItem otherItem)
                : SolutionAction(),
                  _item( item ), _capability( capability ),
                  _kind( kind ), _otherItem( otherItem ) {}
@@ -157,16 +157,16 @@ namespace zypp
 
          // ---------------------------------- accessors
            const Capability & capability() const { return _capability; };
-           const PoolItem_Ref item() const { return _item; }
+           const PoolItem item() const { return _item; }
 
          // ---------------------------------- methods
            virtual bool execute(Resolver & resolver) const;
 
        protected:
-           PoolItem_Ref _item;
+           PoolItem _item;
            const Capability _capability;
            const InjectSolutionKind _kind;
-           PoolItem_Ref _otherItem;
+           PoolItem _otherItem;
        };
 
 
index 9357c45..41b8f1c 100644 (file)
@@ -168,7 +168,7 @@ inline string helixXML( const Resolvable::constPtr &obj, Dep deptag_r )
   return out.str();
 }
 
-std::string helixXML( const PoolItem_Ref &item )
+std::string helixXML( const PoolItem &item )
 {
   const Resolvable::constPtr resolvable = item.resolvable();
   stringstream str;
@@ -356,7 +356,7 @@ HelixResolvable::~HelixResolvable()
 }
 
 
-void HelixResolvable::addResolvable(const PoolItem_Ref item)
+void HelixResolvable::addResolvable(const PoolItem item)
 {
     *file << helixXML (item);
 }
index 6fc3bd2..2aa2d39 100644 (file)
@@ -56,7 +56,7 @@ template<>
 std::string helixXML( const Dependencies &dep );
        
 template<> 
-std::string helixXML( const PoolItem_Ref &item );
+std::string helixXML( const PoolItem &item );
 
 
 ///////////////////////////////////////////////////////////////////
@@ -76,7 +76,7 @@ class  HelixResolvable : public base::ReferenceCounted, private base::NonCopyabl
     HelixResolvable (const std::string & path);
     ~HelixResolvable ();
 
-    void addResolvable (const PoolItem_Ref item);
+    void addResolvable (const PoolItem item);
     std::string filename () { return dumpFile; }
 };
 
index b6ef6c4..8125412 100644 (file)
@@ -48,8 +48,8 @@ namespace zypp
     namespace detail
     { ///////////////////////////////////////////////////////////////////
 
-typedef std::list<PoolItem_Ref> PoolItemList;
-typedef std::set<PoolItem_Ref> PoolItemSet;
+typedef std::list<PoolItem> PoolItemList;
+typedef std::set<PoolItem> PoolItemSet;
       
 DEFINE_PTR_TYPE(Resolver);
 
index 9776e4a..899f3a0 100644 (file)
@@ -635,9 +635,9 @@ namespace zypp
                   if (true) // !installOnly - only on Package?!
                   {
                     // this would delete the same item over and over
-                    //for (PoolItem_Ref old = Helper::findInstalledItem (pool_r, *it); old; )
+                    //for (PoolItem old = Helper::findInstalledItem (pool_r, *it); old; )
 #warning REMOVE ALL OLD VERSIONS AND NOT JUST ONE
-                    PoolItem_Ref old = Helper::findInstalledItem (pool_r, *it);
+                    PoolItem old = Helper::findInstalledItem (pool_r, *it);
                     if (old)
                     {
                       _storage.deleteObject(old.resolvable());
index e0a8c63..533770b 100644 (file)
@@ -55,10 +55,10 @@ namespace zypp
 
     public:
       /** list of pool items  */
-      typedef std::list<PoolItem_Ref> PoolItemList;
+      typedef std::list<PoolItem> PoolItemList;
 
       /** set of pool items  */
-      typedef std::set<PoolItem_Ref> PoolItemSet;
+      typedef std::set<PoolItem> PoolItemSet;
 
     public:
       /** Ctor. */
index 7a61197..df0099f 100644 (file)
@@ -42,8 +42,6 @@ namespace zypp
      *
      * \note There's one Selectable per installed item, in case more
      * than one item is intalled.
-     *
-     * \todo Make it a _Ref.
     */
     class Selectable : public base::ReferenceCounted, private base::NonCopyable
     {
index f3bfa5c..89f5a58 100644 (file)
@@ -145,9 +145,8 @@ namespace zypp
     //
     ZYppImpl::ZYppImpl()
     : _textLocale( defaultTextLocale() )
-    , _pool()
     , _target(0)
-    , _resolver( new Resolver(_pool.accessor()) )
+    , _resolver( new Resolver( ResPool::instance()) )
     , _architecture( defaultArchitecture() )
     {
       MIL << "libzypp: " << VERSION << " built " << __DATE__ << " " <<  __TIME__ << endl;
@@ -170,30 +169,6 @@ namespace zypp
     //------------------------------------------------------------------------
     // add/remove resolvables
 
-    void ZYppImpl::addResolvables (const ResStore& store, bool installed)
-    {
-       _pool.insert(store.begin(), store.end(), installed);
-    }
-
-    void ZYppImpl::removeResolvables (const ResStore& store)
-    {
-        for (ResStore::iterator it = store.begin(); it != store.end(); ++it)
-       {
-           _pool.erase(*it);
-       }
-    }
-
-    void ZYppImpl::removeInstalledResolvables ()
-    {
-        for (ResPool::const_iterator it = pool().begin(); it != pool().end();)
-       {
-           ResPool::const_iterator next = it; ++next;
-           if (it->status().isInstalled())
-               _pool.erase( *it );
-           it = next;
-       }
-    }
-
     DiskUsageCounter::MountPointSet ZYppImpl::diskUsage()
     {
       if ( ! _disk_usage )
@@ -235,35 +210,22 @@ namespace zypp
            MIL << "Repeated call to initializeTarget()" << endl;
            return;
        }
+#warning NEED SOME NEW WAY TO INDICATE NEDD OF TARGET RELOAD
+#if 0
        removeInstalledResolvables( );
+#endif
       }
       _target = new Target( root );
       _target->enableStorage( root );
     }
 
-    void ZYppImpl::initTarget(const Pathname & root, bool commit_only)
-    {
-      MIL << "initTarget( " << root << ", " << commit_only << ")" << endl;
-      if (_target) {
-        if (_target->root() == root) {
-          MIL << "Repeated call to initTarget()" << endl;
-          return;
-        }
-        removeInstalledResolvables( );
-      }
-      _target = new Target( root );
-      _target->enableStorage( root );
-      if (!commit_only)
-      {
-        addResolvables( _target->resolvables(), true );
-      }
-    }
-
-
     void ZYppImpl::finishTarget()
     {
+#warning NEED SOME NEW WAY TO UNLOAD THE POOL
+#if 0
       if (_target)
        removeInstalledResolvables();
+#endif
       _target = 0;
     }
 
@@ -290,12 +252,15 @@ namespace zypp
         // target->resolvables(). Actually the target should do this without
         // foreign help.
         _target->reset();
+#warning NEED SOME NEW WAY TO INDICATE NEDD OF TARGET RELOAD
+#if 0
        removeInstalledResolvables();
         if ( policy_r.syncPoolAfterCommit() )
           {
             // reload new status from target
             addResolvables( _target->resolvables(), true );
           }
+#endif
       }
 
       MIL << "Commit (" << policy_r << ") returned: "
@@ -316,7 +281,9 @@ namespace zypp
     /** */
     void ZYppImpl::setRequestedLocales( const LocaleSet & locales_r )
     {
-      ResPool mpool( pool() );
+#warning REIMPLEMENT WITHOUT LANGUAGE RESOLVABLE
+#if 0
+     ResPool mpool( ResPool::instance() );
       // assert all requested are available
       for ( LocaleSet::const_iterator it = locales_r.begin();
             it != locales_r.end(); ++it )
@@ -365,19 +332,23 @@ namespace zypp
                 select.availableBegin()->status().resetTransact( ResStatus::USER );
             }
         }
+#endif
     }
 
     /** */
     ZYppImpl::LocaleSet ZYppImpl::getAvailableLocales() const
     {
       ZYpp::LocaleSet ret;
-      ResPool mpool( pool() );
+#warning REIMPLEMENT WITHOUT LANGUAGE RESOLVABLE
+#if 0
+      ResPool mpool( ResPool::instance() );
       for ( ResPool::byKind_iterator it = mpool.byKindBegin<Language>();
             it != mpool.byKindEnd<Language>(); ++it )
         {
           if ( (*it).status().isUninstalled() ) // available!
             ret.insert( Locale( (*it)->name() ) );
         }
+#endif
       return ret;
     }
 
@@ -385,7 +356,9 @@ namespace zypp
     ZYppImpl::LocaleSet ZYppImpl::getRequestedLocales() const
     {
       ZYpp::LocaleSet ret;
-      ResPool mpool( pool() );
+#warning REIMPLEMENT WITHOUT LANGUAGE RESOLVABLE
+#if 0
+     ResPool mpool( ResPool::instance() );
       for ( ResPool::byKind_iterator it = mpool.byKindBegin<Language>();
             it != mpool.byKindEnd<Language>(); ++it )
         {
@@ -397,12 +370,16 @@ namespace zypp
                     && select.availableBegin()->status().getTransactValue() == ResStatus::TRANSACT )
             ret.insert( Locale( (*it)->name() ) );
         }
+#endif
       return ret;
     }
 
     void ZYppImpl::availableLocale( const Locale & locale_r )
     {
+#warning REIMPLEMENT WITHOUT LANGUAGE RESOLVABLE
+#if 0
       _pool.insert( Language::availableInstance( locale_r ) );
+#endif
     }
 
     //------------------------------------------------------------------------
index 5cec314..9461d9b 100644 (file)
@@ -15,7 +15,6 @@
 #include <iosfwd>
 
 #include "zypp/TmpPath.h"
-#include "zypp/ResPoolManager.h"
 #include "zypp/Target.h"
 #include "zypp/Resolver.h"
 #include "zypp/Locale.h"
@@ -48,16 +47,13 @@ namespace zypp
       /** Dtor */
       ~ZYppImpl();
 
-    private:
-      void removeInstalledResolvables ();
-
     public:
       /** */
       ResPool pool() const
-      { return _pool.accessor(); }
+      { return ResPool::instance(); }
 
       ResPoolProxy poolProxy() const
-      { return _pool.proxy(); }
+      { return ResPool::instance().proxy(); }
 
       /** */
       KeyRing_Ptr keyRing() const
@@ -67,10 +63,6 @@ namespace zypp
       Resolver_Ptr resolver() const
       { return _resolver; }
 
-      void addResolvables (const ResStore& store, bool installed = false);
-
-      void removeResolvables (const ResStore& store);
-
     public:
       /** \todo Signal locale change. */
       /**
@@ -86,12 +78,6 @@ namespace zypp
 
       /**
        * \throws Exception
-       * if commit_only == true, just init the target, dont populate store or pool
-       */
-      ZYPP_DEPRECATED void initTarget(const Pathname & root, bool commit_only);
-
-      /**
-       * \throws Exception
        */
       void finishTarget();
 
@@ -147,13 +133,11 @@ namespace zypp
       DiskUsageCounter::MountPointSet getPartitions() const;
 
     public:
-        
+
       int applyLocks();
-      
+
     private:
       /** */
-      ResPoolManager _pool;
-      /** */
       Target_Ptr _target;
       /** */
       Resolver_Ptr _resolver;