15#include <zypp/base/Logger.h>
16#include <zypp/base/Gettext.h>
17#include <zypp/base/Exception.h>
18#include <zypp/base/Xml.h>
20#include <zypp/AutoDispose.h>
21#include <zypp/Pathname.h>
23#include <zypp/sat/detail/PoolImpl.h>
45#define NO_REPOSITORY_RETURN( VAL ) \
46 sat::detail::CRepo * _repo( get() ); \
47 if ( ! _repo ) return VAL
49#define NO_REPOSITORY_THROW( VAL ) \
50 sat::detail::CRepo * _repo( get() ); \
51 if ( ! _repo ) ZYPP_THROW( VAL )
76 return _repo->priority;
82 return _repo->subpriority;
104 if ( it.asString() == id_r )
138 for (
const auto & val :
keywords() )
169 if ( compare( cpeid_r, it.cpeId(), SetRelation::subset ) )
175 if ( ! myIds.
empty() )
181 if ( compare( cpeid_r, prod->cpeId(), SetRelation::superset ) )
185 if ( prod->hasUpdateContentIdentifier( myId.asString() ) )
204 if ( ! myIds.
empty() )
222 return !_repo->nsolvables;
228 return _repo->nsolvables;
285 info_r.
alias().c_str(),
alias().c_str() ) ) );
288 MIL << *
this << endl;
300 MIL << *
this <<
" removed from pool" << endl;
312 if ( ++it != _for_end )
331 if (
myPool()._addSolv( _repo, file ) != 0 )
336 MIL << *
this <<
" after adding " << file_r << endl;
343 std::string command( file_r.
extension() ==
".gz" ?
"zcat " :
"cat " );
353 if (
myPool()._addHelix( _repo, file ) != 0 )
358 MIL << *
this <<
" after adding " << file_r << endl;
365 std::string command( file_r.
extension() ==
".gz" ?
"zcat " :
"cat " );
375 if (
myPool()._addTesttags( _repo, file ) != 0 )
380 MIL << *
this <<
" after adding " << file_r << endl;
397 return str <<
"noRepository";
399 return str <<
"sat::repo(" << obj.
alias() <<
")"
401 <<
"prio " << obj.
get()->priority <<
'.' << obj.
get()->subpriority
409 {
"name", obj.
name() },
410 {
"alias", obj.
alias() }
417 void RepositoryIterator::increment()
424 }
while ( base() < satpool->repos+satpool->nrepos && !*base() );
#define NO_REPOSITORY_THROW(VAL)
#define NO_REPOSITORY_RETURN(VAL)
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
void resetDispose()
Set no dispose function.
Common Platform Enumearation (2.3) See http://cpe.mitre.org/ for more information on the Common Platf...
static constexpr NoThrowType noThrow
Indicator argument for non-trowing ctor.
Store and operate on date (time_t).
static Date now()
Return the current time.
Base class for Exception.
TraitsType::constPtrType constPtr
bool hasUpdateContentIdentifier(const Repository::ContentIdentifier &cident_r) const
Whether cident_r is listed as required update repository.
What is known about a repository.
Query class for Repository related products.
std::string label() const
Product label.
CpeId cpeId() const
The Common Platform Enumeration name for this product.
Repository nextInPool() const
Return next Repository in Pool (or noRepository).
int satInternalSubPriority() const
static const Repository noRepository
Represents no Repository.
void addHelix(const Pathname &file_r)
Load Solvables from a helix-file.
bool hasKeyword(const std::string &val_r) const
Whether val_r is present in keywords.
std::string ContentIdentifier
bool isUpdateRepo() const
Hint whether the Repo may provide updates for a product.
Keywords keywords() const
repository keywords (tags)
sat::detail::CRepo * get() const
Expert backdoor.
bool solvablesEmpty() const
Whether Repository contains solvables.
std::string label() const
Alias or name, according to ZConfig::repoLabelIsAlias.
Date suggestedExpirationTimestamp() const
Suggested expiration timestamp.
SolvableIterator solvablesEnd() const
Iterator behind the last Solvable.
ProductInfoIterator compatibleWithProductEnd() const
Get an iterator to the end of the repository compatible distros.
int satInternalPriority() const
libsolv internal priorities.
void clearInfo()
Remove any RepoInfo set for this repository.
sat::Solvable::IdType addSolvables(unsigned count_r)
Add count_r new empty Solvable to this Repository.
bool providesUpdatesFor(const CpeId &cpeid_r) const
Hint whether the Repo may provide updates for a product identified by its CpeId.
SolvableIterator solvablesBegin() const
Iterator to the first Solvable.
void addTesttags(const Pathname &file_r)
Load Solvables from a libsolv testtags-file.
ProductInfoIterator updatesProductEnd() const
Get an iterator to the end of distos the repository provides upadates for.
ContentIdentifier contentIdentifier() const
Unique string identifying a repositories content.
bool maybeOutdated() const
The suggested expiration date of this repository already passed.
ProductInfoIterator compatibleWithProductBegin() const
Get an iterator to the beginning of the repository compatible distros.
std::string alias() const
Short unique string to identify a repo.
bool hasContentIdentifier(const ContentIdentifier &id_r) const
Whether id_r matches this repos content identifier.
size_type solvablesSize() const
Number of solvables in Repository.
void setInfo(const RepoInfo &info_r)
Set RepoInfo for this repository.
std::string name() const
Label to display for this repo.
void addSolv(const Pathname &file_r)
Load Solvables from a solv-file.
ContentRevision contentRevision() const
Timestamp or arbitrary user supplied string.
sat::detail::size_type size_type
filter_iterator< detail::ByRepository, sat::detail::SolvableIterator > SolvableIterator
Date generatedTimestamp() const
Timestamp when this repository was generated.
ProductInfoIterator updatesProductBegin() const
Get an iterator to the beginning of distos the repository provides upadates for.
std::string ContentRevision
sat::ArrayAttr< std::string, std::string > Keywords
static const std::string & systemRepoAlias()
Reserved system repository alias @System .
RepoInfo info() const
Return any associated RepoInfo.
void eraseFromPool()
Remove this Repository from its Pool.
bool isSystemRepo() const
Return whether this is the system repository.
static ResPool instance()
Singleton ctor.
byKind_iterator byKindEnd(const ResKind &kind_r) const
byKind_iterator byKindBegin(const ResKind &kind_r) const
const char * c_str() const
String representation.
const std::string & asString() const
String representation.
std::string extension() const
Return all of the characters in name after and including the last dot in the last element of name.
std::string label() const
Label for use in messages for the user interface.
std::string name() const
Repository name.
std::string alias() const
unique identifier for this source.
LookupAttr::TransformIterator based container to retrieve list attributes.
unsigned asUnsigned() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
std::string asString() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
iterator end() const
Iterator behind the end of query results.
bool empty() const
Whether the query is empty.
@ REPO_ATTR
Search for repository attributes.
iterator begin() const
Iterator to the begin of query results.
Lightweight repository attribute value lookup.
static Pool instance()
Singleton ctor.
detail::CPool * get() const
Expert backdoor.
static const SolvAttr repositoryUpdates
array of repositoryProductLabel repositoryProductCpeid pairs
static const SolvAttr repositoryRepoid
static const SolvAttr repositoryRevision
static const SolvAttr repositoryProductLabel
static const SolvAttr repositoryTimestamp
static const SolvAttr repositoryExpire
static const SolvAttr repositoryProductCpeid
static const SolvAttr repositoryDistros
array of repositoryProductLabel repositoryProductCpeid pairs
static const SolvAttr repositoryKeywords
bool isSystemRepo(CRepo *repo_r) const
CRepo * getRepo(RepoIdType id_r) const
const RepoInfo & repoInfo(RepoIdType id_r)
void _deleteRepo(CRepo *repo_r)
Delete repo repo_r from pool.
detail::SolvableIdType _addSolvables(CRepo *repo_r, unsigned count_r)
Adding Solvables to a repo.
static const std::string & systemRepoAlias()
Reserved system repository alias @System .
void setRepoInfo(RepoIdType id_r, const RepoInfo &info_r)
Also adjust repo priority and subpriority accordingly.
Iterate over valid Solvables in the pool.
String related utilities and Regular expression matching.
static const RepoIdType noRepoId(0)
Id to denote Repo::noRepository.
::s_Repo CRepo
Wrapped libsolv C data type exposed as backdoor.
::s_Pool CPool
Wrapped libsolv C data type exposed as backdoor.
unsigned SolvableIdType
Id type to connect Solvable and sat-solvable.
std::string form(const char *format,...) __attribute__((format(printf
Printf style construction of std::string.
std::ostream & node(std::ostream &out_r, const std::string &name_r, Node::Attr attr_r)
Easy-to use interface to the ZYPP dependency resolver.
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
std::ostream & dumpAsXmlOn(std::ostream &str, const Repository &obj)
Functor filtering Solvable by Repository.
static PoolImpl & myPool()
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
#define ZYPP_THROW(EXCPT)
Drops a logline and throws the Exception.