File: Test.cc

package info (click to toggle)
libzypp 17.25.7-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 30,144 kB
  • sloc: cpp: 94,656; xml: 2,575; sh: 700; makefile: 34; python: 12
file content (82 lines) | stat: -rw-r--r-- 2,398 bytes parent folder | download | duplicates (2)
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;
}