*/
sat::Solvable referencePackage() const;
+ /** For installed products the name of the corresponding
+ * \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.
- * \deprecated Use isTargetDistribution to test for the installed base product,
- * other wise type is empty for almost all products.
- */
- std::string type() const ZYPP_DEPRECATED;
+ */
+ 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.
+ * Use \ref hasEOfLife if it's important to distinguish whether the value
+ * is not defined in the metadata, or defined but empty/invalid/TBD.
+ */
+ Date endOfLife() const;
+
+ /** Return whether an EndOfLife value is actually defined in the metadata.
+ * A missing value (\c false) usually indicates that there will be no EOL,
+ * while an empty/invalid value indicates that there will be an EOL date,
+ * but it's not yet known (FATE#320699).
+ */
+ bool hasEndOfLife() const;
+ /** \overload additionally returning the date (0 if TBD)
+ * false, ( unchanged ) : no EOL
+ * true, ( 0 ) : EOL is still TBD
+ * true, ( !=0 ) : a valid EOL date
+ */
+ bool hasEndOfLife( Date & value ) 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 TIterator>
+ bool hasUpdateContentIdentifier( TIterator begin, TIterator 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 an \b installed product.
- * Used for registration.
+ /** This is \c register.target attribute of a product.
+ * Used for registration and filtering service repos.
*/
std::string registerTarget() const;
*/
std::string registerRelease() const;
+ /** This is \c register.flavor attribute of a product.
+ * Used for registration.
+ */
+ std::string registerFlavor() const;
+
public:
/***/
class UrlList;
- /** Rerieve urls flagged with \c key_r for this product.
+ /** Retrieve URLs flagged with \c key_r for this product.
*
* This is the most common interface. There are convenience methods for
* wellknown flags like \c "releasenotes", \c "register", \c "updateurls",