diff --git a/.classpath b/.classpath index 47e53ff2e..81a5936bb 100644 --- a/.classpath +++ b/.classpath @@ -21,10 +21,10 @@ - - - - + + + + diff --git a/app/.classpath b/app/.classpath index 4c6032c5f..64ac39ae3 100644 --- a/app/.classpath +++ b/app/.classpath @@ -12,10 +12,10 @@ - - - - + + + + diff --git a/app/lib/jackson-annotations-2.2.3.jar b/app/lib/jackson-annotations-2.2.3.jar deleted file mode 100644 index b62c87d7e..000000000 Binary files a/app/lib/jackson-annotations-2.2.3.jar and /dev/null differ diff --git a/app/lib/jackson-annotations-2.6.3.jar b/app/lib/jackson-annotations-2.6.3.jar new file mode 100644 index 000000000..9bb53e875 Binary files /dev/null and b/app/lib/jackson-annotations-2.6.3.jar differ diff --git a/app/lib/jackson-core-2.2.3.jar b/app/lib/jackson-core-2.2.3.jar deleted file mode 100644 index 24318a464..000000000 Binary files a/app/lib/jackson-core-2.2.3.jar and /dev/null differ diff --git a/app/lib/jackson-core-2.6.3.jar b/app/lib/jackson-core-2.6.3.jar new file mode 100644 index 000000000..e1ec916dd Binary files /dev/null and b/app/lib/jackson-core-2.6.3.jar differ diff --git a/app/lib/jackson-databind-2.2.3.jar b/app/lib/jackson-databind-2.2.3.jar deleted file mode 100644 index 854508478..000000000 Binary files a/app/lib/jackson-databind-2.2.3.jar and /dev/null differ diff --git a/app/lib/jackson-databind-2.6.3.jar b/app/lib/jackson-databind-2.6.3.jar new file mode 100644 index 000000000..e60f9fe1a Binary files /dev/null and b/app/lib/jackson-databind-2.6.3.jar differ diff --git a/app/lib/jackson-module-mrbean-2.2.3.jar b/app/lib/jackson-module-mrbean-2.2.3.jar deleted file mode 100644 index a4a3b738e..000000000 Binary files a/app/lib/jackson-module-mrbean-2.2.3.jar and /dev/null differ diff --git a/app/lib/jackson-module-mrbean-2.6.3.jar b/app/lib/jackson-module-mrbean-2.6.3.jar new file mode 100644 index 000000000..69cc60a58 Binary files /dev/null and b/app/lib/jackson-module-mrbean-2.6.3.jar differ diff --git a/arduino-core/.classpath b/arduino-core/.classpath index 755346253..cf3a2da06 100644 --- a/arduino-core/.classpath +++ b/arduino-core/.classpath @@ -13,10 +13,10 @@ - - - - + + + + @@ -24,10 +24,10 @@ - - - - + + + + diff --git a/arduino-core/lib/jackson-annotations-2.2.3.jar b/arduino-core/lib/jackson-annotations-2.2.3.jar deleted file mode 100644 index b62c87d7e..000000000 Binary files a/arduino-core/lib/jackson-annotations-2.2.3.jar and /dev/null differ diff --git a/arduino-core/lib/jackson-annotations-2.6.3.jar b/arduino-core/lib/jackson-annotations-2.6.3.jar new file mode 100644 index 000000000..9bb53e875 Binary files /dev/null and b/arduino-core/lib/jackson-annotations-2.6.3.jar differ diff --git a/arduino-core/lib/jackson-core-2.2.3.jar b/arduino-core/lib/jackson-core-2.2.3.jar deleted file mode 100644 index 24318a464..000000000 Binary files a/arduino-core/lib/jackson-core-2.2.3.jar and /dev/null differ diff --git a/arduino-core/lib/jackson-core-2.6.3.jar b/arduino-core/lib/jackson-core-2.6.3.jar new file mode 100644 index 000000000..e1ec916dd Binary files /dev/null and b/arduino-core/lib/jackson-core-2.6.3.jar differ diff --git a/arduino-core/lib/jackson-databind-2.2.3.jar b/arduino-core/lib/jackson-databind-2.2.3.jar deleted file mode 100644 index 854508478..000000000 Binary files a/arduino-core/lib/jackson-databind-2.2.3.jar and /dev/null differ diff --git a/arduino-core/lib/jackson-databind-2.6.3.jar b/arduino-core/lib/jackson-databind-2.6.3.jar new file mode 100644 index 000000000..e60f9fe1a Binary files /dev/null and b/arduino-core/lib/jackson-databind-2.6.3.jar differ diff --git a/arduino-core/lib/jackson-module-mrbean-2.2.3.jar b/arduino-core/lib/jackson-module-mrbean-2.2.3.jar deleted file mode 100644 index a4a3b738e..000000000 Binary files a/arduino-core/lib/jackson-module-mrbean-2.2.3.jar and /dev/null differ diff --git a/arduino-core/lib/jackson-module-mrbean-2.6.3.jar b/arduino-core/lib/jackson-module-mrbean-2.6.3.jar new file mode 100644 index 000000000..69cc60a58 Binary files /dev/null and b/arduino-core/lib/jackson-module-mrbean-2.6.3.jar differ diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java index 464650bba..5e5e321b2 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java @@ -30,11 +30,9 @@ package cc.arduino.contributions.packages; import cc.arduino.contributions.DownloadableContribution; +import com.fasterxml.jackson.annotation.JsonIgnore; -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; +import java.util.*; public abstract class ContributedPlatform extends DownloadableContribution { @@ -54,18 +52,21 @@ public abstract class ContributedPlatform extends DownloadableContribution { public abstract ContributedHelp getHelp(); - private List resolvedTools; + private Map resolvedToolReferences; + private ContributedPackage parentPackage; public List getResolvedTools() { - if (resolvedTools == null) { - return null; - } - return new LinkedList<>(resolvedTools); + return new LinkedList<>(resolvedToolReferences.values()); + } + + @JsonIgnore + public Map getResolvedToolReferences() { + return resolvedToolReferences; } public void resolveToolsDependencies(Collection packages) { - resolvedTools = new ArrayList<>(); + resolvedToolReferences = new HashMap<>(); // If there are no dependencies return empty list if (getToolsDependencies() == null) { @@ -79,7 +80,7 @@ public abstract class ContributedPlatform extends DownloadableContribution { if (tool == null) { System.err.println("Index error: could not find referenced tool " + dep); } else { - resolvedTools.add(tool); + resolvedToolReferences.put(dep, tool); } } } diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java b/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java index 194029f49..8d7e8c1f0 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java @@ -52,6 +52,8 @@ import java.io.File; import java.io.IOException; import java.net.URL; import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.*; import java.util.stream.Collectors; @@ -122,26 +124,31 @@ public class ContributionInstaller { // once everything is successfully unpacked. If the operation fails remove // all the temporary folders and abort installation. - // Unzip tools on the correct location - File toolsFolder = new File(packageFolder, "tools"); + List> resolvedToolReferences = contributedPlatform.getResolvedToolReferences().entrySet() + .stream() + .filter((entry) -> !entry.getValue().getDownloadableContribution(platform).isInstalled()) + .collect(Collectors.toList()); + + int i = 1; - for (ContributedTool tool : tools) { - progress.setStatus(format(tr("Installing tools ({0}/{1})..."), i, tools.size())); + for (Map.Entry entry : resolvedToolReferences) { + progress.setStatus(format(tr("Installing tools ({0}/{1})..."), i, resolvedToolReferences.size())); progressListener.onProgress(progress); i++; + ContributedTool tool = entry.getValue(); DownloadableContribution toolContrib = tool.getDownloadableContribution(platform); - File destFolder = new File(toolsFolder, tool.getName() + File.separator + tool.getVersion()); + Path destFolder = Paths.get(indexer.getPackagesFolder().getAbsolutePath(), entry.getKey().getPackager(), "tools", tool.getName(), tool.getVersion()); - Files.createDirectories(destFolder.toPath()); + Files.createDirectories(destFolder); assert toolContrib.getDownloadedFile() != null; - new ArchiveExtractor(platform).extract(toolContrib.getDownloadedFile(), destFolder, 1); + new ArchiveExtractor(platform).extract(toolContrib.getDownloadedFile(), destFolder.toFile(), 1); try { - findAndExecutePostInstallScriptIfAny(destFolder, contributedPlatform.getParentPackage().isTrusted(), PreferencesData.getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL)); + findAndExecutePostInstallScriptIfAny(destFolder.toFile(), contributedPlatform.getParentPackage().isTrusted(), PreferencesData.getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL)); } catch (IOException e) { errors.add(tr("Error running post install script")); } toolContrib.setInstalled(true); - toolContrib.setInstalledFolder(destFolder); + toolContrib.setInstalledFolder(destFolder.toFile()); progress.stepDone(); } diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java index c449e6631..d52ef0ecb 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java @@ -92,7 +92,9 @@ public class ContributionsIndexer { } List packages = index.getPackages(); - Collection packagesWithTools = packages.stream().filter(input -> input.getTools() != null).collect(Collectors.toList()); + Collection packagesWithTools = packages.stream() + .filter(input -> input.getTools() != null && !input.getTools().isEmpty()) + .collect(Collectors.toList()); for (ContributedPackage pack : packages) { for (ContributedPlatform platform : pack.getPlatforms()) { diff --git a/build/windows/launcher/config.xml b/build/windows/launcher/config.xml index 6c0c20865..7217c383e 100644 --- a/build/windows/launcher/config.xml +++ b/build/windows/launcher/config.xml @@ -19,10 +19,10 @@ %EXEDIR%/lib/commons-logging-1.0.4.jar %EXEDIR%/lib/commons-net-3.3.jar %EXEDIR%/lib/ecj.jar - %EXEDIR%/lib/jackson-annotations-2.2.3.jar - %EXEDIR%/lib/jackson-core-2.2.3.jar - %EXEDIR%/lib/jackson-databind-2.2.3.jar - %EXEDIR%/lib/jackson-module-mrbean-2.2.3.jar + %EXEDIR%/lib/jackson-annotations-2.6.3.jar + %EXEDIR%/lib/jackson-core-2.6.3.jar + %EXEDIR%/lib/jackson-databind-2.6.3.jar + %EXEDIR%/lib/jackson-module-mrbean-2.6.3.jar %EXEDIR%/lib/java-semver-0.8.0.jar %EXEDIR%/lib/jmdns-3.4.1.jar %EXEDIR%/lib/jna-4.1.0.jar diff --git a/build/windows/launcher/config_debug.xml b/build/windows/launcher/config_debug.xml index dc4caac47..48a1ec73f 100644 --- a/build/windows/launcher/config_debug.xml +++ b/build/windows/launcher/config_debug.xml @@ -19,10 +19,10 @@ %EXEDIR%/lib/commons-logging-1.0.4.jar %EXEDIR%/lib/commons-net-3.3.jar %EXEDIR%/lib/ecj.jar - %EXEDIR%/lib/jackson-annotations-2.2.3.jar - %EXEDIR%/lib/jackson-core-2.2.3.jar - %EXEDIR%/lib/jackson-databind-2.2.3.jar - %EXEDIR%/lib/jackson-module-mrbean-2.2.3.jar + %EXEDIR%/lib/jackson-annotations-2.6.3.jar + %EXEDIR%/lib/jackson-core-2.6.3.jar + %EXEDIR%/lib/jackson-databind-2.6.3.jar + %EXEDIR%/lib/jackson-module-mrbean-2.6.3.jar %EXEDIR%/lib/java-semver-0.8.0.jar %EXEDIR%/lib/jmdns-3.4.1.jar %EXEDIR%/lib/jna-4.1.0.jar