Skip to content

Commit b695e7f

Browse files
committed
Do not fail if a package_index.json is not present
Since we are not bundling a package_index.json anymore, there is no need for the timestamp check with the existing package_index.json.
1 parent e731fe0 commit b695e7f

File tree

2 files changed

+13
-28
lines changed

2 files changed

+13
-28
lines changed

arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,20 @@ public ContributionsIndexer(File preferencesFolder, File builtInHardwareFolder,
8181
}
8282

8383
public void parseIndex() throws Exception {
84-
File defaultIndexFile = getIndexFile(Constants.DEFAULT_INDEX_FILE_NAME);
84+
// Read bundled index...
8585
File bundledIndexFile = new File(builtInHardwareFolder, Constants.BUNDLED_INDEX_FILE_NAME);
86+
index = parseIndex(bundledIndexFile);
8687

87-
// Check main index signature
88-
if (!PreferencesData.getBoolean("allow_insecure_packages") && !signatureVerifier.isSigned(defaultIndexFile)) {
89-
throw new SignatureVerificationFailedException(Constants.DEFAULT_INDEX_FILE_NAME);
90-
}
88+
// ...and overlay the default index if present
89+
File defaultIndexFile = getIndexFile(Constants.DEFAULT_INDEX_FILE_NAME);
90+
if (defaultIndexFile.exists()) {
91+
// Check main index signature
92+
if (!PreferencesData.getBoolean("allow_insecure_packages") && !signatureVerifier.isSigned(defaultIndexFile)) {
93+
throw new SignatureVerificationFailedException(Constants.DEFAULT_INDEX_FILE_NAME);
94+
}
9195

92-
// Read bundled index and overlay the default index
93-
index = parseIndex(bundledIndexFile);
94-
mergeContributions(parseIndex(defaultIndexFile), defaultIndexFile);
96+
mergeContributions(parseIndex(defaultIndexFile), defaultIndexFile);
97+
}
9598

9699
// Set main and bundled indexes as trusted
97100
index.getPackages().forEach(pack -> pack.setTrusted(true));

arduino-core/src/processing/app/BaseNoGui.java

+2-20
Original file line numberDiff line numberDiff line change
@@ -610,30 +610,12 @@ static public void initLogger() {
610610
static public void initPackages() throws Exception {
611611
indexer = new ContributionsIndexer(getSettingsFolder(), getHardwareFolder(), getPlatform(),
612612
new GPGDetachedSignatureVerifier());
613-
File indexFile = indexer.getIndexFile("package_index.json");
614-
File defaultPackageJsonFile = new File(getContentFile("dist"), "package_index.json");
615-
if (!indexFile.isFile() || (defaultPackageJsonFile.isFile() && defaultPackageJsonFile.lastModified() > indexFile.lastModified())) {
616-
FileUtils.copyFile(defaultPackageJsonFile, indexFile);
617-
} else if (!indexFile.isFile()) {
618-
// Otherwise create an empty packages index
619-
FileOutputStream out = null;
620-
try {
621-
out = new FileOutputStream(indexFile);
622-
out.write("{ \"packages\" : [ ] }".getBytes());
623-
} finally {
624-
IOUtils.closeQuietly(out);
625-
}
626-
}
627-
628-
File indexSignatureFile = indexer.getIndexFile("package_index.json.sig");
629-
File defaultPackageJsonSignatureFile = new File(getContentFile("dist"), "package_index.json.sig");
630-
if (!indexSignatureFile.isFile() || (defaultPackageJsonSignatureFile.isFile() && defaultPackageJsonSignatureFile.lastModified() > indexSignatureFile.lastModified())) {
631-
FileUtils.copyFile(defaultPackageJsonSignatureFile, indexSignatureFile);
632-
}
633613

634614
try {
635615
indexer.parseIndex();
636616
} catch (JsonProcessingException | SignatureVerificationFailedException e) {
617+
File indexFile = indexer.getIndexFile(Constants.DEFAULT_INDEX_FILE_NAME);
618+
File indexSignatureFile = indexer.getIndexFile(Constants.DEFAULT_INDEX_FILE_NAME + ".sig");
637619
FileUtils.deleteIfExists(indexFile);
638620
FileUtils.deleteIfExists(indexSignatureFile);
639621
throw e;

0 commit comments

Comments
 (0)