libzypp: Todo List

libzypp 17.36.6

Todo List

File Digest.cc

  replace by Blocxx

  replace by Blocxx

File Digest.h
  replace by Blocxx
File Digest.h
  replace by Blocxx
Module ITERATOR
  Separate them into individual zypp header files.
Member makeDeltaCandidates
  templated ctor
Member makeDeltaCandidates
  templated ctor
Module RESFILTERS
  migrate to namespace filter and enhance to support Solvables as well.
Member SET_OPTION (opt, val)
  deprecate SET_OPTION and use the typed versions below.
Member ztui::Out::DEBUG
  drop this level in favor of zypper.log?
Class ztui::out::ListLayout
  fix design made in eile
Class ztui::Out::ProgressBar
  ProgressData provides NumericId which might be used as id for_out.progress*().
Member ztui::Out::searchResult (const Table &table_r)
  Using a more generic format than a Table is desired.
Class ztui::Table
  nice idea but poor interface
Member ztui::Table::dumpTo (std::ostream &stream) const
  allow abbrev of multiple columns?
Member zypp::Arch::CompatEntry::CompatBits
  Migrate to some infinite BitField
Class zypp::base::ReferenceCounted
  Make counter thread safe.
Namespace zypp::bit
  Use boost::mpl library to assert constraints at compiletime! There various like (TInt is an integral type) (begin+size < maxbits) or ( field dependent constants must be within the range defined by size ).
Class zypp::C_Str
  Check whether to replace by boost::string_ref
Class zypp::DefaultIntegral< Tp, TInitial >

  maybe specialize for bool, add logical and bit operators

  let TInitial default to 0 then remove base/Counter.h

Member zypp::Dep::Dep (const std::string &strval_r)
  refine exceptions and check throw.
Class zypp::DtorReset
  Check if using call_traits enables 'DtorReset(std::string,"value")', as this currently would require assignment of 'char[]'.
Class zypp::Exception
  That's a draft to have a common way of throwing exceptions. Most probably, we'll finally use blocxx exceptions here, but not in the remaining code of zypp. If we can, we should try to wrap the blocxx macros and typedef the classes in here.
Member zypp::Fetcher::enqueueDigested (const OnMediaLocation &resource, const FileChecker &checker=FileChecker())
  FIXME implement checker == operator to avoid this.
Namespace zypp::filesystem

  move zypp::filesystem stuff into separate header

  Add tmpfile and tmpdir handling.

  think about using Exceptions in zypp::filesystem

  provide a readdir iterator; at least provide an interface using an insert_iterator to be independent from std::container.

  move zypp::filesystem stuff into separate header

  Add tmpfile and tmpdir handling.

  think about using Exceptions in zypp::filesystem

  provide a readdir iterator; at least provide an interface using an insert_iterator to be independent from std::container.

Member zypp::filesystem::erase (const Pathname &path)
  check cooperation with zypp::TmpFile and zypp::TmpDir
Member zypp::filesystem::FileType
  Think about an g_EnumerationClass
Class zypp::filesystem::Pathname
  Add support for handling extensions incl. stripping extensions from basename (basename("/path/foo.baa", ".baa") ==> "foo")
Member zypp::filesystem::readdir (std::list< std::string > &retlist, const Pathname &path, bool dots=true) ZYPP_API
  provide some readdirIterator.
Member zypp::filesystem::readdir (std::list< Pathname > &retlist, const Pathname &path, bool dots=true) ZYPP_API
  provide some readdirIterator.
Namespace zypp::HACK
  Eliminate this!
Class zypp::HistoryLog
  The implementation as pseudo signleton is questionable. Use shared_ptr instead of handcrafted ref/unref. Manage multiple logs at different locations.
Class zypp::IdStringType< Derived >

  allow redefinition of order vis _doCompare not only for char* but on any level

Member zypp::make (const sat::Solvable &solvable_r)
  make<> was a poor choice (AFAIR because gcc had some trouble with asKind<>(sat::Solvable)). Remove it in favour of asKind<>(sat::Solvable)
Class zypp::media::CredentialManager

  better method names

  delete(AuthData) method

Member zypp::media::CredentialManager::addCred (const AuthData &cred)

  ask user where to store these creds. saving to user creds for now

  Currently no callback is called, credentials are automatically saved to user's credentials.cat if no 'credentials' parameter has been specified

Member zypp::media::CredentialManager::getCred (const Url &url)
  return a copy instead?
Member zypp::media::CredentialManager::saveInFile (const AuthData &, const Pathname &credFile)
  figure out the reason(?), call back to user
Struct zypp::media::CredManagerOptions
  configurable cred file locations
Member zypp::media::MediaCIFS::authenticate (AuthData &authdata, bool firstTry) const

  need a way to pass different CredManagerOptions here

  add comma to the message for the next release

  find a way to save the url with changed username back to repoinfo or dont store urls with username (and either forbid more repos with the same url and different user, or return a set of credentials from CM and try them one by one)

Member zypp::media::MediaCurl2::authenticate (const std::string &availAuthTypes, bool firstTry)
  need a way to pass different CredManagerOptions here
Member zypp::media::MediaCurl2::authenticate (const Url &url, CredentialManager &cm, TransferSettings &settings, const std::string &availAuthTypes, bool firstTry)
  find a way to save the url with changed username back to repoinfo or dont store urls with username (and either forbid more repos with the same url and different user, or return a set of credentials from CM and try them one by one)
Member zypp::media::MediaCurl::authenticate (const std::string &availAuthTypes, bool firstTry) const

  need a way to pass different CredManagerOptions here

  find a way to save the url with changed username back to repoinfo or dont store urls with username (and either forbid more repos with the same url and different user, or return a set of credentials from CM and try them one by one)

Class zypp::media::MediaPriority
  Maybe introduce a static tribool, to allow overwriting zypp.conf(download.media_preference) default.
Member zypp::MediaSetAccess::provideDir (const Pathname &dir, bool recursive, unsigned media_nr=1, ProvideFileOptions options=PROVIDE_DEFAULT)
  throw SkipRequestException if a problem occured and user has chosen to skip the current operation. The calling code should continue with the next one, if possible.
Member zypp::misc::defaultLoadSystem (const Pathname &sysRoot_r="/", LoadSystemFlags flags_r=LoadSystemFlags())
  properly handle service refreshs
Class zypp::packagedelta::DeltaRpm
  cheap copy! (switch to RWCOW)
Member zypp::PoolItem::PoolItemSaver
  get rid of it.
Class zypp::PoolItemBest
  Support arbitrary Predicates.
Member zypp::PoolQuery::addAttribute (const sat::SolvAttr &attr, const std::string &value="")
  check the above
Member zypp::Product::UrlList::ListType
  Change to directly iterate the .solv
Member zypp::Rel::Rel (const std::string &strval_r)
  refine exceptions and check throw.
Member zypp::repo::RepoMediaAccess::Impl::mediaAccessForUrl (const Url &url, RepoInfo repo)
  This mixture of media and repos specific data is fragile.
Member zypp::repo::RepoMediaAccess::provideFile (const RepoInfo &repo_r, const OnMediaLocation &loc_r, const ProvideFilePolicy &policy_r)
  Investigate why this needs a non-const Repository as arg.
Class zypp::ResObject
  Merge with Resolvable
Class zypp::Resolvable

  Merge with ResObject

  Get rid of refcout/smart_prt bloat, as this type is actually IdBased (i.e. sizeof(unsigned))

Class zypp::ResPoolProxy
  integrate it into ResPool
Struct zypp::ResPoolProxy::Impl
  Seedup as it is still using old index
Class zypp::sat::ArrayAttr< TResult, TAttr >
  Maybe add some way to unify the result.
Member zypp::sat::detail::PoolImpl::getRepo (RepoIdType id_r) const
  a quick check whether the repo was meanwhile deleted.
Member zypp::sat::detail::PoolImpl::prepare () const
  actually requires a watcher.
Class zypp::sat::LocaleSupport
  If iterator is too slow install a proxy watching the Pool::serial.
Class zypp::sat::Queue
  template value_type to work with IString and other Id based types
Class zypp::sat::WhatObsoletes
  Publish obsoleteUsesProvides config option.
Member zypp::str::toLower (const std::string &s) ZYPP_API
  improve
Member zypp::str::toUpper (const std::string &s) ZYPP_API
  improve
Struct zypp::target::rpm::SingleTransReport
  maybe include the sub-task reports here as well, so it becomes the only report needed to follow the transaction.
Member zypp::ui::Status
  make it an EnumerationClass
Struct zypp::ui::StatusHelper
  Unify status and pickStatus.
Class zypp::xml::ParseDef::Impl
  Check using share_ptr_from_this for parent in addNode.
Struct zypp::xml::Validate
  Implement RelaxNG and W3C XSD
Class zypp::ZConfig::Impl
  Enrich section and entry definition by some comment (including the default setting and provide some method to write this into a sample zypp.conf.
Class zypp::ZYpp
  define Exceptions ZYpp API main interface
Member zypp::zypp_detail::ZYppImpl::commit (const ZYppCommitPolicy &policy_r)
  Remove workflow from target, lot's of it could be done here, and target used for transact.
Member zypp::zypp_detail::ZYppImpl::target () const
  Signal locale change.
Struct zyppng::detail::is_nested_async< T >
  with newer C++ versions revisit the possibility to use non shared ptr types throughout the pipeline instead of the current smart pointer solution.
Class zyppng::ProcessPrivate
  We will receive a started signal here before exec was called, so sigStarted actually just signals that the fork has worked out but NOT that the app actually started
Member zyppng::ProvideFileSpec::customHeaders ()
  should this actually just be a list of pair(string,string) instead of map? -> easier way to send multiple values to a worker
Struct zyppng::RepoCollector
  do this through a separate filter
Member zyppng::RepoManager< ZyppContextRefType >::modifyService (const std::string &oldAlias, const ServiceInfo &newService)
  refresh the service automatically if url is changed?
Member zyppng::RepoManager< ZyppContextRefType >::refreshMetadata (const RepoInfo &info, RawMetadataRefreshPolicy policy, ProgressObserverRef myProgress=nullptr)
  Currently no progress is generated, especially for the async code We might need to change this
Member zyppng::RepoManager< ZyppContextRefType >::refreshServices (const RefreshServiceOptions &options_r)
  ignore ServicePluginInformalException in calling code