6 #include <zypp/base/Measure.h>
7 #include <zypp/base/Logger.h>
9 #include <zypp/ZYppFactory.h>
11 #include "zypp/Product.h"
12 #include "zypp/detail/PackageImplIf.h"
13 #include "zypp/Package.h"
15 #include "zypp2/cache/CacheInitializer.h"
16 #include "zypp2/cache/CacheStore.h"
17 #include "zypp/data/ResolvableData.h"
18 #include "zypp/data/RecordId.h"
19 #include "zypp/capability/CapabilityImpl.h"
20 #include "zypp/base/Measure.h"
24 using namespace zypp::debug;
25 using namespace zypp::capability;
28 int main(int argc, char **argv)
32 ZYpp::Ptr z = getZYpp();
34 // CapabilityImpl::Ptr freak = capability::parse( ResTraits<Package>::kind, "libc.so.6");
35 // MIL << freak << endl;
36 // MIL << "isVer: " << isKind<VersionedCap>(freak) << endl;
37 // MIL << "isNam: " << isKind<NamedCap>(freak) << endl;
38 // MIL << "isFil: " << isKind<FileCap>(freak) << endl;
39 // VersionedCap::Ptr v = asKind<VersionedCap>(freak);
42 Pathname dbfile = Pathname(getenv("PWD")) + "data.db";
43 zypp::cache::CacheStore store(getenv("PWD"));
44 //zypp::cache::CacheInitializer init( "/", dbfile );
45 //t.tick("init sqlite database");
47 std::list<CapabilityImpl::Ptr> caps;
49 file.open((Pathname(SRC_DIR) + "/capabilities.txt").asString().c_str());
51 Measure cap_parse_timer("Parse capabilities");
52 while (file && !file.eof())
54 getline(file, buffer);
55 CapabilityImpl::Ptr cap = capability::parse( ResTraits<Package>::kind, buffer );
58 //ZYPP_THROW(Exception("Invalid capability: [" + buffer + "]"));
59 ERR << "Invalid cap: [" << buffer << "]" << endl;
62 //DBG << "capability : [" << buffer << "]" << endl;
65 cap_parse_timer.elapsed();
66 MIL << caps.size() << " capabilities" << endl;
68 Measure cap_insert_timer("Insert Capabilities");
69 for ( list<CapabilityImpl::Ptr>::const_iterator it = caps.begin(); it != caps.end(); ++it )
71 CapabilityImpl::Ptr cap = *it;
72 if ( ( ! cap ) || ( cap->refers() != ResTraits<Package>::kind ) )
74 ERR << "Invalid capability : [" << buffer << "]" << endl;
77 store.appendDependency( 1, zypp::Dep::REQUIRES, cap );
79 cap_insert_timer.elapsed();
83 file.open((Pathname(SRC_DIR) + "/names").asString().c_str());
84 while (file && !file.eof())
86 getline(file, buffer);
87 data::RecordId id = store.lookupOrAppendName(buffer);
90 catch ( const Exception &e )
92 cout << e.msg() << endl;