mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-20 14:54:31 +01:00
Installing tools from packager (eg: arduino) in packager folder, thus avoiding
tools duplication and disk space wasting. Fixes #4193
This commit is contained in:
parent
a1e223ad62
commit
d5a0476948
@ -21,10 +21,10 @@
|
||||
<classpathentry kind="lib" path="app/lib/jssc-2.8.0.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/bcpg-jdk15on-152.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/bcprov-jdk15on-152.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/jackson-core-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/jackson-databind-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/jackson-module-mrbean-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/jackson-annotations-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/jackson-core-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/jackson-databind-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/jackson-module-mrbean-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/jackson-annotations-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="app/lib/commons-compress-1.8.jar"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/arduino-core"/>
|
||||
<classpathentry kind="output" path="app/bin"/>
|
||||
|
@ -12,10 +12,10 @@
|
||||
<classpathentry kind="lib" path="lib/commons-httpclient-3.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-logging-1.0.4.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-net-3.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-annotations-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-core-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-databind-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-module-mrbean-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-annotations-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-core-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-databind-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-module-mrbean-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jmdns-3.4.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jsch-0.1.50.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jssc-2.8.0.jar"/>
|
||||
|
Binary file not shown.
BIN
app/lib/jackson-annotations-2.6.3.jar
Normal file
BIN
app/lib/jackson-annotations-2.6.3.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
app/lib/jackson-core-2.6.3.jar
Normal file
BIN
app/lib/jackson-core-2.6.3.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
app/lib/jackson-databind-2.6.3.jar
Normal file
BIN
app/lib/jackson-databind-2.6.3.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
app/lib/jackson-module-mrbean-2.6.3.jar
Normal file
BIN
app/lib/jackson-module-mrbean-2.6.3.jar
Normal file
Binary file not shown.
@ -13,10 +13,10 @@
|
||||
<classpathentry kind="lib" path="../app/lib/commons-compress-1.8.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/commons-exec-1.1.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/commons-httpclient-3.1.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/jackson-annotations-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/jackson-core-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/jackson-databind-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/jackson-module-mrbean-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/jackson-annotations-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/jackson-core-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/jackson-databind-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/jackson-module-mrbean-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/bcpg-jdk15on-152.jar"/>
|
||||
<classpathentry kind="lib" path="../app/lib/bcprov-jdk15on-152.jar"/>
|
||||
<classpathentry kind="lib" path="lib/bcpg-jdk15on-152.jar"/>
|
||||
@ -24,10 +24,10 @@
|
||||
<classpathentry kind="lib" path="lib/commons-codec-1.7.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-compress-1.8.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-lang3-3.3.2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-annotations-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-core-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-databind-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-module-mrbean-2.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-annotations-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-core-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-databind-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jackson-module-mrbean-2.6.3.jar"/>
|
||||
<classpathentry kind="lib" path="lib/java-semver-0.8.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jna-4.1.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jna-platform-4.1.0.jar"/>
|
||||
|
Binary file not shown.
BIN
arduino-core/lib/jackson-annotations-2.6.3.jar
Normal file
BIN
arduino-core/lib/jackson-annotations-2.6.3.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
arduino-core/lib/jackson-core-2.6.3.jar
Normal file
BIN
arduino-core/lib/jackson-core-2.6.3.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
arduino-core/lib/jackson-databind-2.6.3.jar
Normal file
BIN
arduino-core/lib/jackson-databind-2.6.3.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
arduino-core/lib/jackson-module-mrbean-2.6.3.jar
Normal file
BIN
arduino-core/lib/jackson-module-mrbean-2.6.3.jar
Normal file
Binary file not shown.
@ -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<ContributedTool> resolvedTools;
|
||||
private Map<ContributedToolReference, ContributedTool> resolvedToolReferences;
|
||||
|
||||
private ContributedPackage parentPackage;
|
||||
|
||||
public List<ContributedTool> getResolvedTools() {
|
||||
if (resolvedTools == null) {
|
||||
return null;
|
||||
}
|
||||
return new LinkedList<>(resolvedTools);
|
||||
return new LinkedList<>(resolvedToolReferences.values());
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public Map<ContributedToolReference, ContributedTool> getResolvedToolReferences() {
|
||||
return resolvedToolReferences;
|
||||
}
|
||||
|
||||
public void resolveToolsDependencies(Collection<ContributedPackage> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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<Map.Entry<ContributedToolReference, ContributedTool>> 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<ContributedToolReference, ContributedTool> 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();
|
||||
}
|
||||
|
||||
|
@ -92,7 +92,9 @@ public class ContributionsIndexer {
|
||||
}
|
||||
|
||||
List<ContributedPackage> packages = index.getPackages();
|
||||
Collection<ContributedPackage> packagesWithTools = packages.stream().filter(input -> input.getTools() != null).collect(Collectors.toList());
|
||||
Collection<ContributedPackage> packagesWithTools = packages.stream()
|
||||
.filter(input -> input.getTools() != null && !input.getTools().isEmpty())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (ContributedPackage pack : packages) {
|
||||
for (ContributedPlatform platform : pack.getPlatforms()) {
|
||||
|
@ -19,10 +19,10 @@
|
||||
<cp>%EXEDIR%/lib/commons-logging-1.0.4.jar</cp>
|
||||
<cp>%EXEDIR%/lib/commons-net-3.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/ecj.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-annotations-2.2.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-core-2.2.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-databind-2.2.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-module-mrbean-2.2.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-annotations-2.6.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-core-2.6.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-databind-2.6.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-module-mrbean-2.6.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/java-semver-0.8.0.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jmdns-3.4.1.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jna-4.1.0.jar</cp>
|
||||
|
@ -19,10 +19,10 @@
|
||||
<cp>%EXEDIR%/lib/commons-logging-1.0.4.jar</cp>
|
||||
<cp>%EXEDIR%/lib/commons-net-3.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/ecj.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-annotations-2.2.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-core-2.2.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-databind-2.2.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-module-mrbean-2.2.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-annotations-2.6.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-core-2.6.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-databind-2.6.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jackson-module-mrbean-2.6.3.jar</cp>
|
||||
<cp>%EXEDIR%/lib/java-semver-0.8.0.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jmdns-3.4.1.jar</cp>
|
||||
<cp>%EXEDIR%/lib/jna-4.1.0.jar</cp>
|
||||
|
Loading…
x
Reference in New Issue
Block a user