1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
#include "Tools.h"
#include <zypp/ResObjects.h>
#include <zypp/sat/LookupAttr.h>
#include <zypp/PoolQuery.h>
static const Pathname sysRoot( "/tmp/ToolScanRepos" );
void addInstall( const std::string & pkgspec_r )
{
bool rewrote( false );
Capability pkgspec( Capability::guessPackageSpec( pkgspec_r, rewrote ) );
MIL << "Add '" << pkgspec << "' for '" << pkgspec_r << "'" << endl;
ResPool::instance().resolver().addRequire( pkgspec );
}
void addConflict( const std::string & pkgspec_r )
{
bool rewrote( false );
Capability pkgspec( Capability::guessPackageSpec( pkgspec_r, rewrote ) );
MIL << "Con '" << pkgspec << "' for '" << pkgspec_r << "'" << endl;
ResPool::instance().resolver().addConflict( pkgspec );
}
bool solve()
{
bool rres = false;
{
//zypp::base::LogControl::TmpLineWriter shutUp;
//ResPool::instance().resolver().setOnlyRequires( true );
rres = ResPool::instance().resolver().resolvePool();
}
if ( ! rres )
{
ERR << "resolve " << rres << endl;
ResPool::instance().resolver().problems();
return false;
}
MIL << "resolve " << rres << endl;
vdumpPoolStats( USR << "Transacting:"<< endl,
make_filter_begin<resfilter::ByTransact>(ResPool::instance()),
make_filter_end<resfilter::ByTransact>(ResPool::instance()) ) << endl;
return true;
}
bool install()
{
ZYppCommitPolicy pol;
pol.dryRun( true );
pol.rpmInstFlags( pol.rpmInstFlags().setFlag( target::rpm::RPMINST_JUSTDB ) );
SEC << getZYpp()->commit( pol ) << endl;
return true;
}
/******************************************************************
**
** FUNCTION NAME : main
** FUNCTION TYPE : int
*/
int main( int argc, char * argv[] )
{
INT << "===[START]==========================================" << endl;
///////////////////////////////////////////////////////////////////
if ( sysRoot == "/" )
::unsetenv( "ZYPP_CONF" );
TestSetup::LoadSystemAt( sysRoot, Arch_x86_64 );
///////////////////////////////////////////////////////////////////
ResPool pool( ResPool::instance() );
sat::Pool satpool( sat::Pool::instance() );
///////////////////////////////////////////////////////////////////
// addConflict( "kernel-default" );
// addConflict( "kernel-default-base" );
addInstall( "test");
solve();
INT << "===[END]============================================" << endl << endl;
return 0;
}
|