libzypp 17.38.6
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>
14
15namespace 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
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
98 { return _needrebootEval && _needrebootEval->contains( solv_r ); }
99
100} // namespace zyppng::sat
A sat capability.
Definition capability.h:74
std::optional< EvaluatedSolvableSpec > _needrebootEval
void attach(Pool &p) override
called when the component is attached to a pool
void prepare(PreparedPool &pp) override
Called by Pool::prepare() — evaluates all specs against the prepared pool.
void setNeedrebootSpec(SolvableSpec spec)
Replace the reboot-needed spec.
void onReset(Pool &pool) override
Called on full pool reset — resets all evaluated forms.
SolvableSpec _ptfMasterSpec
hardwired: provides ptf()
std::optional< EvaluatedSolvableSpec > _ptfPackageEval
bool isNeedreboot(const Solvable &solv_r) const
bool isRetracted(const Solvable &solv_r) const
void onInvalidate(Pool &pool, PoolInvalidation invalidation) override
Called when pool content changes — resets all evaluated forms.
std::optional< EvaluatedSolvableSpec > _ptfMasterEval
std::optional< EvaluatedSolvableSpec > _retractedEval
SolvableSpec _ptfPackageSpec
hardwired: provides ptf-package()
SolvableSpec _retractedSpec
hardwired: provides retracted-patch-package()
bool isPtfPackage(const Solvable &solv_r) const
bool isPtfMaster(const Solvable &solv_r) const
Orchestrator for a libsolv pool instance.
Definition pool.h:37
A move-only, non-owning view of a Pool that guarantees the whatprovides index is valid.
A pure data container describing a set of solvables by ident and/or provides.
A Solvable object within the sat Pool.
Definition solvable.h:65
static const IdString ptfPackageToken
Indicator provides ptf-package().
Definition solvable.h:74
static const IdString retractedToken
Indicator provides retracted-patch-package().
Definition solvable.h:72
static const IdString ptfMasterToken
Indicator provides ptf().
Definition solvable.h:73
This file contains private API, this might break at any time between releases.
PoolInvalidation
Defines the scope of an invalidation request for the Pool.
@ Dependency
Only external requirements/context changed (e.g., Locales).
@ Data
Structural or data change (e.g., Rootfs, Arch, or Repo content).