aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager/libs
diff options
context:
space:
mode:
authorRaphael <raphael@google.com>2010-01-22 16:28:23 -0800
committerRaphael <raphael@google.com>2010-01-22 17:20:50 -0800
commita713fb965670b8bdb2f05914af89f1ad41fae7b5 (patch)
tree97125ae9a74c0b2cb19cbec8b5740cb3c3ddf9e3 /sdkmanager/libs
parent14bf157d4c45ed254730ad8e26a0b1bad5604c34 (diff)
downloadsdk-a713fb965670b8bdb2f05914af89f1ad41fae7b5.zip
sdk-a713fb965670b8bdb2f05914af89f1ad41fae7b5.tar.gz
sdk-a713fb965670b8bdb2f05914af89f1ad41fae7b5.tar.bz2
SDK Updater: support <obsolete> packages.
Bug: 2390937 Change-Id: Ie571d308475a32bc81510785152b230031037094
Diffstat (limited to 'sdkmanager/libs')
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java9
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java14
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java9
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java20
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java14
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SamplePackage.java9
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java8
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/XmlParserUtils.java30
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java15
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-2.xsd25
-rwxr-xr-xsdkmanager/libs/sdklib/tests/com/android/sdklib/testdata/repository_sample_2.xml3
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RepoSourcesAdapter.java10
12 files changed, 134 insertions, 32 deletions
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
index af83e9c..de51015 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
@@ -195,11 +195,12 @@ public class AddonPackage extends Package
/** Returns a short description for an {@link IDescription}. */
@Override
public String getShortDescription() {
- return String.format("%1$s by %2$s, Android API %3$s, revision %4$s",
+ return String.format("%1$s by %2$s, Android API %3$s, revision %4$s%5$s",
getName(),
getVendor(),
mVersion.getApiString(),
- getRevision());
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
/**
@@ -216,7 +217,9 @@ public class AddonPackage extends Package
}
if (s.indexOf("revision") == -1) {
- s += String.format("\nRevision %1$d", getRevision());
+ s += String.format("\nRevision %1$d%2$s",
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
s += String.format("\nRequires SDK Platform Android API %1$s",
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java
index b91d7bd..6980bac 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java
@@ -107,13 +107,15 @@ public class DocPackage extends Package implements IPackageVersion {
@Override
public String getShortDescription() {
if (mVersion.isPreview()) {
- return String.format("Documentation for Android '%1$s' Preview SDK, revision %2$s",
+ return String.format("Documentation for Android '%1$s' Preview SDK, revision %2$s%3$s",
mVersion.getCodename(),
- getRevision());
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
} else {
- return String.format("Documentation for Android SDK, API %1$d, revision %2$s",
+ return String.format("Documentation for Android SDK, API %1$d, revision %2$s%3$s",
mVersion.getApiLevel(),
- getRevision());
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
}
@@ -131,7 +133,9 @@ public class DocPackage extends Package implements IPackageVersion {
}
if (s.indexOf("revision") == -1) {
- s += String.format("\nRevision %1$d", getRevision());
+ s += String.format("\nRevision %1$d%2$s",
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
return s;
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java
index e62586a..4b79508 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java
@@ -170,9 +170,10 @@ public class ExtraPackage extends MinToolsPackage
}
}
- String s = String.format("%1$s package, revision %2$d",
+ String s = String.format("%1$s package, revision %2$d%3$s",
name,
- getRevision());
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
return s;
}
@@ -191,7 +192,9 @@ public class ExtraPackage extends MinToolsPackage
}
if (s.indexOf("revision") == -1) {
- s += String.format("\nRevision %1$d", getRevision());
+ s += String.format("\nRevision %1$d%2$s",
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
if (getMinToolsRevision() != MIN_TOOLS_REV_NOT_SPECIFIED) {
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
index e30e8a2..bbc59ff 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
@@ -50,8 +50,10 @@ public abstract class Package implements IDescription, Comparable<Package> {
public static final String PROP_RELEASE_URL = "Pkg.RelNoteUrl"; //$NON-NLS-1$
public static final String PROP_SOURCE_URL = "Pkg.SourceUrl"; //$NON-NLS-1$
public static final String PROP_USER_SOURCE = "Pkg.UserSrc"; //$NON-NLS-1$
+ public static final String PROP_OBSOLETE = "Pkg.Obsolete"; //$NON-NLS-1$
private final int mRevision;
+ private final String mObsolete;
private final String mLicense;
private final String mDescription;
private final String mDescUrl;
@@ -87,6 +89,8 @@ public abstract class Package implements IDescription, Comparable<Package> {
mDescUrl = XmlParserUtils.getXmlString(packageNode, SdkRepository.NODE_DESC_URL);
mReleaseNote = XmlParserUtils.getXmlString(packageNode, SdkRepository.NODE_RELEASE_NOTE);
mReleaseUrl = XmlParserUtils.getXmlString(packageNode, SdkRepository.NODE_RELEASE_URL);
+ mObsolete = XmlParserUtils.getOptionalXmlString(
+ packageNode, SdkRepository.NODE_OBSOLETE);
mLicense = parseLicense(packageNode, licenses);
mArchives = parseArchives(XmlParserUtils.getFirstChild(
@@ -126,6 +130,7 @@ public abstract class Package implements IDescription, Comparable<Package> {
mDescUrl = getProperty(props, PROP_DESC_URL, descUrl);
mReleaseNote = getProperty(props, PROP_RELEASE_NOTE, "");
mReleaseUrl = getProperty(props, PROP_RELEASE_URL, "");
+ mObsolete = getProperty(props, PROP_OBSOLETE, null);
// If source is null and we can find a source URL in the properties, generate
// a dummy source just to store the URL. This allows us to easily remember where
@@ -180,6 +185,9 @@ public abstract class Package implements IDescription, Comparable<Package> {
if (mReleaseUrl != null && mReleaseUrl.length() > 0) {
props.setProperty(PROP_RELEASE_URL, mReleaseUrl);
}
+ if (mObsolete != null) {
+ props.setProperty(PROP_OBSOLETE, mObsolete);
+ }
if (mSource != null) {
props.setProperty(PROP_SOURCE_URL, mSource.getUrl());
@@ -254,6 +262,14 @@ public abstract class Package implements IDescription, Comparable<Package> {
}
/**
+ * Returns true if the package is deemed obsolete, that is it contains an
+ * actual <code>&lt;obsolete&gt;</code> element.
+ */
+ public boolean isObsolete() {
+ return mObsolete != null;
+ }
+
+ /**
* Returns the revision, an int > 0, for all packages (platform, add-on, tool, doc).
* Can be 0 if this is a local package of unknown revision.
*/
@@ -344,7 +360,9 @@ public abstract class Package implements IDescription, Comparable<Package> {
sb.append("\n");
}
- sb.append(String.format("Revision %1$d", getRevision()));
+ sb.append(String.format("Revision %1$d%2$s",
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : ""));
s = getDescUrl();
if (s != null && s.length() > 0) {
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java
index 07218af..311499e 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java
@@ -115,14 +115,16 @@ public class PlatformPackage extends MinToolsPackage implements IPackageVersion
String s;
if (mVersion.isPreview()) {
- s = String.format("SDK Platform Android %1$s Preview, revision %2$s",
+ s = String.format("SDK Platform Android %1$s Preview, revision %2$s%3$s",
getVersionName(),
- getRevision());
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
} else {
- s = String.format("SDK Platform Android %1$s, API %2$d, revision %3$s",
+ s = String.format("SDK Platform Android %1$s, API %2$d, revision %3$s%4$s",
getVersionName(),
mVersion.getApiLevel(),
- getRevision());
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
return s;
@@ -142,7 +144,9 @@ public class PlatformPackage extends MinToolsPackage implements IPackageVersion
}
if (s.indexOf("revision") == -1) {
- s += String.format("\nRevision %1$d", getRevision());
+ s += String.format("\nRevision %1$d%2$s",
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
return s;
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SamplePackage.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SamplePackage.java
index 33ffde1..5a0f8fc 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SamplePackage.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SamplePackage.java
@@ -159,10 +159,11 @@ public class SamplePackage extends MinToolsPackage
/** Returns a short description for an {@link IDescription}. */
@Override
public String getShortDescription() {
- String s = String.format("Samples for SDK API %1$s%2$s, revision %3$d",
+ String s = String.format("Samples for SDK API %1$s%2$s, revision %3$d%4$s",
mVersion.getApiString(),
mVersion.isPreview() ? " Preview" : "",
- getRevision());
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
return s;
}
@@ -180,7 +181,9 @@ public class SamplePackage extends MinToolsPackage
}
if (s.indexOf("revision") == -1) {
- s += String.format("\nRevision %1$d", getRevision());
+ s += String.format("\nRevision %1$d%2$s",
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
return s;
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java
index bf70f91..8b77db8 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java
@@ -72,7 +72,9 @@ public class ToolPackage extends Package {
/** Returns a short description for an {@link IDescription}. */
@Override
public String getShortDescription() {
- return String.format("Android SDK Tools, revision %1$d", getRevision());
+ return String.format("Android SDK Tools, revision %1$d%2$s",
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
/** Returns a long description for an {@link IDescription}. */
@@ -84,7 +86,9 @@ public class ToolPackage extends Package {
}
if (s.indexOf("revision") == -1) {
- s += String.format("\nRevision %1$d", getRevision());
+ s += String.format("\nRevision %1$d%2$s",
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "");
}
return s;
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/XmlParserUtils.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/XmlParserUtils.java
index 7d3cd7e..61b5b24 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/XmlParserUtils.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/XmlParserUtils.java
@@ -44,7 +44,16 @@ class XmlParserUtils {
/**
* Retrieves the value of that XML element as a string.
- * Returns an empty string when the element is missing.
+ * Returns an empty string whether the element is missing or empty,
+ * so you can't tell the difference.
+ * <p/>
+ * Note: use {@link #getOptionalXmlString(Node, String)} if you need to know when the
+ * element is missing versus empty.
+ *
+ * @param node The XML <em>parent</em> node to parse.
+ * @param xmlLocalName The XML local name to find in the parent node.
+ * @return The text content of the element. Returns an empty string whether the element
+ * is missing or empty, so you can't tell the difference.
*/
public static String getXmlString(Node node, String xmlLocalName) {
Node child = getFirstChild(node, xmlLocalName);
@@ -53,6 +62,25 @@ class XmlParserUtils {
}
/**
+ * Retrieves the value of that XML element as a string.
+ * Returns null when the element is missing, so you can tell between a missing element
+ * and an empty one.
+ * <p/>
+ * Note: use {@link #getXmlString(Node, String)} if you don't need to know when the
+ * element is missing versus empty.
+ *
+ * @param node The XML <em>parent</em> node to parse.
+ * @param xmlLocalName The XML local name to find in the parent node.
+ * @return The text content of the element. Returns null when the element is missing.
+ * Returns an empty string whether the element is present but empty.
+ */
+ public static String getOptionalXmlString(Node node, String xmlLocalName) {
+ Node child = getFirstChild(node, xmlLocalName);
+
+ return child == null ? null : child.getTextContent(); //$NON-NLS-1$
+ }
+
+ /**
* Retrieves the value of that XML element as an integer.
* Returns the default value when the element is missing or is not an integer.
*/
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java
index fd5cf9e..d59fc9e 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java
@@ -63,18 +63,21 @@ public class SdkRepository {
/** The license definition. */
public static final String NODE_LICENSE = "license"; //$NON-NLS-1$
- /** The optional uses-license for all packages (platform, add-on, tool, doc) or for a lib. */
+ /** The optional uses-license for all packages or for a lib. */
public static final String NODE_USES_LICENSE = "uses-license"; //$NON-NLS-1$
- /** The revision, an int > 0, for all packages (platform, add-on, tool, doc). */
+ /** The revision, an int > 0, for all packages. */
public static final String NODE_REVISION = "revision"; //$NON-NLS-1$
- /** The optional description for all packages (platform, add-on, tool, doc) or for a lib. */
+ /** The optional description for all packages or for a lib. */
public static final String NODE_DESCRIPTION = "description"; //$NON-NLS-1$
- /** The optional description URL for all packages (platform, add-on, tool, doc). */
+ /** The optional description URL for all packages. */
public static final String NODE_DESC_URL = "desc-url"; //$NON-NLS-1$
- /** The optional release note for all packages (platform, add-on, tool, doc). */
+ /** The optional release note for all packages. */
public static final String NODE_RELEASE_NOTE = "release-note"; //$NON-NLS-1$
- /** The optional release note URL for all packages (platform, add-on, tool, doc). */
+ /** The optional release note URL for all packages. */
public static final String NODE_RELEASE_URL = "release-url"; //$NON-NLS-1$
+ /** The optional obsolete qualifier for all packages. */
+ public static final String NODE_OBSOLETE = "obsolete"; //$NON-NLS-1$
+
/** The optional minimal tools revision required by platform & extra packages. */
public static final String NODE_MIN_TOOLS_REV = "min-tools-rev"; //$NON-NLS-1$
/** The optional minimal API level required by extra packages. */
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-2.xsd b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-2.xsd
index 9bcc1bc..a0ba966 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-2.xsd
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-2.xsd
@@ -86,6 +86,10 @@
<!-- The minimal revision of tools required by this package.
Optional. If present, must be an int > 0. -->
<xsd:element name="min-tools-rev" type="xsd:positiveInteger" minOccurs="0" />
+
+ <!-- An optional element indicating the package is obsolete.
+ The string content is however currently not defined and ignored. -->
+ <xsd:element name="obsolete" type="xsd:string" minOccurs="0" />
</xsd:all>
</xsd:complexType>
@@ -123,6 +127,10 @@
<!-- A list of file archives for this package. -->
<xsd:element name="archives" type="sr2:archivesType" />
+ <!-- An optional element indicating the package is obsolete.
+ The string content is however currently not defined and ignored. -->
+ <xsd:element name="obsolete" type="xsd:string" minOccurs="0" />
+
<!-- An add-on can declare 0 or more libraries. -->
<xsd:element name="libs">
@@ -168,6 +176,10 @@
<xsd:element name="release-url" type="xsd:token" minOccurs="0" />
<!-- A list of file archives for this package. -->
<xsd:element name="archives" type="sr2:archivesType" />
+
+ <!-- An optional element indicating the package is obsolete.
+ The string content is however currently not defined and ignored. -->
+ <xsd:element name="obsolete" type="xsd:string" minOccurs="0" />
</xsd:all>
</xsd:complexType>
@@ -200,6 +212,10 @@
<xsd:element name="release-url" type="xsd:token" minOccurs="0" />
<!-- A list of file archives for this package. -->
<xsd:element name="archives" type="sr2:archivesType" />
+
+ <!-- An optional element indicating the package is obsolete.
+ The string content is however currently not defined and ignored. -->
+ <xsd:element name="obsolete" type="xsd:string" minOccurs="0" />
</xsd:all>
</xsd:complexType>
@@ -235,6 +251,10 @@
<!-- The minimal revision of tools required by this package.
Optional. If present, must be an int > 0. -->
<xsd:element name="min-tools-rev" type="xsd:positiveInteger" minOccurs="0" />
+
+ <!-- An optional element indicating the package is obsolete.
+ The string content is however currently not defined and ignored. -->
+ <xsd:element name="obsolete" type="xsd:string" minOccurs="0" />
</xsd:all>
</xsd:complexType>
@@ -289,6 +309,10 @@
<!-- The minimal API level required by this package.
Optional. If present, must be an int > 0. -->
<xsd:element name="min-api-level" type="xsd:positiveInteger" minOccurs="0" />
+
+ <!-- An optional element indicating the package is obsolete.
+ The string content is however currently not defined and ignored. -->
+ <xsd:element name="obsolete" type="xsd:string" minOccurs="0" />
</xsd:all>
</xsd:complexType>
@@ -410,5 +434,4 @@
</xsd:simpleContent>
</xsd:complexType>
-
</xsd:schema>
diff --git a/sdkmanager/libs/sdklib/tests/com/android/sdklib/testdata/repository_sample_2.xml b/sdkmanager/libs/sdklib/tests/com/android/sdklib/testdata/repository_sample_2.xml
index bf571d2..9ec63c9 100755
--- a/sdkmanager/libs/sdklib/tests/com/android/sdklib/testdata/repository_sample_2.xml
+++ b/sdkmanager/libs/sdklib/tests/com/android/sdklib/testdata/repository_sample_2.xml
@@ -270,6 +270,7 @@
<sdk:description>An Extra package for the USB driver, it will install in $SDK/usb_driver</sdk:description>
<sdk:desc-url>http://www.example.com/extra.html</sdk:desc-url>
<sdk:min-tools-rev>3</sdk:min-tools-rev>
+ <sdk:obsolete/>
</sdk:extra>
<sdk:extra>
@@ -287,6 +288,7 @@
<sdk:desc-url>http://www.example.com/extra.html</sdk:desc-url>
<sdk:min-tools-rev>3</sdk:min-tools-rev>
<sdk:min-api-level>42</sdk:min-api-level>
+ <sdk:obsolete></sdk:obsolete>
</sdk:extra>
<sdk:sample>
@@ -302,6 +304,7 @@
<sdk:description>Some sample package</sdk:description>
<sdk:desc-url>http://www.example.com/sample.html</sdk:desc-url>
<sdk:min-tools-rev>5</sdk:min-tools-rev>
+ <sdk:obsolete>This is obsolete</sdk:obsolete>
</sdk:sample>
</sdk:sdk-repository>
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RepoSourcesAdapter.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RepoSourcesAdapter.java
index 7a2b2cd..199d75d 100755
--- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RepoSourcesAdapter.java
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RepoSourcesAdapter.java
@@ -235,6 +235,7 @@ public class RepoSourcesAdapter {
Archive[] archives = pkg.getArchives();
if (mUpdaterData.getSettingsController().getShowUpdateOnly()) {
for (Archive archive : archives) {
+
// if we only want the compatible archives, then we just take the first
// one. it's unlikely there are 2 compatible archives for the same
// package
@@ -294,8 +295,13 @@ public class RepoSourcesAdapter {
for (Package remotePkg : remotePackages) {
boolean newPkg = true;
- // For all potential packages, we also make sure that there's an archive for the current
- // platform, or we simply skip them.
+ // We're not going to offer obsolete packages as updates.
+ if (remotePkg.isObsolete()) {
+ continue;
+ }
+
+ // For all potential packages, we also make sure that there's an archive for
+ // the current platform, or we simply skip them.
if (remotePkg.hasCompatibleArchive()) {
for (Package installedPkg : installedPackages) {
UpdateInfo info = installedPkg.canBeUpdatedBy(remotePkg);