From e46b0ea5e8a8075bfd8caa47cd93a3f5e91e54ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Bl=C3=A4sing?= Date: Thu, 21 Sep 2023 19:34:23 +0200 Subject: [PATCH] Autoupdate system must check org.openide.modules.arch as org.openide.modules.os is already handled With d1300be50b8864eb605cee456c4b123d768e0eca the netbeans module system was enhanced to enable modules to be filtered by architecture. Missing from that commit was adjustment to the autoupdate system, which also needs to consider the architecture when providing packages for selection. Closes: #6460 --- .../autoupdate/services/UpdateUnitFactory.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/platform/autoupdate.services/src/org/netbeans/modules/autoupdate/services/UpdateUnitFactory.java b/platform/autoupdate.services/src/org/netbeans/modules/autoupdate/services/UpdateUnitFactory.java index 0b6a0a77f5a8..361f0cfd2029 100644 --- a/platform/autoupdate.services/src/org/netbeans/modules/autoupdate/services/UpdateUnitFactory.java +++ b/platform/autoupdate.services/src/org/netbeans/modules/autoupdate/services/UpdateUnitFactory.java @@ -217,13 +217,14 @@ private void addElement (Map impls, UpdateElement element, U // XXX: it's should be moved in UI what should filter all elements w/ broken dependencies // #101515: Plugin Manager must filter updates by platform dependency - boolean passed = false; UpdateElementImpl elImpl = Trampoline.API.impl (element); if (elImpl instanceof ModuleUpdateElementImpl && elImpl.getModuleInfos () != null && elImpl.getModuleInfos ().size() == 1) { for (Dependency d : elImpl.getModuleInfos ().get (0).getDependencies ()) { if (Dependency.TYPE_REQUIRES == d.getType ()) { //log.log (Level.FINEST, "Dependency: NAME: " + d.getName () + ", TYPE: " + d.getType () + ": " + d.toString ()); if (d.getName ().startsWith ("org.openide.modules.os")) { // NOI18N + // Filter OS specific dependencies + boolean passed = false; for (ModuleInfo info : InstalledModuleProvider.getInstalledModules ().values ()) { if (Arrays.asList (info.getProvides ()).contains (d.getName ())) { log.log (Level.FINEST, element + " which requires OS " + d + " succeed."); @@ -235,6 +236,20 @@ private void addElement (Map impls, UpdateElement element, U log.log (Level.FINE, element + " which requires OS " + d + " fails."); return ; } + } else if (d.getName ().startsWith ("org.openide.modules.arch")) { // NOI18N + // Filter architecture specific dependencies + boolean passed = false; + for (ModuleInfo info : InstalledModuleProvider.getInstalledModules ().values ()) { + if (Arrays.asList (info.getProvides ()).contains (d.getName ())) { + log.log (Level.FINEST, element + " which requires architecture " + d + " succeed."); + passed = true; + break; + } + } + if (! passed) { + log.log (Level.FINE, element + " which requires architecture " + d + " fails."); + return ; + } } } }