*/
sat::Solvable referencePackage() const;
+ /** For installed products the name of the coddesponding
+ * \c /etc/products.d entry.
+ .*/
+ std::string referenceFilename() const;
+
+ /** List of packages included in older versions of this product and now dropped.
+ *
+ * This evaluates the \ref referencePackage \c weakremover namespace. It actually
+ * returns a \ref CapabilitySet, because we support to drop specific versions or
+ * version ranges of a package. Use \ref sat::WhatProvides to get the actually
+ * installed and available packages matching this list.
+ * \code
+ * const Product & openSUSE;
+ * sat::WhatProvides dropped( openSUSE.droplist() );
+ * for_( it, dropped.poolItemBegin(), dropped.poolItemEnd() )
+ * {
+ * if ( it->status().isInstalled() )
+ * {
+ * MIL << "Installed but no longer supported package: " << *it << endl;
+ * }
+ * }
+ * \endcode
+ */
+ CapabilitySet droplist() const;
+
public:
/***/
typedef std::vector<constPtr> ReplacedProducts;
*/
ReplacedProducts replacedProducts() const;
+ /** Vendor specific string denoting the product line. */
+ std::string productLine() const;
+
public:
- /** Untranslated short name like <tt>SLES 10</tt>*/
+ /** Untranslated short name like <tt>SLES 10</tt> (fallback: name) */
std::string shortName() const;
/** The product flavor (LiveCD Demo, FTP edition,...). */
std::string flavor() const;
- /** Get the product type (base, add-on)
+ /** Get the product type
* Well, in an ideal world there is only one base product.
* It's the installed product denoted by a symlink in
* \c /etc/products.d.
- */
- std::string type() const;
-
- /** Update repository indicator string.
- * Repositories providing updates/patches for this product
- * should (somehow) provide this string. So we are able to
- * detect them.
*/
- std::string updaterepoKey() const;
+ std::string type() const;
/** The product flags */
std::list<std::string> flags() const;
+ /** The date when this Product goes out of support as indicated by it's medadata. */
+ Date endOfLife() const;
+
+ /** ContentIdentifier of required update repositories. */
+ std::vector<Repository::ContentIdentifier> updateContentIdentifier() const;
+
+ /** Whether \a cident_r is listed as required update repository. */
+ bool hasUpdateContentIdentifier( const Repository::ContentIdentifier & cident_r ) const;
+
+ /** Whether one of the ContentIdentifier is listed as required update repository. */
+ template <class _Iterator>
+ bool hasUpdateContentIdentifier( _Iterator begin, _Iterator end ) const
+ {
+ for_( it, begin, end )
+ if ( hasUpdateContentIdentifier( *it ) )
+ return true;
+ return false;
+ }
+
+ public:
+ /** This is the \b installed product that is also targeted by the
+ * \c /etc/products.d/baseproduct symlink.
+ */
+ bool isTargetDistribution() const;
+
+ /** This is \c register.target attribute of a product.
+ * Used for registration and filtering service repos.
+ */
+ std::string registerTarget() const;
+
+ /** This is \c register.release attribute of an \b installed product.
+ * Used for registration.
+ */
+ std::string registerRelease() const;
+
+ /** This is \c register.flavor attribute of a product.
+ * Used for registration.
+ */
+ std::string registerFlavor() const;
+
public:
/***/
class UrlList;