12 #include <sys/types.h> 18 #include <solv/pool.h> 19 #include <solv/repo.h> 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 );
Repository reposInsert(const std::string &alias_r)
Return a Repository named alias_r.
const SerialNumber & serial() const
Serial number changing whenever the content changes.
A Solvable object within the sat Pool.
StringQueue autoInstalled() const
Get ident list of all autoinstalled solvables.
IdType id() const
Expert backdoor.
const LocaleSet & getAddedRequestedLocales() const
Added since last initRequestedLocales.
bool eraseRequestedLocale(const Locale &locale_r)
User change (tracked).
void setRequestedLocales(const LocaleSet &locales_r)
Set the requested locales.
bool isRequestedLocale(const Locale &locale_r) const
bool reposEmpty() const
Whether Pool contains repos.
void setAutorefresh(bool autorefresh)
enable or disable autorefresh
bool isSystemRepo() const
Return whether this is the system repository.
Convenience errno wrapper.
void setTextLocale(const Locale &locale_r)
Set the default language for retrieving translated texts.
bool addRequestedLocale(const Locale &locale_r)
User change (tracked).
SolvableIterator solvablesBegin() const
Iterator to the first Solvable.
bool isAvailableLocale(const Locale &locale_r) const
Whether this Locale is in the set of available locales.
const MultiversionList & multiversionList() const
const LocaleSet & getAddedRequestedLocales() const
Added since last initRequestedLocales.
Pathname extend(const std::string &r) const
Append string r to the last component of the path.
std::ostream & operator<<(std::ostream &str, const FileConflicts &obj)
void setEnabled(bool enabled)
enable or disable the repository
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
const char * c_str() const
String representation.
RepositoryIterator reposEnd() const
Iterator behind the last Repository.
void setAlias(const std::string &alias)
set the repository alias
String related utilities and Regular expression matching.
void setAutoInstalled(const Queue &autoInstalled_r)
Set ident list of all autoinstalled solvables.
What is known about a repository.
Repository addRepoHelix(const Pathname &file_r, const std::string &name_r)
Load Solvables from a helix-file into a Repository named name_r.
std::string basename() const
Return the last component of this path.
size_type capacity() const
Internal array size for stats only.
size_type reposSize() const
Number of repos in Pool.
Define a set of Solvables by ident and provides.
const LocaleSet & getAvailableLocales() const
Get the set of available locales.
sat::detail::IdType id() const
Expert backdoor.
Repository systemRepo()
Return the system repository, create it if missing.
void prepare() const
Update housekeeping data if necessary (e.g.
void initRequestedLocales(const LocaleSet &locales_r)
Start tracking changes based on this locales_r.
Functor removing Repository from it's Pool.
const SerialNumber & serialIDs() const
Serial number changing whenever resusePoolIDs==true was used.
const LocaleSet & getRequestedLocales() const
Current set of requested Locales.
Queue whatMatchesDep(const SolvAttr &attr, const Capability &cap) const
::s_Repo CRepo
Wrapped libsolv C data type exposed as backdoor.
int unlink(const Pathname &path)
Like 'unlink'.
static const std::string & systemRepoAlias()
Reserved system repository alias .
const std::string & asString() const
String representation.
std::string alias() const
unique identifier for this source.
void setInfo(const RepoInfo &info_r)
Set RepoInfo for this repository.
zypp::detail::RepositoryIterator RepositoryIterator
Pathname rootDir() const
Get rootdir (for file conflicts check)
void setRequestedLocales(const LocaleSet &locales_r)
User change (tracked).
void setNeedrebootSpec(sat::SolvableSpec needrebootSpec_r)
Set new Solvable specs.
detail::CPool * get() const
Expert backdoor.
const LocaleSet & getRemovedRequestedLocales() const
Removed since last initRequestedLocales.
void updateSolvFileIndex(const Pathname &solvfile_r)
Create solv file content digest for zypper bash completion.
const SerialNumber & serial() const
Housekeeping data serial number.
size_type solvablesSize() const
Number of solvables in Pool.
static PoolImpl & myPool()
detail::SolvableIterator SolvableIterator
const LocaleSet & getRequestedLocales() const
Return the requested locales.
::s_Pool CPool
Wrapped libsolv C data type exposed as backdoor.
::s_Solvable CSolvable
Wrapped libsolv C data type exposed as backdoor.
bool addRequestedLocale(const Locale &locale_r)
Add one Locale to the set of requested locales.
RepositoryIterator reposBegin() const
Iterator to the first Repository.
bool solvablesEmpty() const
Whether Pool contains solvables.
void prepare() const
Update housekeeping data (e.g.
void resetDispose()
Set no dispose function.
Simple serial number provider.
const MultiversionList & multiversion() const
'Language[_Country]' codes.
Pathname rootDir() const
Get rootdir (for file conflicts check)
Libsolv Id queue wrapper.
Queue whatContainsDep(const SolvAttr &attr, const Capability &cap) const
Queue autoInstalled() const
Get ident list of all autoinstalled solvables.
Repository reposFind(const std::string &alias_r) const
Find a Repository named alias_r.
const LocaleSet & getRemovedRequestedLocales() const
Removed since last initRequestedLocales.
Queue whatMatchesSolvable(const SolvAttr &attr, const Solvable &solv) const
SolvableIterator solvablesEnd() const
Iterator behind the last Solvable.
detail::size_type size_type
void setTextLocale(const Locale &locale_r)
Repository findSystemRepo() const
Return the system repository if it is on the pool.
void initRequestedLocales(const LocaleSet &locales_r)
Start tracking changes based on this locales_r.
static const std::string & systemRepoAlias()
Reserved system repository alias .
void setNeedrebootSpec(sat::SolvableSpec needrebootSpec_r)
Solvables which should trigger the reboot-needed hint if installed/updated.
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
const LocaleSet & getAvailableLocales() const
All Locales occurring in any repo.
const SerialNumber & serialIDs() const
Serial number changing whenever resusePoolIDs==true was used.
void setName(const std::string &name)
set the repository name
Repository addRepoSolv(const Pathname &file_r, const std::string &name_r)
Load Solvables from a solv-file into a Repository named name_r.
Easy-to use interface to the ZYPP dependency resolver.
Iterable< RepositoryIterator > repos() const
Iterate the repositories.
bool isAvailableLocale(const Locale &locale_r) const
bool isRequestedLocale(const Locale &locale_r) const
Whether this Locale is in the set of requested locales.
bool eraseRequestedLocale(const Locale &locale_r)
Erase one Locale from the set of requested locales.
std::unordered_set< Locale > LocaleSet
void setAutoInstalled(const StringQueue &autoInstalled_r)
Set ident list of all autoinstalled solvables.
Solvable set wrapper to allow adding additional convenience iterators.