PKG_MANAGEMENT_LIBS = dbsource/lib@PACKAGE@_dbsource.la $(top_srcdir)/zypp/lib@PACKAGE@.la
PKG_MANAGEMENT_CFLAGS = -I$(top_srcdir)
-query_systemdir = $(libdir)/zmd
-query_system_PROGRAMS = query-system
-query_system_SOURCES = query-system.cc
-query_system_CFLAGS = $(PKG_MANAGEMENT_CFLAGS) $(SQLITE_CFLAGS)
-query_system_LDADD = $(PKG_MANAGEMENT_LIBS) $(SQLITE_LIBS)
+CFLAGS = $(PKG_MANAGEMENT_CFLAGS) $(SQLITE_CFLAGS)
+LDADD = $(PKG_MANAGEMENT_LIBS) $(SQLITE_LIBS)
-query_filesdir = $(libdir)/zmd
-query_files_PROGRAMS = query-files
-query_files_SOURCES = query-files.cc
-query_files_CFLAGS = $(PKG_MANAGEMENT_CFLAGS) $(SQLITE_CFLAGS)
-query_files_LDADD = $(PKG_MANAGEMENT_LIBS) $(SQLITE_LIBS)
+bindir = $(libdir)/zmd
+bin_PROGRAMS = \
+ query-system \
+ query-files \
+ resolve-dependencies
+query_system_SOURCES = query-system.cc
+query_files_SOURCES = query-files.cc
+resolve_dependencies_SOURCES = resolve-dependencies.cc add-transactions.cc add-transactions.h
DEFINE_PTR_TYPE(DbAccess);
typedef std::list<zypp::ResObject::constPtr> ResObjectList;
+typedef std::map<sqlite_int64, zypp::ResObject::constPtr> IdMap;
+//-----------------------------------------------------------------------------
+// relations
#define RELATION_ANY 0
#define RELATION_EQUAL (1 << 0)
RC_RELATION_NONE = RELATION_NONE,
} RCResolvableRelation;
+//-----------------------------------------------------------------------------
+// architectures
typedef enum {
RC_ARCH_UNKNOWN = -1,
RC_ARCH_SPARC64,
} RCArch;
+//-----------------------------------------------------------------------------
+// dependencies
+
typedef enum {
RC_DEP_TYPE_REQUIRE = 0,
RC_DEP_TYPE_PROVIDE,
*/
void
-DbPackageImpl::readHandle( sqlite3_stmt *handle )
+DbPackageImpl::readHandle( sqlite_int64 id, sqlite3_stmt *handle )
{
+ _zmdid = id;
+
const char * text = (const char *) sqlite3_column_text (handle, 12);
if (text != NULL)
_summary = TranslatedText( string( text ) );
ByteCount DbPackageImpl::size() const
{ return _size_installed; }
+ZmdId DbPackageImpl::zmdid() const
+{ return _zmdid; }
+
/** */
ByteCount DbPackageImpl::archivesize() const
{ return _size_archive; }
/** Default ctor
*/
DbPackageImpl( Source_Ref source_r );
- void readHandle( sqlite3_stmt *handle );
+ void readHandle( sqlite_int64 id, sqlite3_stmt *handle );
/** Package summary */
virtual TranslatedText summary() const;
virtual bool installOnly() const;
/** */
virtual Source_Ref source() const;
+ /** */
+ virtual ZmdId zmdid() const;
protected:
Source_Ref _source;
TranslatedText _description;
PackageGroup _group;
bool _install_only;
+ ZmdId _zmdid;
ByteCount _size_installed;
ByteCount _size_archive;
DbSourceImpl::DbSourceImpl()
: _db (NULL)
+ , _idmap (NULL)
{
}
void
DbSourceImpl::factoryCtor( const media::MediaId & media_r, const Pathname & path_r, const std::string & alias_r, const Pathname cache_dir_r)
{
- MIL << "DbSourceImpl::factoryCtor(<media>, " << path_r << ", " << alias_r << ", " << cache_dir_r << ")" << endl;
+// MIL << "DbSourceImpl::factoryCtor(<media>, " << path_r << ", " << alias_r << ", " << cache_dir_r << ")" << endl;
_media = media_r;
_alias = alias_r;
_cache_dir = cache_dir_r;
_db = db;
}
+void
+DbSourceImpl::attachIdMap (IdMap *idmap)
+{
+ _idmap = idmap;
+}
+
//-----------------------------------------------------------------------------
static sqlite3_stmt *
unsigned epoch = sqlite3_column_int (handle, 4);
Arch arch (DbAccess::Rc2Arch( (RCArch)(sqlite3_column_int (handle, 5)) ) );
- impl->readHandle( handle );
+ impl->readHandle( id, handle );
// Collect basic Resolvable data
NVRAD dataCollect( name,
Package::Ptr package = detail::makeResolvableFromImpl(dataCollect, impl);
_store.insert( package );
+ if (_idmap != 0)
+ (*_idmap)[id] = package;
}
catch (const Exception & excpt_r)
{
}
}
catch ( Exception & excpt_r ) {
- ERR << "Can't parse dependencies for resolvable_id " << resolvable_id << ", name " << name << endl;
+ ERR << "Can't parse dependencies for resolvable_id " << resolvable_id << ", name '" << name << "', version '" << version << "', release '" << release << "'" << endl;
ZYPP_CAUGHT( excpt_r );
}
}
{ return true; }
void attachDatabase( sqlite3 *db );
+ void attachIdMap (IdMap *idmap);
private:
zypp::Source_Ref _source;
+ IdMap *_idmap;
void createResolvables( zypp::Source_Ref source_r );
};
{
}
+
+ResObject::constPtr
+DbSources::getById (sqlite_int64 id) const
+{
+ IdMap::const_iterator it = _idmap.find(id);
+ if (it == _idmap.end())
+ return NULL;
+ return it->second;
+}
+
+
const SourcesList &
DbSources::sources (bool refresh)
{
media::MediaId mediaid = mmgr.open(Url("file://"));
SourceFactory factory;
+ // read catalogs table
+
while ((rc = sqlite3_step (handle)) == SQLITE_ROW) {
string id ((const char *) sqlite3_column_text (handle, 0));
string name ((const char *) sqlite3_column_text (handle, 1));
impl->setPriorityUnsubscribed( priority_unsub );
impl->attachDatabase (_db);
+ impl->attachIdMap (&_idmap);
Source_Ref src( factory.createFrom( impl ) );
_sources.push_back( src );
#include <iosfwd>
#include <string>
#include <list>
+#include <map>
#include <sqlite3.h>
#include "zypp/Source.h"
+#include "zypp/PoolItem.h"
+
+#include "DbAccess.h"
///////////////////////////////////////////////////////////////////
//
private:
sqlite3 *_db;
SourcesList _sources;
+ IdMap _idmap;
public:
virtual ~DbSources();
const SourcesList & sources (bool refresh = false);
+ zypp::ResObject::constPtr getById (sqlite_int64 id) const;
};
#endif // ZMD_BACKEND_DBSOURCES_H
main (int argc, char **argv)
{
ZYppFactory zf;
- ZYpp::Ptr God = zf.letsTest();
+ ZYpp::Ptr God = zf.getZYpp();
try {
God->initTarget("/");
}
ZYppFactory zf;
- ZYpp::Ptr God = zf.letsTest();
+ ZYpp::Ptr God = zf.getZYpp();
try {
God->initTarget("/");