20#include <solv/solvable.h>
26#include <zypp/base/Easy.h>
27#include <zypp/base/Logger.h>
28#include <zypp/base/Gettext.h>
29#include <zypp/base/Exception.h>
31#include <zypp/AutoDispose.h>
33#include <zypp/sat/detail/PoolImpl.h>
53 {
return myPool()->nsolvables; }
71 {
return !
myPool()->urepos; }
74 {
return myPool()->urepos; }
97 if ( ! it->solvablesEmpty() )
111 ret += it->solvablesSize();
125 pool_whatmatchesdep(
get(),
attr.id(), cap.
id(), q, 0);
132 pool_whatmatchessolvable(
get(),
attr.id(),
static_cast<Id
>( solv.
id() ), q, 0 );
139 pool_whatcontainsdep(
get(),
attr.id(), cap.
id(), q, 0 );
167 if ( alias_r == it->alias() )
190 tmprepo->addSolv( file_r );
214 tmprepo->addHelix( file_r );
276 return str <<
"sat::pool(" << obj.
serial() <<
")["
283 #undef ZYPP_BASE_LOGGER_LOGGROUP
284 #define ZYPP_BASE_LOGGER_LOGGROUP "solvidx"
292 ERR <<
"Can't open solv-file: " << solv << endl;
297 if ( ::unlink( solvidxfile.c_str() ) == -1 && errno != ENOENT )
299 ERR <<
"Can't unlink solv-idx: " <<
Errno() << endl;
303 int fd = ::open( solvidxfile.c_str(), O_CREAT|O_EXCL|O_WRONLY|O_TRUNC, 0644 );
306 ERR <<
"Can't create solv-idx: " <<
Errno() << endl;
311 std::ofstream idx( solvidxfile.c_str() );
316 if ( ::repo_add_solv( _repo, solv, 0 ) == 0 )
320 FOR_REPO_SOLVABLES( _repo, _id, _solv )
325#define idstr(V) pool_id2str( _pool, _solv->V )
326 if ( _solv->arch == ARCH_SRC || _solv->arch == ARCH_NOSRC )
327 idx <<
"srcpackage:" <<
idstr(name) <<
SEP <<
idstr(evr) <<
SEP <<
"noarch" << endl;
335 ERR <<
"Can't read solv-file: " << ::pool_errstr( _pool ) << endl;
337 ::repo_free( _repo, 0 );
338 ::pool_free( _pool );
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
void resetDispose()
Set no dispose function.
sat::detail::IdType id() const
Expert backdoor.
Convenience errno wrapper.
'Language[_Country]' codes.
What is known about a repository.
void setInfo(const RepoInfo &info_r)
Set RepoInfo for this repository.
bool isSystemRepo() const
Return whether this is the system repository.
Simple serial number provider.
Pathname extend(const std::string &r) const
Append string r to the last component of the path.
const char * c_str() const
String representation.
const std::string & asString() const
String representation.
std::string basename() const
Return the last component of this path.
void setAutorefresh(bool autorefresh)
enable or disable autorefresh
void setAlias(const std::string &alias)
set the repository alias
void setName(const std::string &name)
set the repository name
void setEnabled(bool enabled)
enable or disable the repository
std::string alias() const
unique identifier for this source.
const SerialNumber & serialIDs() const
Serial number changing whenever resusePoolIDs==true was used.
Queue autoInstalled() const
Get ident list of all autoinstalled solvables.
RepositoryIterator reposEnd() const
Iterator behind the last Repository.
bool addRequestedLocale(const Locale &locale_r)
Add one Locale to the set of requested locales.
size_type reposSize() const
Number of repos in Pool.
const MultiversionList & multiversion() const
const LocaleSet & getAvailableLocales() const
Get the set of available locales.
void setAutoInstalled(const Queue &autoInstalled_r)
Set ident list of all autoinstalled solvables.
Queue whatMatchesSolvable(const SolvAttr &attr, const Solvable &solv) const
Iterable< RepositoryIterator > repos() const
Iterate the repositories.
const LocaleSet & getRemovedRequestedLocales() const
Removed since last initRequestedLocales.
Queue whatContainsDep(const SolvAttr &attr, const Capability &cap) const
bool solvablesEmpty() const
Whether Pool contains solvables.
bool isRequestedLocale(const Locale &locale_r) const
Whether this Locale is in the set of requested locales.
Repository findSystemRepo() const
Return the system repository if it is on the pool.
size_type capacity() const
Internal array size for stats only.
SolvableIterator solvablesEnd() const
Iterator behind the last Solvable.
void setTextLocale(const Locale &locale_r)
Set the default language for retrieving translated texts.
detail::SolvableIterator SolvableIterator
Pathname rootDir() const
Get rootdir (for file conflicts check)
zypp::detail::RepositoryIterator RepositoryIterator
RepositoryIterator reposBegin() const
Iterator to the first Repository.
Repository reposFind(const std::string &alias_r) const
Find a Repository named alias_r.
size_type solvablesSize() const
Number of solvables in Pool.
const SerialNumber & serial() const
Housekeeping data serial number.
Repository addRepoSolv(const Pathname &file_r, const std::string &name_r)
Load Solvables from a solv-file into a Repository named name_r.
bool eraseRequestedLocale(const Locale &locale_r)
Erase one Locale from the set of requested locales.
bool isAvailableLocale(const Locale &locale_r) const
Whether this Locale is in the set of available locales.
Queue whatMatchesDep(const SolvAttr &attr, const Capability &cap) const
static const std::string & systemRepoAlias()
Reserved system repository alias @System .
Repository addRepoHelix(const Pathname &file_r, const std::string &name_r)
Load Solvables from a helix-file into a Repository named name_r.
SolvableIterator solvablesBegin() const
Iterator to the first Solvable.
Repository reposInsert(const std::string &alias_r)
Return a Repository named alias_r.
void prepare() const
Update housekeeping data if necessary (e.g.
detail::size_type size_type
void setNeedrebootSpec(sat::SolvableSpec needrebootSpec_r)
Solvables which should trigger the reboot-needed hint if installed/updated.
detail::CPool * get() const
Expert backdoor.
void setRequestedLocales(const LocaleSet &locales_r)
Set the requested locales.
Repository systemRepo()
Return the system repository, create it if missing.
const LocaleSet & getRequestedLocales() const
Return the requested locales.
const LocaleSet & getAddedRequestedLocales() const
Added since last initRequestedLocales.
bool reposEmpty() const
Whether Pool contains repos.
void initRequestedLocales(const LocaleSet &locales_r)
Start tracking changes based on this locales_r.
Libsolv Id queue wrapper.
Solvable set wrapper to allow adding additional convenience iterators.
Define a set of Solvables by ident and provides.
A Solvable object within the sat Pool.
IdType id() const
Expert backdoor.
Pathname rootDir() const
Get rootdir (for file conflicts check)
StringQueue autoInstalled() const
Get ident list of all autoinstalled solvables.
void setTextLocale(const Locale &locale_r)
void initRequestedLocales(const LocaleSet &locales_r)
Start tracking changes based on this locales_r.
const LocaleSet & getAvailableLocales() const
All Locales occurring in any repo.
bool isRequestedLocale(const Locale &locale_r) const
const SerialNumber & serialIDs() const
Serial number changing whenever resusePoolIDs==true was used.
bool eraseRequestedLocale(const Locale &locale_r)
User change (tracked).
const LocaleSet & getRequestedLocales() const
Current set of requested Locales.
void setRequestedLocales(const LocaleSet &locales_r)
User change (tracked).
const LocaleSet & getRemovedRequestedLocales() const
Removed since last initRequestedLocales.
void setNeedrebootSpec(sat::SolvableSpec needrebootSpec_r)
Set new Solvable specs.
const MultiversionList & multiversionList() const
bool isAvailableLocale(const Locale &locale_r) const
const LocaleSet & getAddedRequestedLocales() const
Added since last initRequestedLocales.
void setAutoInstalled(const StringQueue &autoInstalled_r)
Set ident list of all autoinstalled solvables.
bool addRequestedLocale(const Locale &locale_r)
User change (tracked).
void prepare() const
Update housekeeping data (e.g.
static const std::string & systemRepoAlias()
Reserved system repository alias @System .
const SerialNumber & serial() const
Serial number changing whenever the content changes.
Iterate over valid Solvables in the pool.
String related utilities and Regular expression matching.
::s_Repo CRepo
Wrapped libsolv C data type exposed as backdoor.
::s_Solvable CSolvable
Wrapped libsolv C data type exposed as backdoor.
::s_Pool CPool
Wrapped libsolv C data type exposed as backdoor.
std::ostream & operator<<(std::ostream &str, const FileConflicts &obj)
void updateSolvFileIndex(const Pathname &solvfile_r)
Create solv file content digest for zypper bash completion.
Easy-to use interface to the ZYPP dependency resolver.
std::unordered_set< Locale > LocaleSet
Functor removing Repository from its Pool.
static PoolImpl & myPool()
#define for_(IT, BEG, END)
Convenient for-loops using iterator.