libzypp  17.38.7
packagepolicycomponent.cc
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
11 #include <zypp/ng/sat/pool.h>
12 #include <zypp/ng/sat/solvable.h>
13 #include <zypp/ng/sat/capability.h>
14 
15 namespace zyppng::sat {
16 
17  // -----------------------------------------------------------------------
18  // Construction: wire up the hardwired provides tokens
19  // -----------------------------------------------------------------------
20 
22  {
23  // Retracted: provides retracted-patch-package()
26 
27  // PTF master: provides ptf()
30 
31  // PTF package: provides ptf-package()
34  }
35 
36  // -----------------------------------------------------------------------
37  // IPreparedPoolComponent overrides
38  // -----------------------------------------------------------------------
39 
41  {
42  assert( _pool == nullptr && "PackagePolicyComponent can only be attached once");
43  _pool = &p;
44  }
45 
47  {
48  _retractedEval .emplace( pp, _retractedSpec );
49  _ptfMasterEval .emplace( pp, _ptfMasterSpec );
50  _ptfPackageEval.emplace( pp, _ptfPackageSpec );
51  _needrebootEval.emplace( pp, _needrebootSpec );
52  }
53 
55  {
56  if ( invalidation == PoolInvalidation::Data ) {
57  _retractedEval .reset();
58  _ptfMasterEval .reset();
59  _ptfPackageEval.reset();
60  _needrebootEval.reset();
61  // Note: the specs themselves (definitions) are kept; only the
62  // evaluated forms are dropped. prepare() will rebuild them.
63  }
64  }
65 
67  {
68  _retractedEval .reset();
69  _ptfMasterEval .reset();
70  _ptfPackageEval.reset();
71  _needrebootEval.reset();
72  }
73 
74  // -----------------------------------------------------------------------
75  // Public query API
76  // -----------------------------------------------------------------------
77 
78  bool PackagePolicyComponent::isRetracted( const Solvable & solv_r ) const
79  { return _retractedEval && _retractedEval->contains( solv_r ); }
80 
81  bool PackagePolicyComponent::isPtfMaster( const Solvable & solv_r ) const
82  { return _ptfMasterEval && _ptfMasterEval->contains( solv_r ); }
83 
84  bool PackagePolicyComponent::isPtfPackage( const Solvable & solv_r ) const
85  { return _ptfPackageEval && _ptfPackageEval->contains( solv_r ); }
86 
88  {
89  _needrebootSpec = std::move( spec );
90  // The evaluated form is stale now; it will be rebuilt on next prepare().
91  _needrebootEval.reset();
92 
93  if ( _pool )
94  _pool->setDirty( PoolInvalidation::Dependency, { __PRETTY_FUNCTION__, "setting new reboot spec"} );
95  }
96 
97  bool PackagePolicyComponent::isNeedreboot( const Solvable & solv_r ) const
98  { return _needrebootEval && _needrebootEval->contains( solv_r ); }
99 
100 } // namespace zyppng::sat
A Solvable object within the sat Pool.
Definition: solvable.h:64
static const IdString ptfPackageToken
Indicator provides ptf-package()
Definition: solvable.h:74
std::optional< EvaluatedSolvableSpec > _ptfMasterEval
Only external requirements/context changed (e.g., Locales).
void onReset(Pool &pool) override
Called on full pool reset — resets all evaluated forms.
SolvableSpec _ptfMasterSpec
hardwired: provides ptf()
SolvableSpec _needrebootSpec
user-supplied
bool isPtfMaster(const Solvable &solv_r) const
Orchestrator for a libsolv pool instance.
Definition: pool.h:36
SolvableSpec _retractedSpec
hardwired: provides retracted-patch-package()
std::optional< EvaluatedSolvableSpec > _ptfPackageEval
bool isNeedreboot(const Solvable &solv_r) const
void prepare(PreparedPool &pp) override
Called by Pool::prepare() — evaluates all specs against the prepared pool.
void onInvalidate(Pool &pool, PoolInvalidation invalidation) override
Called when pool content changes — resets all evaluated forms.
Structural or data change (e.g., Rootfs, Arch, or Repo content).
A move-only, non-owning view of a Pool that guarantees the whatprovides index is valid.
Definition: preparedpool.h:50
std::optional< EvaluatedSolvableSpec > _retractedEval
bool isRetracted(const Solvable &solv_r) const
This file contains private API, this might break at any time between releases.
Definition: capabilities.h:22
SolvableSpec _ptfPackageSpec
hardwired: provides ptf-package()
A sat capability.
Definition: capability.h:73
void setDirty(PoolInvalidation invalidation, std::initializer_list< std::string_view > reasons)
Invalidate everything.
Definition: pool.cc:152
void attach(Pool &p) override
called when the component is attached to a pool
A pure data container describing a set of solvables by ident and/or provides.
Definition: solvablespec.h:54
static const IdString retractedToken
Indicator provides retracted-patch-package()
Definition: solvable.h:72
std::optional< EvaluatedSolvableSpec > _needrebootEval
bool isPtfPackage(const Solvable &solv_r) const
PoolInvalidation
Defines the scope of an invalidation request for the Pool.
Definition: poolconstants.h:66
void addProvides(Capability cap_r)
Add cap_r to the provides set.
Definition: solvablespec.h:98
static const IdString ptfMasterToken
Indicator provides ptf()
Definition: solvable.h:73
void setNeedrebootSpec(SolvableSpec spec)
Replace the reboot-needed spec.